Опубликован: 12.09.2011 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет путей сообщения
Лекция 4:

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

< Лекция 3 || Лекция 4: 123 || Лекция 5 >

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

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

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

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

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

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

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

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

 Обученная нейронная сеть

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

Рис. 4.6. Матрица следования для обученной нейронной сети

Но радоваться рано. Посчитаем с помощью нашей функции активации величины возбуждения нейронов для, например, ситуации A1&B2: V_1 = 0, V_2 = 1, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 0. Ни один нейрон выходного слоя не возбудился! То же — для ситуаций A1&B1 и A2&B1. Рассчитаем ситуацию A2&B2: 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 сеть правильно распознает все эталонные ситуации, обеспечивая равную величину возбуждения нейронов выходного слоя. Так, при ситуации A1&B1 получаем следующие величины возбуждения нейронов: V_1 = 2, V_2 = 0, V_3 = 0, V_{R1} = 2, V_{R2} = 0, V_{R3} = 0, V_{R4} = 0. Аналогично, — для ситуаций A1&B2 и A2&B1. Для ситуации A2&B2 находим V_1 = 0, V_2 = 0, V_3 = 0, V_{R1} = 0, V_{R2} = 0, V_{R3} = 0, V_{R4} = 2.

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

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

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

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

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

A1&B1&C1&C2&C3&C4&C5 \to R1

A1&B2&B3&C1&C2&C3 \to R2

A1&B2&B3&C4&C5 \to R3 (4.1)

A2&B3&C1&C2&C3&C4&C5 \to R4

A2&B1&B2&C1&C2&C3&C4&C5 \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 вычеркиванием всех строк и столбцов, которые соответствуют не интересующим нас нейронам.

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

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

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

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

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

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

Рис. 4.10. Первый шаг преобразования матрицы следования S1
< Лекция 3 || Лекция 4: 123 || Лекция 5 >
Кирилл Артамонов
Кирилл Артамонов

"Тогда как задать возбуждение рецепторов, если инспектор точно установил, что скорость автомобиля при наезде на пешехода была равна 114 км/час?
По-видимому, он рассуждает на основе близости скорости к границам указанного интервала: "Достоверность того, что скорость автомобиля составляет 100 км/час, я найду как (114 – 100):(120 – 100), а достоверность того, что скорость автомобиля составляет 120 км/час, я найду как (120 – 114):(120 – 100). Следует обратить внимание на то, что сумма найденных достоверностей равна единице."

Вопрос по расчёту скорости и сумме достоверности: этот математический (приведенный выше в виде контекста из материала лекции 1, страницы 3) метод справедлив к скоростным показателям выходящим за рамки диапазона 100-120. 
То есть, практически применяв к расчёту, скорости из диапазона 114-155, к диапазону 100-120, получал в результате суммирования достоверностей единицу.
Это похоже на то, как я видимые разные скоростные показатели своим рецептором, буду воспринимать линейно с помощью одного диапазона, так как он универсален. 
Правильно ли это ? 
И как манипулировать данными показателями, если есть универсальный диапазон, по результату выводящий в сумме постоянно единицу на разных скоростных показателях стремящегося.

Владислав Гладышев
Владислав Гладышев

А как проходить курс ? я же могу прямо сейчас все лекции прочитать и здать экзамен, к чему там даты ? 

Александр Сериков
Александр Сериков
Россия, Москва, МВТУ им. Баумана Н.Э.
Евгений Резниченко
Евгений Резниченко
Россия