"Чтоб бешеной пляской землю овить,
скучную, как банка консервов,
давайте весенних бабочек ловить
сетью ненужных нервов!"
Под обучением нейросети будем понимать наложение требуемой структуры (обученной) нейросети на заданную графическую структуру.
По логическому описанию СПР мы составляем логическую схему и "объявляем" ее нейросетью,
назвав такой подход "схемотехническим". Однако он касался обучения обобщенным эталонам, т.е.
воспроизведению потенциально однослойных нейросетей. Там требовалось обеспечить лишь прохождение импульса
возбуждения от
Обобщим метод
Начнем с рассмотрения аналогий.
Задачу
Как правило, при таких постановках задачи
Исходя из аналогий, обусловленных общей логической базой, сформулируем и решим две задачи построения
обученной (
Используя предложенную нам для обучения нейросеть, позволим ее модификацию – введение недостающих связей (отвергнуть негодную сеть – значит, рассчитывать на случай), если очевидно, что без таких связей правильного функционирования добиться невозможно.
Под
Пусть задано множество нейронов
Скобочная запись задает последовательность формирования обученной нейросети. Процесс такого формирования (обучения) заключается в рекурсивной коммутации подструктур – термов на основе содержимого скобок в соответствии с их вложенностью.
Продолжим рассмотрение примера на основе логического описания (10.1). Перепишем его, используя символ обобщенной операции, реализуемой передаточной функцией, но сохранив скобки:
$$\begin{array}{l} ((X_{1} \ X_{7})\ (X_{3} \ X_{5} )) \(X_{10} \ X_{13} ) \to R_{1} ,\\ ((X_{1} \ X_{7} )\ (X_{4} \ X_{6} )) \(X_{2} \ X_{12} \ X_{14} ) \to R_{2} ,\\ X_{8} \ (X_{1} \ X_{10} ) \to R_{3} ,\\ (Х_{9} \ (Х_{1} \ Х_{10} ))\ (Х_{2} \ Х_{15} ) \to R_{4} ,\\ Х_{2} \(Х_{11} \ Х_{13} ) \to R_{5} .\end{array}$$Прежде всего из множества Х необходимо выделить нейроны входного – рецепторного – и выходного слоев.
Исходя из этого, а также, задав количество необходимых и предполагаемых нейронов разного функционального
назначения, закрепим и переобозначим нейроны: Х = {X1, ..., X15, 1, ..., 11, R1, ..., R5}. Нейроны 1, ..., 11 в будущих
построениях исполнят роль нейронов скрытых слоев – скрытых нейронов.
Составим S, соответствующая уже полученному решению. Однако
пока не следует учитывать единичные элементы: их необходимо сформировать в процессе решения задачи.
Для удобства пользования и учитывая, что данная матрица при отсутствии обратных связей – треугольная, она выполнена в виде "шахматки", где диагональные элементы отмечены.
Итак, чтобы сигналы возбуждения направленно проходили от М свободных нейронов, первоначально M = {1, ..., 11}.
(рис 11.1) Матрица следования после обучения нейросетиОрганизуем
При просмотре первого выражения, анализируя открывающие и закрывающие скобки, найдем первую скобку
самого высокого уровня вложенности. Она соответствует выражению (Х1 Х7). Закрепим за ним первый свободный
нейрон 1 из М, предположив тем самым, что он выполняет аналог операции, указанной в скобках. Сформируем уточненную
строку S, соответствующую нейрону 1, записав веса связей, равные единице, в столбцы, соответствующие
нейронам Х1 и Х7.
Обозначим исследованную "скобку" именем нейрона 1 и перепишем логическое выражение:
Продолжим поиск "скобок" самого высокого уровня вложенности.
Находим "скобку" (Х3 Х5). В общем случае такая "скобка" могла встретиться ранее,
и за ней мог быть закреплен скрытый нейрон. В целях экономии нейронов сформируем уточненную строку Х3 и Х5. Однако, прежде чем поместить строку
на ее место, проверим, нет ли в S идентичной строки? В данном случае такой строки нет. Тогда соотнесем полученную
строку с очередным свободным нейроном 2 и поместим ее в S.
Перепишем логическое выражение, заменив обработанную "скобку":
(12)(Х10Х13)->R1 .
Продолжая так же, закрепим нейрон 3 за "скобкой" (Х10Х13)
и сформируем соответствующую
этому нейрону строку матрицы S. Запись логического выражения примет вид
(12)3 -> R1 .
Следующий обзор этой записи приводит к замене "скобки" $$(1\wedge 2)$$ именем нейрона 4 и к формированию
строки 1 и 2. Запись логического выражения примет вид
4 3 -> R1.
Отсутствие скобок говорит о необходимости введения связей 4 -> R1
и 3 -> R1. Таким образом, строка,
соответствующая нейрону R1 выходного слоя, содержит единицы в столбцах, соответствующих нейронам 3 и 4.
R1 закончена.
Анализируем логическое выражение
((X1 X7 ) (X4 X6 )) (X2 X12 X14 ) -> R2 .
Строка матрицы S, сформированная по "скобке" (Х1Х7), совпадает со строкой, соответствующей
нейрону 1. Значит, можно "сэкономить", повторно использовав этот нейрон. Преобразуем запись:
(1 (X4 X6 )) (X2 X12 X14 ) -> R2 .
За следующей "скобкой" (Х4 Х6) закрепим нейрон 5, сформировав для него строку матрицы S, и запись примет вид
(1 5) (X2 X12 X14 ) -> R2 .
Продолжив ее обзор, получим новый вид записи (1 5) 6 -> R2 , а затем 7 6 -> R2 . Сформированные
при этом строки матрицы S показаны на рисунке. Аналогично анализируются другие логические выражения (11.1),
что не вносит новых особенностей в неформально изложенный алгоритм.
Нейросеть, представленная S, близка к нейросети, показанной на рис. 10.2.
Если задана структура нейросети (подразумевается ее "овеществленная" проекция на плоскость
или даже реализация на плате, на кристалле, на решетке связанных Х1 и Х7 подается на входы, значительно отстающие друг от друга, то при заданной, например, регулярной
структуре связей могут возникнуть большие трудности в реализации аналога конъюнкции $$Х_{1} \wedge Х_{7}$$, используемой далее в качестве отдельного
терма, который входит в состав других логических конструкций. Необходимое объединение этих событий на входе одного нейрона может быть
достигнуто даже не ранее, чем на выходном слое. Это потребует введения дополнительных связей для построения необходимого терма.
Чтобы минимизировать число вводимых дополнительных связей или исключить их вовсе, необходимо на основе анализа конструкций, входящих в состав описания вида (11.1), построить предпочтительный ряд следования событий, реализующий компромисс в выборе минимальных расстояний между элементами этого ряда.
Пусть на рис. 11.2 представлена структура нейросети, которую следует
обучить в соответствии с
Воспользуемся следующим алгоритмом упорядочения событий.
(рис 11.2) Обученная нейросетьВ рассматриваемом примере последовательность имен событий первоначально имеет вид
$$\begin{array}{l} \:| \overline{\phantom{Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6}}}\downarrow \\ Х_{1} Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6} Х_{2} Х_{12} Х_{14} Х_{8} Х_{1} Х_{10} Х_{9} Х_{1} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$Имя Х1 входит неоднократно. Новая его позиция определяется как ](1 + 7 + 15 + 18) : 4[ = 11. После
переноса Х1 на новое место (показано стрелкой) и исключения его прежних вхождений последовательность имен
принимает вид
Новое место Х7 определяется как ](1 + 6) : 2[ = 4. Последовательность принимает вид
Новое место Х10 определяется как ](3 + 13 + 15) : 3[ = 11. Последовательность принимает вид
Новая позиция Х13 определяется как ](4 + 18) : 2[ =11. Получаем новый вид последовательности:
Отыскивается новое место Х2, как ](7 + 14 + 16) : 3[ = 13, и последовательность имен событий принимает
окончательный вид, отображенный на рисунке:
Заметим, что при реализации на компьютере "кнопки" или окна на панели управления могут
располагаться в удобном для пользователя порядке, соединяясь с закрепленными за ними
Как видно из примера, рассмотренного в лекции 10, если нейросеть не может быть сведена к однослойной
на заданной графической структуре, то при
В рассматриваемой сети (рис. 11.2) максимальная длина статического
Запишем первое логическое выражение из описания (11.1):
((X1 X7) (X3 X5)) (X10 X13) -> R1.
Ему соответствует максимальная длина логических цепочек, равная трем, что следует из порядка вложенности
скобок. Тогда справедливо предположение о том, что "скобки" (X1X7) и (X3X5) могут быть реализованы
не далее чем на первом слое (3 - 2 = 1), чтобы не воспрепятствовать формированию подструктур, в которые они входят.
Охватывающая их "скобка" ((X1X7)(X3X5))
должна быть реализована на втором слое. Не далее чем на
этом же, т.е. на невыходном, слое может быть реализована и скобка (X10 X13).
Предположим, что сквозная нумерация позволяет выделить подмножества нейронов, принадлежащих одному
слою или, в общем случае, имеющих одинаковую максимальную длину 1-12 образуют первый слой нейросети, нейроны 13-21 – второй слой, третий слой – выходной. Тогда и в описывающей нейросеть S, наличие которой
лишь подразумевается ввиду ее громоздкости, можно отчеркнуть строки и столбцы нейронов, принадлежащих, в данном случае,
одному слою. (Напомним, что в матрице S связи обозначаются значениями весов, первоначально равными нулю.)
Построим матрицу S1 (рис. 11.3) на основании выражения, определяющего
решение R1.
Для ее построения необходимо из матрицы S исключить строки (и столбцы), которые соответствуют переменным,
не участвующим в построении решения R1, а также – представительство других решений на выходном слое.
Приступим к реализации первой "скобки" третьего уровня вложенности.
В столбцах, соответствующих событиям Х7 и Х1, ведя поиск в пределах нейронов первого слоя, найдем
первую строку, которая содержит максимальное число нулей, указывающих наличие связей. Такая строка, где
нули находятся во всех выделенных столбцах, соответствует нейрону 3. В матрицах S и S1 меняем эти нули на
единицы – формируем единичные веса связей. В матрице S при строке, соответствующей нейрону 3, указываем число
введенных единиц, m3 = 2. В записи выражения меняем "скобку" на имя нейрона, реализующего ее. Запись
принимает вид
(3 (X3 X5)) (X10 X13) -> R1.
Перейдем к реализации "скобки" (X3 X5)
того же уровня вложенности.
(рис 11.3) Матрица S1 после трассировки решения R1В столбцах, соответствующих нейронам X3 и X5, найдем строку, содержащую максимальное число нулей.
Такая строка соответствует нейрону 1 первого слоя. Меняем в S и S1 найденные нули на единицы, в матрице S указываем значение m1 = 2.
Преобразуем запись выражения:
(3 1) (X10 X13) -> R1.
Скобка (X10 X13) может быть реализована как на первом, так и на втором слое. В столбцах, соответствующих
нейронам X10 и X13, находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 6. Меняем выделенные нули на единицы и указываем число таких единиц в S: m6 = 2. Запись выражения преобразуется:
(3 1) 6 -> R1.
Анализируя столбцы, соответствующие нейронам 1 и 3, находим нейрон 13 второго слоя, реализующий скобку (3 1), отмечаем значение m13 = 2. Запись выражения преобразуется к виду
13 6 -> R1.
Анализируя столбцы, соответствующие нейронам 6 и 13, включив в рассмотрение нейроны выходного слоя,
находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 15. Однако
она содержит нуль лишь в столбце нейрона 6. Меняем этот нуль в матрицах S и S1 на единицу, полагаем m15 =
1. Запись выражения преобразуется к виду
1315 -> R1.
Затем реализуем единственную "скобку" нулевого уровня вложенности с помощью нейрона R1. Х3 -> 1, Х5 -> 1, Х7 -> 3, Х1 -> 3, Х10 -> 6, Х13 -> 6, 1 -> 13, 3 -> 13, 6 -> 15, 13 -> R1, 15 -> R1.
Для
((X1X7)(X4X6))(X2X12 X14) -> R2
построим S2 (рис. 11.4). Для этого исключим
из матрицы S все нейроны- m.
При анализе "скобки" (X1 X7) обнаруживаем в столбцах, соответствующих нейронам X1 и X7, две единицы в строке, соответствующей нейрону 3, при том, что m3 = 2. Запись выражения преобразуется
к виду
(3 (X4 X6)) (X2 X12 X14) -> R2.
В строке, соответствующей Х4 и Х6, нет строки, содержащей единицы во всех позициях. Находим первую
строку, соответствующую нейрону первого слоя и содержащую максимальное число нулей при нулевом значении m. Такая строка, содержащая нули во всех позициях, соответствует нейрону 2. В матрицах S и S2 меняем выделенные
нули на единицы, фиксируем значение m2 = 2. Запись выражения преобразуется:
(3 2) (X2 X12 X14) -> R2.
В соответствии с уровнем вложенности присутствующие в записи "скобки" могут быть реализованы
как на первом, так и на втором слое нейросети. В столбцах, соответствующих Х2, Х12, Х14, нет строки нейрона
первого или второго слоя, содержащей единицы во всех столбцах. Находим первую строку, содержащую максимальное
число нулей при нулевом значении m. Такая строка соответствует нейрону 7. Меняем выделенные нули на единицы, фиксируем
значение m7 = 2. Запись выражения принимает вид
Преобразование первой скобки производится с помощью нейрона 14 аналогично предыдущему. Фиксируем
значение m14 = 2 и формируем новую запись:
14 (X2 7) -> R2.
Выделяем столбцы, соответствующие нейронам Х2 и 7, и так как в этих столбцах нет строки, соответствующей
нейронам второго слоя и содержащей единицы во всех позициях (нейрон 7 принадлежит первому слою и может участвовать
в термах, создаваемых на втором слое), находим первую строку, соответствующую нейрону второго слоя и содержащую максимальное
число нулей при нулевом значении m. Такая строка соответствует нейрону 16, который становится преемником лишь нейрона 7. Меняем
выделенный нуль на единицу, фиксируем значение m16 = 1. Запись выражения принимает вид
14 (X216) -> R2.
Теперь выделяем столбцы нейронов Х2 и 16. Находим в них строку с максимальным числом нулей при нулевом
значении m не далее, чем на втором слое нейронов. Такая строка соответствует нейрону 9. Меняем выделенный
нуль на единицу, полагаем m9 = 1. Запись принимает вид
14 (9 16) -> R2.
Выделяем столбцы, соответствующие нейронам 9 и 16. В них находим строку с максимальным числом нулей
и при нулевом m не далее чем на втором слое нейронов. Такая строка соответствует нейрону 18.
Однако прежде чем использовать этот нейрон, заметим, что здесь мы впервые сталкиваемся с необходимостью
введения дополнительной связи. Ведь нейрон 16 принадлежит "предельному" слою для реализованного им
терма. Его объединение с нейроном 18 возможно лишь на слое более высокого уровня, что не позволяет реализовать
все выражение. Нейрон 9 принадлежит первому слою, т.е. к предыдущему по отношению к нейрону 16. Его объединение
с нейроном 16 с помощью непосредственной связи 9 -> 16 обеспечивает правильную реализацию "скобки".
Таким образом, сформулируем правило: если "скобка" объединяет нейроны, среди которых один принадлежит слою максимального уровня, допустимого для формирования терма, а другие нейроны, образующие эту же "скобку", принадлежат предыдущему слою, то необходимо ввести дополнительные связи, соединяющие эти нейроны с первым, если такие связи не были заданы, и присвоить им единичный вес.
Введем связь 9 -> 16 и уточним значение m16 = 2. Запись выражения принимает вид
14 16 -> R2,
что с очевидностью приводит к окончанию
(рис 11.4) Матрица S2 после трассировки решения R2Заметим, что дополнительная связь Х2 -> 7, введенная на первом этапе реализации "скобки",
возможно, исключила бы сложный анализ создавшейся ситуации.
Аналогично, без элементов новизны, производится R3 с помощью матрицы S3 (рис. 11.5) введением единичных весов связей Х1 -> 5, Х10 -> 5, Х8 -> 8, 5 -> 17, 8 -> 17, 17 -> R3 .
Произведем R4, записав определяющее его выражение
(Х9 (Х1 Х10 )) (Х2 Х15 ) -> R4 .
Матрица S4 представлена на рис. 11.6.
(рис 11.5) Матрица следования S3 после трассировки решения R3 Выделим столбцы, соответствующие нейронам Х1 и Х10, и находим в них строку, соответствующую нейрону 5, в которой единицы записаны во всех позициях, m5 = 2. Заменим "скобку" именем нейрона 5:
(Х9 5) (Х2 Х15 ) -> R4 .
"Скобку" (Х2 Х15) реализуем с помощью нейрона 11, и запись принимает вид
(Х9 5)11-> R4.
Анализ первой скобки приводит к единичному весу связи Х9 -> 10, а затем 10 -> 19. Запись выражения
принимает вид
(195)11-> R4.
Дальнейший анализ "скобки" свидетельствует о том, что нейрон 19 принадлежит слою максимального
уровня, на котором эта "скобка" может
быть реализована. Нейрон 5 принадлежит предыдущему слою. Тогда по правилу, изложенному выше, вводим
дополнительную связь 5 -> 19. Полагаем m19 = 2. Запись выражения принимает вид
1911-> R4.
Полученная "скобка" может быть реализована на выходном слое нейронов. Анализируем столбцы,
соответствующие нейронам 11 и 19, находим в них первую строку с максимальным числом нулей при нулевом значении m, соответствующую нейрону 20, и вводим единичный вес связи 11 -> 20. Запись выражения принимает вид
1920-> R4.
Однако анализ столбцов, соответствующих нейронам 19 и 20, свидетельствует об отсутствии связей этих
нейронов с нейроном R4. Введем дополнительные связи 19 -> R4 и 20-> R4.
R4 закончена.
(рис 11.6) Матрица следования S4 после трассировки решения R4 Для R5 составим матрицу S5 (рис. 11.7) и запишем
в первоначальном виде логическое выражение
Х2(Х11 Х13) -> R5.
Выделяем столбцы, соответствующие нейронам Х11 и Х13. В них нет строки, соответствующей нейрону
не более чем второго слоя и содержащей единицы. Находим первую строку, содержащую максимальное число
нулей при нулевом значении m. Эта строка соответствует нейрону 12. Меняем нуль на единицу, положив m12= 1 ; запись выражения принимает вид
Х2(12 Х13) -> R5.
Продолжаем анализ "скобки", в результате чего запись выражения принимает вид
Х2(21 Х13) -> R5.
Вновь выделяем столбцы, соответствующие нейронам 21 и Х13 и не обнаруживаем в них, в пределах второго
слоя, строк, содержащих единицы или нули. Так как нейрон 21 принадлежит предельному для формируемого
терма слою, вводим дополнительную связь Х13 -> 21. Запись выражения принимает вид
Х221 -> R5.
Дальнейшие преобразования приводят к использованию нейрона 9 и к введению дополнительных связей 9
-> R5 и 21 -> R5.
(рис 11.7) Матрица следования S5 после трассировки решения R5Рассмотренный выше пример иллюстрирует практически все ситуации, возникающие при обучении предварительно
заданной нейросети. Они полностью определяют общий алгоритм ее
Следует напомнить предпосылки настоящего алгоритма, отличающие его от упомянутого.
В остальном изложенный ниже алгоритм основан на схожих действиях, что и упомянутый.
Алгоритм.
Подготовительные действия.
r (в частности, число слоев) нейросети.s уровня вложенности скобочных выражений ("скобок") в дистрибутивном
описании СПР.Заданную для s <= r.
S, отображающую заданную нейросеть. Элемент этой матрицы на пересечении
строки $$\alpha$$ и столбца $$\beta$$ пуст, если в заданной нейросети отсутствует синапсическая связь $$\beta \to \alpha$$. Если такая
связь существует, этот элемент имеет значение 0 – первоначально заданного S, соответствующую
i = 1, ..., P из описания вида (11.1). Для каждой записи
выполняем пп. 4-15. Если запись исчерпана, i -го выражения и строим Si исключением из матрицы S строк и столбцов, которые соответствуют переменным, не входящим в запись, а также всем решениям, кроме Ri.Si последовательно, сверху вниз, вычеркиваем строки (и соответствующие столбцы) которые
содержат число ранее введенных единиц, меньшее значения m, указанного при строке.s* вложенности скобки множество нейронов слоя r – s* + 1, который является
предельным для формирования терма – нейрона, реализующего (концентрирующего в себе возбуждение) данную "скобку".Si, которые соответствуют нейронам, образующим "скобку".Si нейрон предельного слоя и по всем позициям выделенных столбцов записываем единицы. То есть вводим дополнительные
связи с единичными весами.S. Количество введенных единиц указываем в признаке m модифицированной
строки, если она не соответствует нейрону выходного слоя.Si исключаем соответствующие
этим нейронам, отображенным в "скобке", строки и столбцы. Переходим к выполнению п. 6.Описание алгоритма закончено.
В заключение необходимо подчеркнуть, что корректное представление системы принятия решений на этапе ее логического описания определяет правильную "работу" нейронной сети. На этом этапе должно быть предложено простейшее описание, исключающее противоречивость и обеспечивающее эффективную нейросетевую реализацию.
В рассматриваемом в предыдущих лекциях примере допущена небрежность при формальном описании системы
в терминах математической логики. Она привела к неоднозначности выдаваемого решения при задании ситуаций
на основе булевых переменных. Ошибка, скрытая в логической схеме системы (можно считать, – умышленная), с
неизбежностью сказалась на правильности принятия решений. Это еще раз свидетельствует о прямой связи логического
и нейросетевого представлений, о том, что
Однако отметим, что нейросеть на основе обобщения типа используемых данных (преобразования булево в вещественное) представляет собой и обобщение логической схемы, что приближает ее к воплощению "природных" механизмов ассоциативного мышления.
Моделирование ассоциативного мышления фактически эквивалентно созданию таблиц, фиксирующих опыт вида "если $$\dots$$, то $$\dots$$ ", т.е. связывающих возникающие ситуации с принимаемым по ним решениям. Распространение возбуждения в нейросети с помощью передаточной функции является эффективным механизмом и оригинальным методом интерполяции (экстраполяции) опыта, т.е. нахождения по максимальной величине возбуждения наиболее близкого решения либо определения математического ожидания исхода с помощью значений возбуждения нескольких нейронов выходного слоя.
Благодаря логическому методу построения математический аппарат нейронных сетей прост и доходчив, разработка нейросети недорога, она не требует специальных знаний пользователя. В то же время нейросеть легко допускает включение в рассмотрение новых факторов, изменение решений и т.д.
Тот факт, что двухслойные сети достаточны для построения систем принятия решений, а также возможно широкое применение однослойных сетей, может быть учтен при разработке или программировании универсального нейрокомпьютера.
В представленном здесь алгоритме
В то же время построение обученной нейросети по дистрибутивному описанию СПР в том случае, когда связи между нейронами предварительно не установлены, представляется более перспективным, т.к. "исправлять" уже введенные связи гораздо труднее, чем вводить их заново.
Анализ примеров позволяет с уверенностью говорить о высокой актуальности СПР, реализуемых с помощью
однослойных и совершенных нейросетей, что значительно облегчает решение задачи
"Чтоб бешеной пляской землю овить,
скучную, как банка консервов,
давайте весенних бабочек ловить
сетью ненужных нервов!"
Под обучением нейросети будем понимать наложение требуемой структуры (обученной) нейросети на заданную графическую структуру.
По логическому описанию СПР мы составляем логическую схему и "объявляем" ее нейросетью,
назвав такой подход "схемотехническим". Однако он касался обучения обобщенным эталонам, т.е.
воспроизведению потенциально однослойных нейросетей. Там требовалось обеспечить лишь прохождение импульса
возбуждения от
Обобщим метод
Начнем с рассмотрения аналогий.
Задачу
Как правило, при таких постановках задачи
Исходя из аналогий, обусловленных общей логической базой, сформулируем и решим две задачи построения
обученной (
Используя предложенную нам для обучения нейросеть, позволим ее модификацию – введение недостающих связей (отвергнуть негодную сеть – значит, рассчитывать на случай), если очевидно, что без таких связей правильного функционирования добиться невозможно.
Под
Пусть задано множество нейронов
Скобочная запись задает последовательность формирования обученной нейросети. Процесс такого формирования (обучения) заключается в рекурсивной коммутации подструктур – термов на основе содержимого скобок в соответствии с их вложенностью.
Продолжим рассмотрение примера на основе логического описания (10.1). Перепишем его, используя символ обобщенной операции, реализуемой передаточной функцией, но сохранив скобки:
$$\begin{array}{l} ((X_{1} \ X_{7})\ (X_{3} \ X_{5} )) \(X_{10} \ X_{13} ) \to R_{1} ,\\ ((X_{1} \ X_{7} )\ (X_{4} \ X_{6} )) \(X_{2} \ X_{12} \ X_{14} ) \to R_{2} ,\\ X_{8} \ (X_{1} \ X_{10} ) \to R_{3} ,\\ (Х_{9} \ (Х_{1} \ Х_{10} ))\ (Х_{2} \ Х_{15} ) \to R_{4} ,\\ Х_{2} \(Х_{11} \ Х_{13} ) \to R_{5} .\end{array}$$Прежде всего из множества Х необходимо выделить нейроны входного – рецепторного – и выходного слоев.
Исходя из этого, а также, задав количество необходимых и предполагаемых нейронов разного функционального
назначения, закрепим и переобозначим нейроны: Х = {X1, ..., X15, 1, ..., 11, R1, ..., R5}. Нейроны 1, ..., 11 в будущих
построениях исполнят роль нейронов скрытых слоев – скрытых нейронов.
Составим S, соответствующая уже полученному решению. Однако
пока не следует учитывать единичные элементы: их необходимо сформировать в процессе решения задачи.
Для удобства пользования и учитывая, что данная матрица при отсутствии обратных связей – треугольная, она выполнена в виде "шахматки", где диагональные элементы отмечены.
Итак, чтобы сигналы возбуждения направленно проходили от М свободных нейронов, первоначально M = {1, ..., 11}.
(рис 11.1) Матрица следования после обучения нейросетиОрганизуем
При просмотре первого выражения, анализируя открывающие и закрывающие скобки, найдем первую скобку
самого высокого уровня вложенности. Она соответствует выражению (Х1 Х7). Закрепим за ним первый свободный
нейрон 1 из М, предположив тем самым, что он выполняет аналог операции, указанной в скобках. Сформируем уточненную
строку S, соответствующую нейрону 1, записав веса связей, равные единице, в столбцы, соответствующие
нейронам Х1 и Х7.
Обозначим исследованную "скобку" именем нейрона 1 и перепишем логическое выражение:
Продолжим поиск "скобок" самого высокого уровня вложенности.
Находим "скобку" (Х3 Х5). В общем случае такая "скобка" могла встретиться ранее,
и за ней мог быть закреплен скрытый нейрон. В целях экономии нейронов сформируем уточненную строку Х3 и Х5. Однако, прежде чем поместить строку
на ее место, проверим, нет ли в S идентичной строки? В данном случае такой строки нет. Тогда соотнесем полученную
строку с очередным свободным нейроном 2 и поместим ее в S.
Перепишем логическое выражение, заменив обработанную "скобку":
(12)(Х10Х13)->R1 .
Продолжая так же, закрепим нейрон 3 за "скобкой" (Х10Х13)
и сформируем соответствующую
этому нейрону строку матрицы S. Запись логического выражения примет вид
(12)3 -> R1 .
Следующий обзор этой записи приводит к замене "скобки" $$(1\wedge 2)$$ именем нейрона 4 и к формированию
строки 1 и 2. Запись логического выражения примет вид
4 3 -> R1.
Отсутствие скобок говорит о необходимости введения связей 4 -> R1
и 3 -> R1. Таким образом, строка,
соответствующая нейрону R1 выходного слоя, содержит единицы в столбцах, соответствующих нейронам 3 и 4.
R1 закончена.
Анализируем логическое выражение
((X1 X7 ) (X4 X6 )) (X2 X12 X14 ) -> R2 .
Строка матрицы S, сформированная по "скобке" (Х1Х7), совпадает со строкой, соответствующей
нейрону 1. Значит, можно "сэкономить", повторно использовав этот нейрон. Преобразуем запись:
(1 (X4 X6 )) (X2 X12 X14 ) -> R2 .
За следующей "скобкой" (Х4 Х6) закрепим нейрон 5, сформировав для него строку матрицы S, и запись примет вид
(1 5) (X2 X12 X14 ) -> R2 .
Продолжив ее обзор, получим новый вид записи (1 5) 6 -> R2 , а затем 7 6 -> R2 . Сформированные
при этом строки матрицы S показаны на рисунке. Аналогично анализируются другие логические выражения (11.1),
что не вносит новых особенностей в неформально изложенный алгоритм.
Нейросеть, представленная S, близка к нейросети, показанной на рис. 10.2.
Если задана структура нейросети (подразумевается ее "овеществленная" проекция на плоскость
или даже реализация на плате, на кристалле, на решетке связанных Х1 и Х7 подается на входы, значительно отстающие друг от друга, то при заданной, например, регулярной
структуре связей могут возникнуть большие трудности в реализации аналога конъюнкции $$Х_{1} \wedge Х_{7}$$, используемой далее в качестве отдельного
терма, который входит в состав других логических конструкций. Необходимое объединение этих событий на входе одного нейрона может быть
достигнуто даже не ранее, чем на выходном слое. Это потребует введения дополнительных связей для построения необходимого терма.
Чтобы минимизировать число вводимых дополнительных связей или исключить их вовсе, необходимо на основе анализа конструкций, входящих в состав описания вида (11.1), построить предпочтительный ряд следования событий, реализующий компромисс в выборе минимальных расстояний между элементами этого ряда.
Пусть на рис. 11.2 представлена структура нейросети, которую следует
обучить в соответствии с
Воспользуемся следующим алгоритмом упорядочения событий.
(рис 11.2) Обученная нейросетьВ рассматриваемом примере последовательность имен событий первоначально имеет вид
$$\begin{array}{l} \:| \overline{\phantom{Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6}}}\downarrow \\ Х_{1} Х_{7} Х_{3} Х_{5} Х_{10} Х_{13} Х_{1} Х_{7} Х_{4} Х_{6} Х_{2} Х_{12} Х_{14} Х_{8} Х_{1} Х_{10} Х_{9} Х_{1} Х_{10} Х_{2} Х_{15} Х_{2}Х_{11} Х_{13} \end{array}$$Имя Х1 входит неоднократно. Новая его позиция определяется как ](1 + 7 + 15 + 18) : 4[ = 11. После
переноса Х1 на новое место (показано стрелкой) и исключения его прежних вхождений последовательность имен
принимает вид
Новое место Х7 определяется как ](1 + 6) : 2[ = 4. Последовательность принимает вид
Новое место Х10 определяется как ](3 + 13 + 15) : 3[ = 11. Последовательность принимает вид
Новая позиция Х13 определяется как ](4 + 18) : 2[ =11. Получаем новый вид последовательности:
Отыскивается новое место Х2, как ](7 + 14 + 16) : 3[ = 13, и последовательность имен событий принимает
окончательный вид, отображенный на рисунке:
Заметим, что при реализации на компьютере "кнопки" или окна на панели управления могут
располагаться в удобном для пользователя порядке, соединяясь с закрепленными за ними
Как видно из примера, рассмотренного в лекции 10, если нейросеть не может быть сведена к однослойной
на заданной графической структуре, то при
В рассматриваемой сети (рис. 11.2) максимальная длина статического
Запишем первое логическое выражение из описания (11.1):
((X1 X7) (X3 X5)) (X10 X13) -> R1.
Ему соответствует максимальная длина логических цепочек, равная трем, что следует из порядка вложенности
скобок. Тогда справедливо предположение о том, что "скобки" (X1X7) и (X3X5) могут быть реализованы
не далее чем на первом слое (3 - 2 = 1), чтобы не воспрепятствовать формированию подструктур, в которые они входят.
Охватывающая их "скобка" ((X1X7)(X3X5))
должна быть реализована на втором слое. Не далее чем на
этом же, т.е. на невыходном, слое может быть реализована и скобка (X10 X13).
Предположим, что сквозная нумерация позволяет выделить подмножества нейронов, принадлежащих одному
слою или, в общем случае, имеющих одинаковую максимальную длину 1-12 образуют первый слой нейросети, нейроны 13-21 – второй слой, третий слой – выходной. Тогда и в описывающей нейросеть S, наличие которой
лишь подразумевается ввиду ее громоздкости, можно отчеркнуть строки и столбцы нейронов, принадлежащих, в данном случае,
одному слою. (Напомним, что в матрице S связи обозначаются значениями весов, первоначально равными нулю.)
Построим матрицу S1 (рис. 11.3) на основании выражения, определяющего
решение R1.
Для ее построения необходимо из матрицы S исключить строки (и столбцы), которые соответствуют переменным,
не участвующим в построении решения R1, а также – представительство других решений на выходном слое.
Приступим к реализации первой "скобки" третьего уровня вложенности.
В столбцах, соответствующих событиям Х7 и Х1, ведя поиск в пределах нейронов первого слоя, найдем
первую строку, которая содержит максимальное число нулей, указывающих наличие связей. Такая строка, где
нули находятся во всех выделенных столбцах, соответствует нейрону 3. В матрицах S и S1 меняем эти нули на
единицы – формируем единичные веса связей. В матрице S при строке, соответствующей нейрону 3, указываем число
введенных единиц, m3 = 2. В записи выражения меняем "скобку" на имя нейрона, реализующего ее. Запись
принимает вид
(3 (X3 X5)) (X10 X13) -> R1.
Перейдем к реализации "скобки" (X3 X5)
того же уровня вложенности.
(рис 11.3) Матрица S1 после трассировки решения R1В столбцах, соответствующих нейронам X3 и X5, найдем строку, содержащую максимальное число нулей.
Такая строка соответствует нейрону 1 первого слоя. Меняем в S и S1 найденные нули на единицы, в матрице S указываем значение m1 = 2.
Преобразуем запись выражения:
(3 1) (X10 X13) -> R1.
Скобка (X10 X13) может быть реализована как на первом, так и на втором слое. В столбцах, соответствующих
нейронам X10 и X13, находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 6. Меняем выделенные нули на единицы и указываем число таких единиц в S: m6 = 2. Запись выражения преобразуется:
(3 1) 6 -> R1.
Анализируя столбцы, соответствующие нейронам 1 и 3, находим нейрон 13 второго слоя, реализующий скобку (3 1), отмечаем значение m13 = 2. Запись выражения преобразуется к виду
13 6 -> R1.
Анализируя столбцы, соответствующие нейронам 6 и 13, включив в рассмотрение нейроны выходного слоя,
находим первую строку, содержащую максимальное число нулей. Такая строка соответствует нейрону 15. Однако
она содержит нуль лишь в столбце нейрона 6. Меняем этот нуль в матрицах S и S1 на единицу, полагаем m15 =
1. Запись выражения преобразуется к виду
1315 -> R1.
Затем реализуем единственную "скобку" нулевого уровня вложенности с помощью нейрона R1. Х3 -> 1, Х5 -> 1, Х7 -> 3, Х1 -> 3, Х10 -> 6, Х13 -> 6, 1 -> 13, 3 -> 13, 6 -> 15, 13 -> R1, 15 -> R1.
Для
((X1X7)(X4X6))(X2X12 X14) -> R2
построим S2 (рис. 11.4). Для этого исключим
из матрицы S все нейроны- m.
При анализе "скобки" (X1 X7) обнаруживаем в столбцах, соответствующих нейронам X1 и X7, две единицы в строке, соответствующей нейрону 3, при том, что m3 = 2. Запись выражения преобразуется
к виду
(3 (X4 X6)) (X2 X12 X14) -> R2.
В строке, соответствующей Х4 и Х6, нет строки, содержащей единицы во всех позициях. Находим первую
строку, соответствующую нейрону первого слоя и содержащую максимальное число нулей при нулевом значении m. Такая строка, содержащая нули во всех позициях, соответствует нейрону 2. В матрицах S и S2 меняем выделенные
нули на единицы, фиксируем значение m2 = 2. Запись выражения преобразуется:
(3 2) (X2 X12 X14) -> R2.
В соответствии с уровнем вложенности присутствующие в записи "скобки" могут быть реализованы
как на первом, так и на втором слое нейросети. В столбцах, соответствующих Х2, Х12, Х14, нет строки нейрона
первого или второго слоя, содержащей единицы во всех столбцах. Находим первую строку, содержащую максимальное
число нулей при нулевом значении m. Такая строка соответствует нейрону 7. Меняем выделенные нули на единицы, фиксируем
значение m7 = 2. Запись выражения принимает вид
Преобразование первой скобки производится с помощью нейрона 14 аналогично предыдущему. Фиксируем
значение m14 = 2 и формируем новую запись:
14 (X2 7) -> R2.
Выделяем столбцы, соответствующие нейронам Х2 и 7, и так как в этих столбцах нет строки, соответствующей
нейронам второго слоя и содержащей единицы во всех позициях (нейрон 7 принадлежит первому слою и может участвовать
в термах, создаваемых на втором слое), находим первую строку, соответствующую нейрону второго слоя и содержащую максимальное
число нулей при нулевом значении m. Такая строка соответствует нейрону 16, который становится преемником лишь нейрона 7. Меняем
выделенный нуль на единицу, фиксируем значение m16 = 1. Запись выражения принимает вид
14 (X216) -> R2.
Теперь выделяем столбцы нейронов Х2 и 16. Находим в них строку с максимальным числом нулей при нулевом
значении m не далее, чем на втором слое нейронов. Такая строка соответствует нейрону 9. Меняем выделенный
нуль на единицу, полагаем m9 = 1. Запись принимает вид
14 (9 16) -> R2.
Выделяем столбцы, соответствующие нейронам 9 и 16. В них находим строку с максимальным числом нулей
и при нулевом m не далее чем на втором слое нейронов. Такая строка соответствует нейрону 18.
Однако прежде чем использовать этот нейрон, заметим, что здесь мы впервые сталкиваемся с необходимостью
введения дополнительной связи. Ведь нейрон 16 принадлежит "предельному" слою для реализованного им
терма. Его объединение с нейроном 18 возможно лишь на слое более высокого уровня, что не позволяет реализовать
все выражение. Нейрон 9 принадлежит первому слою, т.е. к предыдущему по отношению к нейрону 16. Его объединение
с нейроном 16 с помощью непосредственной связи 9 -> 16 обеспечивает правильную реализацию "скобки".
Таким образом, сформулируем правило: если "скобка" объединяет нейроны, среди которых один принадлежит слою максимального уровня, допустимого для формирования терма, а другие нейроны, образующие эту же "скобку", принадлежат предыдущему слою, то необходимо ввести дополнительные связи, соединяющие эти нейроны с первым, если такие связи не были заданы, и присвоить им единичный вес.
Введем связь 9 -> 16 и уточним значение m16 = 2. Запись выражения принимает вид
14 16 -> R2,
что с очевидностью приводит к окончанию
(рис 11.4) Матрица S2 после трассировки решения R2Заметим, что дополнительная связь Х2 -> 7, введенная на первом этапе реализации "скобки",
возможно, исключила бы сложный анализ создавшейся ситуации.
Аналогично, без элементов новизны, производится R3 с помощью матрицы S3 (рис. 11.5) введением единичных весов связей Х1 -> 5, Х10 -> 5, Х8 -> 8, 5 -> 17, 8 -> 17, 17 -> R3 .
Произведем R4, записав определяющее его выражение
(Х9 (Х1 Х10 )) (Х2 Х15 ) -> R4 .
Матрица S4 представлена на рис. 11.6.
(рис 11.5) Матрица следования S3 после трассировки решения R3 Выделим столбцы, соответствующие нейронам Х1 и Х10, и находим в них строку, соответствующую нейрону 5, в которой единицы записаны во всех позициях, m5 = 2. Заменим "скобку" именем нейрона 5:
(Х9 5) (Х2 Х15 ) -> R4 .
"Скобку" (Х2 Х15) реализуем с помощью нейрона 11, и запись принимает вид
(Х9 5)11-> R4.
Анализ первой скобки приводит к единичному весу связи Х9 -> 10, а затем 10 -> 19. Запись выражения
принимает вид
(195)11-> R4.
Дальнейший анализ "скобки" свидетельствует о том, что нейрон 19 принадлежит слою максимального
уровня, на котором эта "скобка" может
быть реализована. Нейрон 5 принадлежит предыдущему слою. Тогда по правилу, изложенному выше, вводим
дополнительную связь 5 -> 19. Полагаем m19 = 2. Запись выражения принимает вид
1911-> R4.
Полученная "скобка" может быть реализована на выходном слое нейронов. Анализируем столбцы,
соответствующие нейронам 11 и 19, находим в них первую строку с максимальным числом нулей при нулевом значении m, соответствующую нейрону 20, и вводим единичный вес связи 11 -> 20. Запись выражения принимает вид
1920-> R4.
Однако анализ столбцов, соответствующих нейронам 19 и 20, свидетельствует об отсутствии связей этих
нейронов с нейроном R4. Введем дополнительные связи 19 -> R4 и 20-> R4.
R4 закончена.
(рис 11.6) Матрица следования S4 после трассировки решения R4 Для R5 составим матрицу S5 (рис. 11.7) и запишем
в первоначальном виде логическое выражение
Х2(Х11 Х13) -> R5.
Выделяем столбцы, соответствующие нейронам Х11 и Х13. В них нет строки, соответствующей нейрону
не более чем второго слоя и содержащей единицы. Находим первую строку, содержащую максимальное число
нулей при нулевом значении m. Эта строка соответствует нейрону 12. Меняем нуль на единицу, положив m12= 1 ; запись выражения принимает вид
Х2(12 Х13) -> R5.
Продолжаем анализ "скобки", в результате чего запись выражения принимает вид
Х2(21 Х13) -> R5.
Вновь выделяем столбцы, соответствующие нейронам 21 и Х13 и не обнаруживаем в них, в пределах второго
слоя, строк, содержащих единицы или нули. Так как нейрон 21 принадлежит предельному для формируемого
терма слою, вводим дополнительную связь Х13 -> 21. Запись выражения принимает вид
Х221 -> R5.
Дальнейшие преобразования приводят к использованию нейрона 9 и к введению дополнительных связей 9
-> R5 и 21 -> R5.
(рис 11.7) Матрица следования S5 после трассировки решения R5Рассмотренный выше пример иллюстрирует практически все ситуации, возникающие при обучении предварительно
заданной нейросети. Они полностью определяют общий алгоритм ее
Следует напомнить предпосылки настоящего алгоритма, отличающие его от упомянутого.
В остальном изложенный ниже алгоритм основан на схожих действиях, что и упомянутый.
Алгоритм.
Подготовительные действия.
r (в частности, число слоев) нейросети.s уровня вложенности скобочных выражений ("скобок") в дистрибутивном
описании СПР.Заданную для s <= r.
S, отображающую заданную нейросеть. Элемент этой матрицы на пересечении
строки $$\alpha$$ и столбца $$\beta$$ пуст, если в заданной нейросети отсутствует синапсическая связь $$\beta \to \alpha$$. Если такая
связь существует, этот элемент имеет значение 0 – первоначально заданного S, соответствующую
i = 1, ..., P из описания вида (11.1). Для каждой записи
выполняем пп. 4-15. Если запись исчерпана, i -го выражения и строим Si исключением из матрицы S строк и столбцов, которые соответствуют переменным, не входящим в запись, а также всем решениям, кроме Ri.Si последовательно, сверху вниз, вычеркиваем строки (и соответствующие столбцы) которые
содержат число ранее введенных единиц, меньшее значения m, указанного при строке.s* вложенности скобки множество нейронов слоя r – s* + 1, который является
предельным для формирования терма – нейрона, реализующего (концентрирующего в себе возбуждение) данную "скобку".Si, которые соответствуют нейронам, образующим "скобку".Si нейрон предельного слоя и по всем позициям выделенных столбцов записываем единицы. То есть вводим дополнительные
связи с единичными весами.S. Количество введенных единиц указываем в признаке m модифицированной
строки, если она не соответствует нейрону выходного слоя.Si исключаем соответствующие
этим нейронам, отображенным в "скобке", строки и столбцы. Переходим к выполнению п. 6.Описание алгоритма закончено.
В заключение необходимо подчеркнуть, что корректное представление системы принятия решений на этапе ее логического описания определяет правильную "работу" нейронной сети. На этом этапе должно быть предложено простейшее описание, исключающее противоречивость и обеспечивающее эффективную нейросетевую реализацию.
В рассматриваемом в предыдущих лекциях примере допущена небрежность при формальном описании системы
в терминах математической логики. Она привела к неоднозначности выдаваемого решения при задании ситуаций
на основе булевых переменных. Ошибка, скрытая в логической схеме системы (можно считать, – умышленная), с
неизбежностью сказалась на правильности принятия решений. Это еще раз свидетельствует о прямой связи логического
и нейросетевого представлений, о том, что
Однако отметим, что нейросеть на основе обобщения типа используемых данных (преобразования булево в вещественное) представляет собой и обобщение логической схемы, что приближает ее к воплощению "природных" механизмов ассоциативного мышления.
Моделирование ассоциативного мышления фактически эквивалентно созданию таблиц, фиксирующих опыт вида "если $$\dots$$, то $$\dots$$ ", т.е. связывающих возникающие ситуации с принимаемым по ним решениям. Распространение возбуждения в нейросети с помощью передаточной функции является эффективным механизмом и оригинальным методом интерполяции (экстраполяции) опыта, т.е. нахождения по максимальной величине возбуждения наиболее близкого решения либо определения математического ожидания исхода с помощью значений возбуждения нескольких нейронов выходного слоя.
Благодаря логическому методу построения математический аппарат нейронных сетей прост и доходчив, разработка нейросети недорога, она не требует специальных знаний пользователя. В то же время нейросеть легко допускает включение в рассмотрение новых факторов, изменение решений и т.д.
Тот факт, что двухслойные сети достаточны для построения систем принятия решений, а также возможно широкое применение однослойных сетей, может быть учтен при разработке или программировании универсального нейрокомпьютера.
В представленном здесь алгоритме
В то же время построение обученной нейросети по дистрибутивному описанию СПР в том случае, когда связи между нейронами предварительно не установлены, представляется более перспективным, т.к. "исправлять" уже введенные связи гораздо труднее, чем вводить их заново.
Анализ примеров позволяет с уверенностью говорить о высокой актуальности СПР, реализуемых с помощью
однослойных и совершенных нейросетей, что значительно облегчает решение задачи
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.