Введение в нейронные сети

Обучение логической нейронной сети

Разбить на страницы
Показывать лекцию целиком

Что означает обучение нейросети?

— Аннушка… Аннушка?.. — забормотал поэт, тревожно озираясь, — позвольте, позвольте…

К слову "Аннушка" привязались слова "подсолнечное масло", а затем почему-то "Понтий Пилат". Пилата поэт отринул и стал вязать цепочку, начиная со слова "Аннушка". И цепочка эта связалась очень быстро и тотчас привела к сумасшедшему профессору.

… Бытует теоретико-практическая предпосылка, объявляющая, что нейросеть формируется "под задачу". Однако в природе есть идеальная, универсальная, "унифицированная" нейросеть — наш мозг!.. И каждый из нас не испытывает серьезных технических трудностей, если, совершая жизненную ошибку, становится не коммерсантом-коробейником, а, скажем, блестящим специалистом по реликтовым захоронениям в мезозойский период. Более того, говорят, что если человек талантлив в одном, то он талантлив во всем.

Итак, мы научились строить уже обученные простейшие логические нейронные сети. Они обучены, ибо представляют собой законченные функциональные устройства специального назначения. Более того, мы умеем приводить их к однослойным сетям, - к таблицам с ассоциативной выборкой: на что более всего похож предъявленный образ, или на какую известную похожа сложившаяся ситуация, и какие действия предпринять?

Однако столь несложные построения настораживают шефа. Он боится, что такие примитивные результаты обесценивают долгие и трудные поиски его коллектива.

– Нет! – говорит он и открывает ящик стола. – Вот красивый и сложный граф с достаточным количеством входных и выходных вершин. Интерпретируйте его логической нейронной сетью и произведите обучение этой сети в соответствии с логическим описанием СПР!

Под обучением логической нейронной сети понимается запись в ней причинно-следственных связей вида "если... то...". Эти связи создаются с помощью высоких значений одних синапсических весов при сохранении исходных низких значений других. Объясним это.

Предварительно введем понятие обобщенного эталона .

Под обобщенным эталоном будем понимать совокупное множество всех событий, фигурирующих в отдельном логическом выражении из описания СПР, такое, что единичное возбуждение закрепленных за ними рецепторов – части или всех одновременно - приводит к самому высокому возбуждению нейрона выходного слоя, указывающее на решение, соответствующее данному логическому выражению.

Например, в примере о Васе, Пете Ко обобщенным эталоном , приводящим к решению R1, является А1В1С1С2С3С4С5. При этом, по смыслу задачи, единичное возбуждение получают комбинации А1В1С1, ..., А1В1С5. Обобщенный эталон , приводящий к решению R2 – А1В2В3С1С2С3 и т.д. Здесь знак указывает на взаимодействие событий с помощью функции активации. В общем случае логическое описание системы принятия решений (в виде ряда логических функций) может содержать скобки, которые нельзя игнорировать при обучении. Тогда эти скобки указываются в обобщенном эталоне на своих местах, возможно, - в порядке вложенности. Такие структурированные логические описания обсуждаются в [2, 4].

Важно подчеркнуть, что обобщенный эталон отражает единственность вхождения переменных – событий. Это требование следует из того, что при переходе от логических переменных описания СПР к действительным (отображающим достоверность принадлежности) суррогатом логических операций становится некоторая функция активации. А в основе такой функции лежит операция сложения, то есть суммирования сигналов. Естественно, что эти сигналы должны при суммировании учитываться один раз.

Таким образом, каждая логическая функция из описания СПР – прообраз обобщенного эталона - должна быть преобразована так, чтобы все ее переменные входили в текст лишь один раз. (Заметим, что эти преобразования служат не достижению абсолютной правильности выводов, а лишь максимизируют эту правильность. Мы приветствуем людей, мыслящих логично, воспроизводящих структурную взаимосвязь событий. Но чаще наблюдаем такую "кашу" в голове!)

Указанное преобразование достигается "вынесением за скобки". Поскольку в основе операции вынесения за скобки в алгебре логики лежит симметричное свойство дистрибутивности конъюнкции относительно дизъюнкции и дизъюнкции относительно конъюнкции, то такое преобразование можно назвать дистрибутивным . Если дистрибутивное преобразование невозможно, выражение следует разбить относительно некоторой операции дизъюнкции (любое логическое выражение легко преобразуется в "дизъюнкцию конъюнкций") и для каждой части отдельно указать, что ее значение "истина" приводит к тому же самому решению. Этот прием называется размножением решений . В конечном итоге это и есть путь получения однослойных логических нейронных сетей.

Итак, события, приводящие к единичному значению сигналов возбуждения на соответствующих им рецепторах, должны привести к самому высокому значению сигнала на соответствующем нейроне выходного слоя. То есть, заданная комбинация единичных сигналов на входе должна привести к максимальному (по сравнению с другими) сигналу на определенном выходе.

Это достигается прокладкой трассы от всех рассматриваемых входных сигналов к требуемому нейрону выходного слоя через промежуточные нейроны, если сеть не однослойная. Эта трасса строится с помощью комбинации высоких весов "попутных" связей. Практически, выбранные для этого веса полагаются равными единице.

Обучение логической сети таким методом называется трассировкой – по аналогии с некоторыми задачами электронной схемотехники. Там таким способом, на основе набора (матрицы) элементов, изначально связанных между собой "проводочками", создается замысленное функциональное устройство. При этом существование одних "проводочков" подтверждается (их вес высок, так как сопротивление низко), а ненужные "проводочки" можно и "перекусить".

Алгоритмы трассировки по обобщенным эталонам , как не содержащим скобки, так и содержащим их, исключительно просты и нетрудоемки. Они основаны на анализе матрицы следования , описывающей логическую нейронную сеть, и приведены в [1 - 4]. Здесь приводятся примеры.

Следует отметить, что эти алгоритмы предусматривают введение дополнительных связей в том случае, если предоставленных изначально связей оказалось недостаточно. (Не бросать же негодную сеть шефу в лицо!)

Обучение нейросети для распознавания букв

Продолжим рассмотрение примера в разделе 2.1. Теперь предположим, что структура сети (рис.4.1), а также функция активации, заданы, и нам предстоит обучить сеть распознаванию букв О и А.

Пусть экран разбит на столько же клеток что и ранее, и мы убеждаемся лишь в том, что предложенная нейросеть содержит не менее 12 нейронов входного слоя, и не менее двух нейронов выходного слоя.

(рис 4.1) Нейросеть, подлежащая обучению

Функция активации нейрона, в частности, заданная нам или выбранная нами сознательно, имеет вид

$$V=\sum \limits_j \omega_j V_j$$ $$V_i= \begin{cases} V,\text{если V>h}\\ 0,\text{в противном случае} \end{cases}$$

Здесь $$\omega_j$$ — синапсический вес входа или вес связи, по которой передается возбуждение от нейрона j нейрону i.

Тогда задачей обучения – трассировки является выбор единичных весов некоторых связей и нулевых весов других связей так, чтобы в соответствии с функциональным назначением сети сложились отношения "посылка — следствие", подобные тем, которые мы создали выше при построении уже обученной сети. Они переводят возбуждение рецепторов, образующееся при "показе" эталонов и образов, в максимальное возбуждение тех нейронов выходного слоя, которые говорят "что это такое".

На рис.4.2 приведен результат такой трассировки для нашего примера, где выделенные стрелки соответствуют связям с единичными весами, а другие — с нулевыми.

Задав несколько, в том числе "неопределенных" образов на входе, можно убедиться в ее правильной работе, хотя и демонстрирующей изначально выбранное слабое отличие О от А. Выбором значения h можно добиться того, чтобы "чужие" символы отсеивались.

(рис 4.2) Обученная нейросеть

Получилась интересная игра. Мы задаем на входе случайные возбуждения и спрашиваем: на что это больше похоже из того, что "знает" нейросеть? Все, что надо сделать, это посчитать в едином цикле или параллельно для всех нейронов значение функции активации и сравнить величины возбуждения нейронов выходного слоя, преодолевшие порог.

Обучение нейросети игре в железнодорожную рулетку

Еще глубже погрузимся в изучение проблемы обучения логической нейронной сети. Ранее нам были известны условия игры в железнодорожную рулетку, а мы создали сеть. Теперь пусть нам задана нейросеть, а мы обучим ее игре в рулетку.

Нарисуем некоторый ориентированный ациклический граф (рис.4.3), привлекательный для заказчика, и вложим в него смысл нейросети, поставив в соответствие его вершинам-нейронам (кроме предполагаемых рецепторов) рассмотренную ранее функцию активации

$$V_i=\sum \limits_j V_j - h$$

где j — индекс нейрона, "передающего" свое возбуждение данному нейрону, h — порог.

(рис 4.3) Нейросеть, предложенная для обучения

Матрица следования

В представленном виде нейронная сеть не годится для формальных исследований, тем более, - на компьютере. Поэтому используются матрицы следования , отображающие как взаимодействие нейронов, так и веса синапсических связей.

Для данного случая матрица следования показана на рис.4.4.

Здесь непустые элементы означают наличие связей, а указанные в них значения соответствуют первоначально заданным нулевым весам этих связей.

(рис 4.4) Матрица следования для обучаемой нейросети

В результате выполнения алгоритма обучения логической нейронной сети методом трассировки формируются единичные веса некоторых связей так, чтобы сигналы, характеризующие каждую ситуацию, в наибольшей степени возбуждали поставленные им в соответствие нейроны выходного слоя. Если первоначально заданных связей не хватает, то допускается введение дополнительных связей с единичными весами.

Окончательный результат обучения нейронной сети методом трассировки показан на рис.4.5, где выделены связи с единичными весами. (Другие "проводочки" мы могли бы перекусить.) Так как первоначальных связей оказалось недостаточно, пришлось ввести дополнительные "проводочки" с единичными весами (с нулевым сопротивлением). Матрица следования для обученной нейронной сети представлена на рис.4.6.

(рис 4.5) Обученная нейронная сеть (рис 4.6) Матрица следования для обученной нейронной сети

Но радоваться рано. Посчитаем с помощью нашей функции активации величины возбуждения нейронов для, например, ситуации A1B2: $$V_1 = 0, V_2 = 1, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 0$$. Ни один нейрон выходного слоя не возбудился! То же — для ситуаций A1B1 и A2B1. Рассчитаем ситуацию A2B2: $$V_1 = 0, V_2 = 0, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 1$$. Мы видим, что построенная нейросеть распознает единственную ситуацию, заданную четко.

Анализируя, мы убеждаемся, что в процессе распространения по сети возбуждение "гаснет", не доходя до выходного слоя. Тогда мы начинаем "подкручивать" пороги, уменьшая их. Но тотчас замечаем другую неприятность: величины возбуждения нейронов выходного слоя различны для разных ситуаций, ибо различна длина путей возбуждения. Это является следствием не аддитивности функции активации, что затрудняет правильное участие нейронов в следующих логических слоях, когда данный выходной слой является входным для следующего логического уровня сети. Мы видим, что наша функция активации не годится для выбранной структуры нейросети.

В предыдущем разделе, посвященном распознаванию символов, была использована "хорошая" функция активации, определяющая величину Vi возбуждения нейрона:

$$V_i= \begin{cases} 0,\ если\ V=\sum \limits_j \omega_j V_j \le h}\\ \sum \limits_j \omega_j V_j,\ в\ противном\ случае} \end{cases}$$

Рассчитайте и убедитесь, что, например, для $$h = 1$$ сеть правильно распознает все эталонные ситуации, обеспечивая равную величину возбуждения нейронов выходного слоя. Так, при ситуации A1B1 получаем следующие величины возбуждения нейронов: $$V_1 = 2, V_2 = 0, V_3 = 0, V_{R1} = 2, V_{R2} = 0, V_{R3} = 0, V_{R4} = 0$$. Аналогично, — для ситуаций A1B2 и A2B1. Для ситуации A2B2 находим $$V_1 = 0, V_2 = 0, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 2$$.

Сеть работает прекрасно, гарантируя правильность реакции на недостоверные ситуации, и позволяя находить среднее.

А главное, сколько прекрасных вариантов развития имеет игра, стимулируя наше предвидение! Например, что, если скорость паровозов — величина переменная и случайная, так же как и чередование и длина однопутных участков, и решение следует принимать и корректировать в динамике, в зависимости от длины пройденного пути и значения скорости? Что, если один машинист охвачен идеей суицида, а другой желает уклониться от столкновения? и т.д., и т.д. (Бедные линейные!)

Обучение нейросети для "современной" системы принятия решений

Продвинемся еще на шаг по пути иллюстративного освоения принципов обучения логической нейронной сети.

Выберем нейросеть, отражающую, как нам кажется, все особенности, которые необходимо учесть при построении алгоритма трассировки, и, как мы уже начали, возьмем пример из 2.3, который в терминах обобщенных эталонов выглядит теперь следующим образом:

A1B1C1C2C3C4C5 $$\to$$ R1

A1B2B3C1C2C3 $$\to$$ R2

A1B2B3C4C5 $$\to$$ R3 (4.1)

A2B3C1C2C3C4C5 $$\to$$ R4

A2B1B2C1C2C3C4C5 $$\to$$ R5

Мы хотим, задавая обобщенный эталон на входе, например, из тех, что приведены выше, экономным путем построить, возможно, пересекающиеся пути возбуждения, ведущие от каждого возбужденного входного нейрона в соответствующий нейрон выходного слоя. Способ должен быть экономным в том смысле, что пути должны быть максимально объединены, совмещены, реализуя стратегию слияния и выхода на общую, единую дорогу, ведущую к заветной цели.

При этом мы используем приведенный в [6, 7] эвристический алгоритм, который крайне экономно расходует ресурсы сети — ее нейроны и связи, но и так же экономно вводит изменения, развивает сеть, если связей оказывается недостаточно.

Ибо мы видели, с каким трудом удается приспособить "готовую" нейросеть под конкретную задачу. Мы постоянно склонялись к вопросу: "А не лучше ли сразу строить сеть "под задачу", а не наоборот?" Нам кажется, мы нашли диалектический компромисс: беря что-то близкое, подходящее, мы минимально переделываем, словно костюм с жмущим гульфиком, купленный в универсальном магазине. Кроме того, нам очень важно сделать алгоритм доступным широким массам студенческой молодежи, овладевшей основами таинства параллельного программирования!

Пусть выбранная нейросеть представлена на рис.4.7, где первоначально заданные связи обозначены тонкими стрелками. Строим соответствующую матрицу следования S и в ней — транзитивные связи (рис.4.8), определяющие транзитные пути попадания в каждый нейрон. Проверяем, все ли нейроны выходного слоя достижимы из любого нейрона входного слоя. Если нет, считаем, что сеть составлена не корректно.

В данном случае из нейрона В1 не исходит ни одного пути, заканчивающегося нейроном Вых5. Это следует из того, что в строке, соответствующей нейрону Вых5, нет даже транзитивной связи в столбце, соответствующем нейрону В1. То же касается нейрона В3.

Введем синапсические связи В1 $$\to$$ Вых5 и В3 $$\to$$ Вых5 что и отмечено на рис.4.6 жирными стрелками, а на рис.4.7 – нулевыми весами введенных связей.

(рис 4.7) Нейросеть, подлежащая обучению (рис 4.8) Матрица следования с транзитивными связями

По первому выражению в (4.1) сформируем статический путь возбуждения {B1, A1, C1, C2, C3, C4, C5} $$\to$$ Вых1, объединяющий только интересующие нас сейчас нейроны и учитывающий только те связи, что могут быть основой необходимой трассы, и отобразим его матрицей $$S_1$$[B1,A1,C1,C2,C3,C4,C5 $$\to$$ Вых1] на рис.4.9. Эта матрица формируется на основе матрицы S вычеркиванием всех строк и столбцов, которые соответствуют не интересующим нас нейронам.

(рис 4.9) Матрица следования S1 для обучения первому эталону

Пытаясь сымитировать прокладываемые пути возбуждений, снабдим все нейроны входного слоя, отраженные в этой матрице, признаком "возбужден".

Найдем входы матрицы $$S_1$$ (пустые строки), обладающие признаком "возбужден". Выделим в одну совокупность соответствующие им столбцы, в данном случае столбцы 1 - 7, и найдем в ней строку, содержащую максимальное число "нулей", — строку, соответствующую нейрону 6. Заменяем в этой строке (в выделенной совокупности столбцов) "нули" "единицами", т.е. максимально увеличиваем соответствующие веса. Присваиваем нейрону 6 признак "возбужден", а также значение $$m_6$$ = 5, характеризующее то количество нейронов, "возбуждение" которых мы "собрали" на входе этого нейрона. Впредь мы можем только повторно использовать этот нейрон, но менять веса связей на его входе мы не должны. Изменение весов отображаем в матрице S.

Исключаем из матрицы $$S_1$$ строки и столбцы, соответствующие нейронам С1, С2, С3, С4, С5. Новый вид матрицы $$S_1$$ представлен на рис.4.10.

(рис 4.10) Первый шаг преобразования матрицы следования S1

Вновь выделяем столбцы, соответствующие "возбужденным" входам матрицы. Это столбцы, соответствующие нейронам В1, А1, 6. Находим строку в выделенной совокупности столбцов, имеющую максимальное число "нулей". Такая строка соответствует нейрону 11. Заменяем в этой строке (в выделенной совокупности столбцов) "нули" "единицами", т.е. максимально увеличиваем веса. Присваиваем нейрону 11 признак "возбужден" и значение $$m_{11}$$ = 3. Отражаем изменение весов в матрице S.

Исключаем из матрицы $$S_1$$ строки и столбцы, соответствующие нейронам В1, А1, 6. Матрица принимает вид, изображенный на рис.4.11.

(рис 4.11) Второй шаг преобразования матрицы следования S1

Исключаем из матрицы все входы, которые соответствуют нейронам 1, 2, 3, 4, 5, не обладающим признаком "возбужден". Ведь строящийся нами путь возбуждения уже миновал эти нейроны! Исключение этих нейронов породит новые нейроны, нуждающиеся в исключении по той же причине, — нейроны 9 и 10.

(Последовательное исключение сверху вниз динамически учитывает появление таких нейронов и гарантирует полное исключение за один проход.) Матрица $$S_1$$ примет вид на рис.4.12.

(рис 4.12) Последний шаг преобразования матрицы следования S1

Теперь в первом столбце имеется единственная строка с "нулем" — соответствующая нейрону Вых1. Меняем "нуль" на "единицу" — получаем окончательный возможный путь возбуждения по заданному эталону. Изменения отражаем в матрице S.

(рис 4.13) Нейросеть, обученная первому эталону

Мы не будем приводить новый вид матрицы следования S, а на изображении самой сети (рис.4.13) выделим темным построенную трассу.

Реакции на один обобщенный эталон мы сеть научили.

По сети на рис.4.13 или по матрице на рис.4.8 (с учетом частичного обучения!) построим (рис.4.14) матрицу статического пути возбуждения $$S_2$$ [B2, B3, A1, C1, C2, C3 $$\to$$ Вых2].

(рис 4.14) Первоначальный вид матрицы следования S2 для обучения второму эталону

Нейрон 6 ранее "объединил" возбуждение пяти нейронов: С1, С2, С3, С4, С5, т.е. в матрице S в соответствующей строке содержится пять единиц и $$m_6 = 5$$. Однако в составленной матрице $$S_2$$ в строке, соответствующей этому нейрону, присутствуют лишь три единицы. Значит, этот нейрон не может быть использован для трассировки необходимого пути возбуждения, т.к. комбинация С1С2С3С4С5 нам здесь не нужна.

То же следует сказать и о нейроне 11.

Исключим из данной матрицы строки и столбцы, соответствующие нейронам 6 и 11. Матрица примет вид, показанный на рис.4.15. Так как она не содержит единиц, то ее трассировка не привлечет новых особенностей. Результат обучения второму эталону представлен на рис.4.16.

(рис 4.15) Матрица следования S2 для обучения второму эталону (рис 4.16) Нейросеть после обучения двум эталонам

Обучим сеть третьей ситуации, требующей решения R3. Закрепим за этим решением нейрон Вых3. Матрица $$S_3$$ [B2, B3, A1, C4, C5 $$\to$$ Вых3] представлена на рис.4.17.

(рис 4.17) Матрица следования S3 для обучения третьему эталону (начальный вид)

Исключаем из матрицы $$S_3$$ представительство тех ранее использованных ("возбужденных") нейронов, для которых значение m (указано в дополнительном столбце матрицы) превышает количество единиц в соответствующей строке. Это значит, что эти нейроны "собрали" уже возбуждение нейронов, которые в данном пути возбуждения, т.е. в матрице $$S_3$$, не используются. Это нейроны 4, 5, 6, 11. Переиспользование их невозможно.

Повторяем попытки исключения из матрицы $$S_3$$ представительство тех нейронов, для которых значение m стало превышать количество единиц в соответствующей строке. И так далее — до исчерпания этой возможности.

В данном случае нам придется исключить из рассмотрения (вследствие исключения нейронов 4 и 5) нейроны 10 и 12. Матрица $$S_3$$ примет окончательный вид на рис.4.18.

(рис 4.18) Окончательный вид матрицы следования S3 для обучения третьему эталону

Присваиваем всем нейронам, образующим входы матрицы, признак "возбужден".

Выделяем и объединяем столбцы, соответствующие входам матрицы $$S_3$$.

Отобразим новую особенность алгоритма трассировки, обусловленную наличием в матрице $$S_3$$ "единиц".

А именно, в выделенных столбцах находим строку, содержащую хотя бы одну единицу. Она (строка) представляет тот нейрон, который "собрал" (при анализе предыдущих эталонов) возбуждение одного или более нейронов, образующих входы. Эти нейроны, "передавшие" свое возбуждение, могут быть исключены из рассмотрения. Среди таких строк выбираем строку с максимальным числом единиц.

Так, нейрон 1 возбужден единственным нейроном, принадлежащим текущему множеству входов матрицы, — нейроном В3. Впредь он представляет этот нейрон, который может быть исключен из рассмотрения. Матрица $$S_3$$ принимает вид на рис.4.19.

(рис 4.19) Первый шаг преобразования матрицы следования S3

Подтверждаем нейрону 1 признак "возбужден" и превращаем его во вход матрицы $$S_3$$ , уничтожив веса в его строке.

Вновь находим множество входов матрицы и выделяем соответствующие им столбцы. Пытаемся найти строку, содержащую единицы в этих и только этих столбцах, но таких больше нет. Тогда находим строку, содержащую максимальное число нулей. Первая такая строка соответствует нейрону 2. "Объединяем" на нем возбуждение нейронов В2 и А1, заменяя нули единицами. Полагаем m2 = 2, исключаем нейроны В2 и А1 из рассмотрения, присваиваем нейрону 2 признак "возбужден". Отражаем сделанные изменения весов в матрице S.

(рис 4.20) Нейросеть после обучения третьему эталону

Исключаем входы, не обладающие признаком "возбужден", — нейроны 3 и 5. Продолжая процесс подобно предыдущему, получаем результат обучения трем эталонам (рис.4.20).

Окончательный вид полностью обученной нейронной сети представлен на рис.4.21, где, напоминаем, веса, принявшие значение 1, в том числе введенные дополнительно, соответствуют жирным стрелкам.

(рис 4.21) Обученная нейросеть

Ключевые термины

  • Обучение нейронной сети – фиксирование причинно-следственных связей между ситуациями и следующими им решениями с помощью значений синапсических весов. Связи находятся так, чтобы при "единичном" возбуждении рецепторов, отражающих ситуацию, максимально возбуждался нейрон выходного слоя, указывающий на принимаемое решение.
  • Обобщенный эталон – множество значений исходных факторов, возможно, отражающих не единственную ситуацию, приводящих к одному решению. Формируется для каждой отдельной логической функции описания системы принятия решений.
  • Трассировка нейронной сети – обучение с помощью формирования трасс: совокупности путей, ведущих от рецепторов, определяющих обобщенный эталон, к нейрону выходного слоя, соответствующего решению. Трасса отмечается "единичными" весами использованных в ней связей.
  • Матрица следования – отображает матричное описание логической нейронной сети. Представляет удобный аппарат формальных преобразований для трассировки и расчетов.
  • Транзитивные связи – отражают не непосредственные связи между нейронами, а их совместное участие в некоторой логической цепочке.
  • Дистрибутивное преобразование – приведение логической функции к виду "дизъюнкции конъюнкций", то есть, к такому виду, при котором отдельные высказывания о значениях факторов объединены операцией И (в конъюнкции), а несколько таких конъюнкций объединены операцией ИЛИ (дизъюнкцией). Такое преобразование в основном использует известное из булевой алгебры свойство дистрибутивности конъюнкции относительно дизъюнкции и дизъюнкции относительно конъюнкции.
  • Размножение решений – постановка каждой "конъюнкции", образованной в результате дистрибутивного преобразования, того решения, которое соответствует значению ИСТИНА всего логического выражения.
  • Статический путь возбуждения – множество всех путей в графе, ведущих от выделенного множества входных вершин в некоторую выходную вершину.
  • Краткие итоги

  • Построение нейронной сети на основе достоверности высказываний о принадлежности данных значительно упрощает традиционный подход к нахождению значений синапсических весов при обучении нейронной сети без обратных связей и сводится к нетрудоемкой трассировке.
  • Обучение происходит в результате нахождения путей в исходном графе, описывающем связи между нейронами. Эти пути ведут от рецепторов, определяющих каждую ситуацию или образующих обобщенный эталон, к нейрону выходного слоя, указывающему на соответствующее решение. Дуги (связи), образующие путь, метятся максимальными (единичными) весами.
  • Алгоритм трассировки допускает неоднократное использование нейронов при отображении термов – общих логических конструкций в составе более чем одной логической функции, составляющей описание системы принятия решений. Таким образом, осуществляется "экономное" расходование нейронов сети.
  • Алгоритм трассировки допускает развитие структуры заданного графа в том случае, если связей в нем оказывается недостаточно. Необходимые связи вводятся автоматически.
  • Вопросы:

  • Когда возникает проблема обучения логической нейронной сети и в чем ее идея?
  • Как (на иллюстративном уровне) производится обучение нейронной сети заданной структуры распознаванию символов с помощью эталонных "ловушек"?
  • Как описание структуры логической нейронной сети с помощью матрицы следования способствует формальному решению задачи обучения?
  • Вводятся ли при обучении новые связи между нейронами, не отображенные в исходной структуре?
  • Как на основе анализа транзитивных связей корректируется обучаемая структура нейронной сети?
  • В чем заключается (на иллюстративном уровне) идея трассировки логической нейронной сети?
  • Страницы:

    Что означает обучение нейросети?

    — Аннушка… Аннушка?.. — забормотал поэт, тревожно озираясь, — позвольте, позвольте…

    К слову "Аннушка" привязались слова "подсолнечное масло", а затем почему-то "Понтий Пилат". Пилата поэт отринул и стал вязать цепочку, начиная со слова "Аннушка". И цепочка эта связалась очень быстро и тотчас привела к сумасшедшему профессору.

    … Бытует теоретико-практическая предпосылка, объявляющая, что нейросеть формируется "под задачу". Однако в природе есть идеальная, универсальная, "унифицированная" нейросеть — наш мозг!.. И каждый из нас не испытывает серьезных технических трудностей, если, совершая жизненную ошибку, становится не коммерсантом-коробейником, а, скажем, блестящим специалистом по реликтовым захоронениям в мезозойский период. Более того, говорят, что если человек талантлив в одном, то он талантлив во всем.

    Итак, мы научились строить уже обученные простейшие логические нейронные сети. Они обучены, ибо представляют собой законченные функциональные устройства специального назначения. Более того, мы умеем приводить их к однослойным сетям, - к таблицам с ассоциативной выборкой: на что более всего похож предъявленный образ, или на какую известную похожа сложившаяся ситуация, и какие действия предпринять?

    Однако столь несложные построения настораживают шефа. Он боится, что такие примитивные результаты обесценивают долгие и трудные поиски его коллектива.

    – Нет! – говорит он и открывает ящик стола. – Вот красивый и сложный граф с достаточным количеством входных и выходных вершин. Интерпретируйте его логической нейронной сетью и произведите обучение этой сети в соответствии с логическим описанием СПР!

    Под обучением логической нейронной сети понимается запись в ней причинно-следственных связей вида "если... то...". Эти связи создаются с помощью высоких значений одних синапсических весов при сохранении исходных низких значений других. Объясним это.

    Предварительно введем понятие обобщенного эталона .

    Под обобщенным эталоном будем понимать совокупное множество всех событий, фигурирующих в отдельном логическом выражении из описания СПР, такое, что единичное возбуждение закрепленных за ними рецепторов – части или всех одновременно - приводит к самому высокому возбуждению нейрона выходного слоя, указывающее на решение, соответствующее данному логическому выражению.

    Например, в примере о Васе, Пете Ко обобщенным эталоном , приводящим к решению R1, является А1В1С1С2С3С4С5. При этом, по смыслу задачи, единичное возбуждение получают комбинации А1В1С1, ..., А1В1С5. Обобщенный эталон , приводящий к решению R2 – А1В2В3С1С2С3 и т.д. Здесь знак указывает на взаимодействие событий с помощью функции активации. В общем случае логическое описание системы принятия решений (в виде ряда логических функций) может содержать скобки, которые нельзя игнорировать при обучении. Тогда эти скобки указываются в обобщенном эталоне на своих местах, возможно, - в порядке вложенности. Такие структурированные логические описания обсуждаются в [2, 4].

    Важно подчеркнуть, что обобщенный эталон отражает единственность вхождения переменных – событий. Это требование следует из того, что при переходе от логических переменных описания СПР к действительным (отображающим достоверность принадлежности) суррогатом логических операций становится некоторая функция активации. А в основе такой функции лежит операция сложения, то есть суммирования сигналов. Естественно, что эти сигналы должны при суммировании учитываться один раз.

    Таким образом, каждая логическая функция из описания СПР – прообраз обобщенного эталона - должна быть преобразована так, чтобы все ее переменные входили в текст лишь один раз. (Заметим, что эти преобразования служат не достижению абсолютной правильности выводов, а лишь максимизируют эту правильность. Мы приветствуем людей, мыслящих логично, воспроизводящих структурную взаимосвязь событий. Но чаще наблюдаем такую "кашу" в голове!)

    Указанное преобразование достигается "вынесением за скобки". Поскольку в основе операции вынесения за скобки в алгебре логики лежит симметричное свойство дистрибутивности конъюнкции относительно дизъюнкции и дизъюнкции относительно конъюнкции, то такое преобразование можно назвать дистрибутивным . Если дистрибутивное преобразование невозможно, выражение следует разбить относительно некоторой операции дизъюнкции (любое логическое выражение легко преобразуется в "дизъюнкцию конъюнкций") и для каждой части отдельно указать, что ее значение "истина" приводит к тому же самому решению. Этот прием называется размножением решений . В конечном итоге это и есть путь получения однослойных логических нейронных сетей.

    Итак, события, приводящие к единичному значению сигналов возбуждения на соответствующих им рецепторах, должны привести к самому высокому значению сигнала на соответствующем нейроне выходного слоя. То есть, заданная комбинация единичных сигналов на входе должна привести к максимальному (по сравнению с другими) сигналу на определенном выходе.

    Это достигается прокладкой трассы от всех рассматриваемых входных сигналов к требуемому нейрону выходного слоя через промежуточные нейроны, если сеть не однослойная. Эта трасса строится с помощью комбинации высоких весов "попутных" связей. Практически, выбранные для этого веса полагаются равными единице.

    Обучение логической сети таким методом называется трассировкой – по аналогии с некоторыми задачами электронной схемотехники. Там таким способом, на основе набора (матрицы) элементов, изначально связанных между собой "проводочками", создается замысленное функциональное устройство. При этом существование одних "проводочков" подтверждается (их вес высок, так как сопротивление низко), а ненужные "проводочки" можно и "перекусить".

    Алгоритмы трассировки по обобщенным эталонам , как не содержащим скобки, так и содержащим их, исключительно просты и нетрудоемки. Они основаны на анализе матрицы следования , описывающей логическую нейронную сеть, и приведены в [1 - 4]. Здесь приводятся примеры.

    Следует отметить, что эти алгоритмы предусматривают введение дополнительных связей в том случае, если предоставленных изначально связей оказалось недостаточно. (Не бросать же негодную сеть шефу в лицо!)

    Обучение нейросети для распознавания букв

    Продолжим рассмотрение примера в разделе 2.1. Теперь предположим, что структура сети (рис.4.1), а также функция активации, заданы, и нам предстоит обучить сеть распознаванию букв О и А.

    Пусть экран разбит на столько же клеток что и ранее, и мы убеждаемся лишь в том, что предложенная нейросеть содержит не менее 12 нейронов входного слоя, и не менее двух нейронов выходного слоя.

    (рис 4.1) Нейросеть, подлежащая обучению

    Функция активации нейрона, в частности, заданная нам или выбранная нами сознательно, имеет вид

    $$V=\sum \limits_j \omega_j V_j$$ $$V_i= \begin{cases} V,\text{если V>h}\\ 0,\text{в противном случае} \end{cases}$$

    Здесь $$\omega_j$$ — синапсический вес входа или вес связи, по которой передается возбуждение от нейрона j нейрону i.

    Тогда задачей обучения – трассировки является выбор единичных весов некоторых связей и нулевых весов других связей так, чтобы в соответствии с функциональным назначением сети сложились отношения "посылка — следствие", подобные тем, которые мы создали выше при построении уже обученной сети. Они переводят возбуждение рецепторов, образующееся при "показе" эталонов и образов, в максимальное возбуждение тех нейронов выходного слоя, которые говорят "что это такое".

    На рис.4.2 приведен результат такой трассировки для нашего примера, где выделенные стрелки соответствуют связям с единичными весами, а другие — с нулевыми.

    Задав несколько, в том числе "неопределенных" образов на входе, можно убедиться в ее правильной работе, хотя и демонстрирующей изначально выбранное слабое отличие О от А. Выбором значения h можно добиться того, чтобы "чужие" символы отсеивались.

    (рис 4.2) Обученная нейросеть

    Получилась интересная игра. Мы задаем на входе случайные возбуждения и спрашиваем: на что это больше похоже из того, что "знает" нейросеть? Все, что надо сделать, это посчитать в едином цикле или параллельно для всех нейронов значение функции активации и сравнить величины возбуждения нейронов выходного слоя, преодолевшие порог.

    Обучение нейросети игре в железнодорожную рулетку

    Еще глубже погрузимся в изучение проблемы обучения логической нейронной сети. Ранее нам были известны условия игры в железнодорожную рулетку, а мы создали сеть. Теперь пусть нам задана нейросеть, а мы обучим ее игре в рулетку.

    Нарисуем некоторый ориентированный ациклический граф (рис.4.3), привлекательный для заказчика, и вложим в него смысл нейросети, поставив в соответствие его вершинам-нейронам (кроме предполагаемых рецепторов) рассмотренную ранее функцию активации

    $$V_i=\sum \limits_j V_j - h$$

    где j — индекс нейрона, "передающего" свое возбуждение данному нейрону, h — порог.

    (рис 4.3) Нейросеть, предложенная для обучения

    Матрица следования

    В представленном виде нейронная сеть не годится для формальных исследований, тем более, - на компьютере. Поэтому используются матрицы следования , отображающие как взаимодействие нейронов, так и веса синапсических связей.

    Для данного случая матрица следования показана на рис.4.4.

    Здесь непустые элементы означают наличие связей, а указанные в них значения соответствуют первоначально заданным нулевым весам этих связей.

    (рис 4.4) Матрица следования для обучаемой нейросети

    В результате выполнения алгоритма обучения логической нейронной сети методом трассировки формируются единичные веса некоторых связей так, чтобы сигналы, характеризующие каждую ситуацию, в наибольшей степени возбуждали поставленные им в соответствие нейроны выходного слоя. Если первоначально заданных связей не хватает, то допускается введение дополнительных связей с единичными весами.

    Окончательный результат обучения нейронной сети методом трассировки показан на рис.4.5, где выделены связи с единичными весами. (Другие "проводочки" мы могли бы перекусить.) Так как первоначальных связей оказалось недостаточно, пришлось ввести дополнительные "проводочки" с единичными весами (с нулевым сопротивлением). Матрица следования для обученной нейронной сети представлена на рис.4.6.

    (рис 4.5) Обученная нейронная сеть (рис 4.6) Матрица следования для обученной нейронной сети

    Но радоваться рано. Посчитаем с помощью нашей функции активации величины возбуждения нейронов для, например, ситуации A1B2: $$V_1 = 0, V_2 = 1, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 0$$. Ни один нейрон выходного слоя не возбудился! То же — для ситуаций A1B1 и A2B1. Рассчитаем ситуацию A2B2: $$V_1 = 0, V_2 = 0, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 1$$. Мы видим, что построенная нейросеть распознает единственную ситуацию, заданную четко.

    Анализируя, мы убеждаемся, что в процессе распространения по сети возбуждение "гаснет", не доходя до выходного слоя. Тогда мы начинаем "подкручивать" пороги, уменьшая их. Но тотчас замечаем другую неприятность: величины возбуждения нейронов выходного слоя различны для разных ситуаций, ибо различна длина путей возбуждения. Это является следствием не аддитивности функции активации, что затрудняет правильное участие нейронов в следующих логических слоях, когда данный выходной слой является входным для следующего логического уровня сети. Мы видим, что наша функция активации не годится для выбранной структуры нейросети.

    В предыдущем разделе, посвященном распознаванию символов, была использована "хорошая" функция активации, определяющая величину Vi возбуждения нейрона:

    $$V_i= \begin{cases} 0,\ если\ V=\sum \limits_j \omega_j V_j \le h}\\ \sum \limits_j \omega_j V_j,\ в\ противном\ случае} \end{cases}$$

    Рассчитайте и убедитесь, что, например, для $$h = 1$$ сеть правильно распознает все эталонные ситуации, обеспечивая равную величину возбуждения нейронов выходного слоя. Так, при ситуации A1B1 получаем следующие величины возбуждения нейронов: $$V_1 = 2, V_2 = 0, V_3 = 0, V_{R1} = 2, V_{R2} = 0, V_{R3} = 0, V_{R4} = 0$$. Аналогично, — для ситуаций A1B2 и A2B1. Для ситуации A2B2 находим $$V_1 = 0, V_2 = 0, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 2$$.

    Сеть работает прекрасно, гарантируя правильность реакции на недостоверные ситуации, и позволяя находить среднее.

    А главное, сколько прекрасных вариантов развития имеет игра, стимулируя наше предвидение! Например, что, если скорость паровозов — величина переменная и случайная, так же как и чередование и длина однопутных участков, и решение следует принимать и корректировать в динамике, в зависимости от длины пройденного пути и значения скорости? Что, если один машинист охвачен идеей суицида, а другой желает уклониться от столкновения? и т.д., и т.д. (Бедные линейные!)

    Обучение нейросети для "современной" системы принятия решений

    Продвинемся еще на шаг по пути иллюстративного освоения принципов обучения логической нейронной сети.

    Выберем нейросеть, отражающую, как нам кажется, все особенности, которые необходимо учесть при построении алгоритма трассировки, и, как мы уже начали, возьмем пример из 2.3, который в терминах обобщенных эталонов выглядит теперь следующим образом:

    A1B1C1C2C3C4C5 $$\to$$ R1

    A1B2B3C1C2C3 $$\to$$ R2

    A1B2B3C4C5 $$\to$$ R3 (4.1)

    A2B3C1C2C3C4C5 $$\to$$ R4

    A2B1B2C1C2C3C4C5 $$\to$$ R5

    Мы хотим, задавая обобщенный эталон на входе, например, из тех, что приведены выше, экономным путем построить, возможно, пересекающиеся пути возбуждения, ведущие от каждого возбужденного входного нейрона в соответствующий нейрон выходного слоя. Способ должен быть экономным в том смысле, что пути должны быть максимально объединены, совмещены, реализуя стратегию слияния и выхода на общую, единую дорогу, ведущую к заветной цели.

    При этом мы используем приведенный в [6, 7] эвристический алгоритм, который крайне экономно расходует ресурсы сети — ее нейроны и связи, но и так же экономно вводит изменения, развивает сеть, если связей оказывается недостаточно.

    Ибо мы видели, с каким трудом удается приспособить "готовую" нейросеть под конкретную задачу. Мы постоянно склонялись к вопросу: "А не лучше ли сразу строить сеть "под задачу", а не наоборот?" Нам кажется, мы нашли диалектический компромисс: беря что-то близкое, подходящее, мы минимально переделываем, словно костюм с жмущим гульфиком, купленный в универсальном магазине. Кроме того, нам очень важно сделать алгоритм доступным широким массам студенческой молодежи, овладевшей основами таинства параллельного программирования!

    Пусть выбранная нейросеть представлена на рис.4.7, где первоначально заданные связи обозначены тонкими стрелками. Строим соответствующую матрицу следования S и в ней — транзитивные связи (рис.4.8), определяющие транзитные пути попадания в каждый нейрон. Проверяем, все ли нейроны выходного слоя достижимы из любого нейрона входного слоя. Если нет, считаем, что сеть составлена не корректно.

    В данном случае из нейрона В1 не исходит ни одного пути, заканчивающегося нейроном Вых5. Это следует из того, что в строке, соответствующей нейрону Вых5, нет даже транзитивной связи в столбце, соответствующем нейрону В1. То же касается нейрона В3.

    Введем синапсические связи В1 $$\to$$ Вых5 и В3 $$\to$$ Вых5 что и отмечено на рис.4.6 жирными стрелками, а на рис.4.7 – нулевыми весами введенных связей.

    (рис 4.7) Нейросеть, подлежащая обучению (рис 4.8) Матрица следования с транзитивными связями

    По первому выражению в (4.1) сформируем статический путь возбуждения {B1, A1, C1, C2, C3, C4, C5} $$\to$$ Вых1, объединяющий только интересующие нас сейчас нейроны и учитывающий только те связи, что могут быть основой необходимой трассы, и отобразим его матрицей $$S_1$$[B1,A1,C1,C2,C3,C4,C5 $$\to$$ Вых1] на рис.4.9. Эта матрица формируется на основе матрицы S вычеркиванием всех строк и столбцов, которые соответствуют не интересующим нас нейронам.

    (рис 4.9) Матрица следования S1 для обучения первому эталону

    Пытаясь сымитировать прокладываемые пути возбуждений, снабдим все нейроны входного слоя, отраженные в этой матрице, признаком "возбужден".

    Найдем входы матрицы $$S_1$$ (пустые строки), обладающие признаком "возбужден". Выделим в одну совокупность соответствующие им столбцы, в данном случае столбцы 1 - 7, и найдем в ней строку, содержащую максимальное число "нулей", — строку, соответствующую нейрону 6. Заменяем в этой строке (в выделенной совокупности столбцов) "нули" "единицами", т.е. максимально увеличиваем соответствующие веса. Присваиваем нейрону 6 признак "возбужден", а также значение $$m_6$$ = 5, характеризующее то количество нейронов, "возбуждение" которых мы "собрали" на входе этого нейрона. Впредь мы можем только повторно использовать этот нейрон, но менять веса связей на его входе мы не должны. Изменение весов отображаем в матрице S.

    Исключаем из матрицы $$S_1$$ строки и столбцы, соответствующие нейронам С1, С2, С3, С4, С5. Новый вид матрицы $$S_1$$ представлен на рис.4.10.

    (рис 4.10) Первый шаг преобразования матрицы следования S1

    Вновь выделяем столбцы, соответствующие "возбужденным" входам матрицы. Это столбцы, соответствующие нейронам В1, А1, 6. Находим строку в выделенной совокупности столбцов, имеющую максимальное число "нулей". Такая строка соответствует нейрону 11. Заменяем в этой строке (в выделенной совокупности столбцов) "нули" "единицами", т.е. максимально увеличиваем веса. Присваиваем нейрону 11 признак "возбужден" и значение $$m_{11}$$ = 3. Отражаем изменение весов в матрице S.

    Исключаем из матрицы $$S_1$$ строки и столбцы, соответствующие нейронам В1, А1, 6. Матрица принимает вид, изображенный на рис.4.11.

    (рис 4.11) Второй шаг преобразования матрицы следования S1

    Исключаем из матрицы все входы, которые соответствуют нейронам 1, 2, 3, 4, 5, не обладающим признаком "возбужден". Ведь строящийся нами путь возбуждения уже миновал эти нейроны! Исключение этих нейронов породит новые нейроны, нуждающиеся в исключении по той же причине, — нейроны 9 и 10.

    (Последовательное исключение сверху вниз динамически учитывает появление таких нейронов и гарантирует полное исключение за один проход.) Матрица $$S_1$$ примет вид на рис.4.12.

    (рис 4.12) Последний шаг преобразования матрицы следования S1

    Теперь в первом столбце имеется единственная строка с "нулем" — соответствующая нейрону Вых1. Меняем "нуль" на "единицу" — получаем окончательный возможный путь возбуждения по заданному эталону. Изменения отражаем в матрице S.

    (рис 4.13) Нейросеть, обученная первому эталону

    Мы не будем приводить новый вид матрицы следования S, а на изображении самой сети (рис.4.13) выделим темным построенную трассу.

    Реакции на один обобщенный эталон мы сеть научили.

    По сети на рис.4.13 или по матрице на рис.4.8 (с учетом частичного обучения!) построим (рис.4.14) матрицу статического пути возбуждения $$S_2$$ [B2, B3, A1, C1, C2, C3 $$\to$$ Вых2].

    (рис 4.14) Первоначальный вид матрицы следования S2 для обучения второму эталону

    Нейрон 6 ранее "объединил" возбуждение пяти нейронов: С1, С2, С3, С4, С5, т.е. в матрице S в соответствующей строке содержится пять единиц и $$m_6 = 5$$. Однако в составленной матрице $$S_2$$ в строке, соответствующей этому нейрону, присутствуют лишь три единицы. Значит, этот нейрон не может быть использован для трассировки необходимого пути возбуждения, т.к. комбинация С1С2С3С4С5 нам здесь не нужна.

    То же следует сказать и о нейроне 11.

    Исключим из данной матрицы строки и столбцы, соответствующие нейронам 6 и 11. Матрица примет вид, показанный на рис.4.15. Так как она не содержит единиц, то ее трассировка не привлечет новых особенностей. Результат обучения второму эталону представлен на рис.4.16.

    (рис 4.15) Матрица следования S2 для обучения второму эталону (рис 4.16) Нейросеть после обучения двум эталонам

    Обучим сеть третьей ситуации, требующей решения R3. Закрепим за этим решением нейрон Вых3. Матрица $$S_3$$ [B2, B3, A1, C4, C5 $$\to$$ Вых3] представлена на рис.4.17.

    (рис 4.17) Матрица следования S3 для обучения третьему эталону (начальный вид)

    Исключаем из матрицы $$S_3$$ представительство тех ранее использованных ("возбужденных") нейронов, для которых значение m (указано в дополнительном столбце матрицы) превышает количество единиц в соответствующей строке. Это значит, что эти нейроны "собрали" уже возбуждение нейронов, которые в данном пути возбуждения, т.е. в матрице $$S_3$$, не используются. Это нейроны 4, 5, 6, 11. Переиспользование их невозможно.

    Повторяем попытки исключения из матрицы $$S_3$$ представительство тех нейронов, для которых значение m стало превышать количество единиц в соответствующей строке. И так далее — до исчерпания этой возможности.

    В данном случае нам придется исключить из рассмотрения (вследствие исключения нейронов 4 и 5) нейроны 10 и 12. Матрица $$S_3$$ примет окончательный вид на рис.4.18.

    (рис 4.18) Окончательный вид матрицы следования S3 для обучения третьему эталону

    Присваиваем всем нейронам, образующим входы матрицы, признак "возбужден".

    Выделяем и объединяем столбцы, соответствующие входам матрицы $$S_3$$.

    Отобразим новую особенность алгоритма трассировки, обусловленную наличием в матрице $$S_3$$ "единиц".

    А именно, в выделенных столбцах находим строку, содержащую хотя бы одну единицу. Она (строка) представляет тот нейрон, который "собрал" (при анализе предыдущих эталонов) возбуждение одного или более нейронов, образующих входы. Эти нейроны, "передавшие" свое возбуждение, могут быть исключены из рассмотрения. Среди таких строк выбираем строку с максимальным числом единиц.

    Так, нейрон 1 возбужден единственным нейроном, принадлежащим текущему множеству входов матрицы, — нейроном В3. Впредь он представляет этот нейрон, который может быть исключен из рассмотрения. Матрица $$S_3$$ принимает вид на рис.4.19.

    (рис 4.19) Первый шаг преобразования матрицы следования S3

    Подтверждаем нейрону 1 признак "возбужден" и превращаем его во вход матрицы $$S_3$$ , уничтожив веса в его строке.

    Вновь находим множество входов матрицы и выделяем соответствующие им столбцы. Пытаемся найти строку, содержащую единицы в этих и только этих столбцах, но таких больше нет. Тогда находим строку, содержащую максимальное число нулей. Первая такая строка соответствует нейрону 2. "Объединяем" на нем возбуждение нейронов В2 и А1, заменяя нули единицами. Полагаем m2 = 2, исключаем нейроны В2 и А1 из рассмотрения, присваиваем нейрону 2 признак "возбужден". Отражаем сделанные изменения весов в матрице S.

    (рис 4.20) Нейросеть после обучения третьему эталону

    Исключаем входы, не обладающие признаком "возбужден", — нейроны 3 и 5. Продолжая процесс подобно предыдущему, получаем результат обучения трем эталонам (рис.4.20).

    Окончательный вид полностью обученной нейронной сети представлен на рис.4.21, где, напоминаем, веса, принявшие значение 1, в том числе введенные дополнительно, соответствуют жирным стрелкам.

    (рис 4.21) Обученная нейросеть

    Ключевые термины

  • Обучение нейронной сети – фиксирование причинно-следственных связей между ситуациями и следующими им решениями с помощью значений синапсических весов. Связи находятся так, чтобы при "единичном" возбуждении рецепторов, отражающих ситуацию, максимально возбуждался нейрон выходного слоя, указывающий на принимаемое решение.
  • Обобщенный эталон – множество значений исходных факторов, возможно, отражающих не единственную ситуацию, приводящих к одному решению. Формируется для каждой отдельной логической функции описания системы принятия решений.
  • Трассировка нейронной сети – обучение с помощью формирования трасс: совокупности путей, ведущих от рецепторов, определяющих обобщенный эталон, к нейрону выходного слоя, соответствующего решению. Трасса отмечается "единичными" весами использованных в ней связей.
  • Матрица следования – отображает матричное описание логической нейронной сети. Представляет удобный аппарат формальных преобразований для трассировки и расчетов.
  • Транзитивные связи – отражают не непосредственные связи между нейронами, а их совместное участие в некоторой логической цепочке.
  • Дистрибутивное преобразование – приведение логической функции к виду "дизъюнкции конъюнкций", то есть, к такому виду, при котором отдельные высказывания о значениях факторов объединены операцией И (в конъюнкции), а несколько таких конъюнкций объединены операцией ИЛИ (дизъюнкцией). Такое преобразование в основном использует известное из булевой алгебры свойство дистрибутивности конъюнкции относительно дизъюнкции и дизъюнкции относительно конъюнкции.
  • Размножение решений – постановка каждой "конъюнкции", образованной в результате дистрибутивного преобразования, того решения, которое соответствует значению ИСТИНА всего логического выражения.
  • Статический путь возбуждения – множество всех путей в графе, ведущих от выделенного множества входных вершин в некоторую выходную вершину.
  • Краткие итоги

  • Построение нейронной сети на основе достоверности высказываний о принадлежности данных значительно упрощает традиционный подход к нахождению значений синапсических весов при обучении нейронной сети без обратных связей и сводится к нетрудоемкой трассировке.
  • Обучение происходит в результате нахождения путей в исходном графе, описывающем связи между нейронами. Эти пути ведут от рецепторов, определяющих каждую ситуацию или образующих обобщенный эталон, к нейрону выходного слоя, указывающему на соответствующее решение. Дуги (связи), образующие путь, метятся максимальными (единичными) весами.
  • Алгоритм трассировки допускает неоднократное использование нейронов при отображении термов – общих логических конструкций в составе более чем одной логической функции, составляющей описание системы принятия решений. Таким образом, осуществляется "экономное" расходование нейронов сети.
  • Алгоритм трассировки допускает развитие структуры заданного графа в том случае, если связей в нем оказывается недостаточно. Необходимые связи вводятся автоматически.
  • Вопросы:

  • Когда возникает проблема обучения логической нейронной сети и в чем ее идея?
  • Как (на иллюстративном уровне) производится обучение нейронной сети заданной структуры распознаванию символов с помощью эталонных "ловушек"?
  • Как описание структуры логической нейронной сети с помощью матрицы следования способствует формальному решению задачи обучения?
  • Вводятся ли при обучении новые связи между нейронами, не отображенные в исходной структуре?
  • Как на основе анализа транзитивных связей корректируется обучаемая структура нейронной сети?
  • В чем заключается (на иллюстративном уровне) идея трассировки логической нейронной сети?
  • Вернуться к учебному плану