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

Структурное обоснование логической нейронной сети

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >

Продемонстрируем алгоритм трассировки, введя, по сравнению с рассмотренным в "Трассировка нейронной сети" , некоторые упрощения.

Компьютерная обработка нейросети значительно упрощается, если сеть представлена матрицей следования S (рис. 9.6), где наличие связи обозначается ее весом.

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

Рис. 9.6. Матрица следования
  1. Произведем трассировку возбуждений нейронов {A1, B1} -> R1.

    Исключим из матрицы S строки и столбцы, соответствующие не интересующим нас нейронам входного и выходного слоев. Матрица примет вид S1 на рис. 9.7.

    Матрица следования для трассировки первого решения

    Рис. 9.7. Матрица следования для трассировки первого решения

    Моделируем прохождение возбуждения следующим образом.

    Присвоим нейронам, соответствующим нулевым строкам - входам матрицы S1 признак "возбужден". Выделим столбцы, соответствующие этим входам. В совокупности этих столбцов найдем первую строку, содержащую максимальное число нулей. Эта строка соответствует нейрону 1. Заменяем нули единицами (увеличиваем веса), введенные изменения отражаем в матрице S. К матрице S присоединяем столбец (чтобы не отягощать пример, мы этого не сделали, но учитываем его наличие в последующих построениях), в каждой позиции которого указывается число введенных единиц в строке. В данном случае в строке этого столбца, соответствующей нейрону 1, записываем т1 = 2. Это необходимо для возможности "переиспользования" нейронов при получении других решений. Исключаем из матрицы S1 строки и столбцы, "передавшие" свое возбуждение. Нейрону 1 присваиваем признак "возбужден". Матрица S1 принимает вид на рис. 9.8.

    Шаг преобразования матрицы следования

    Рис. 9.8. Шаг преобразования матрицы следования

    Исключаем из матрицы S1 строки и столбцы, соответствующие входам, не отмеченным признаком "возбужден". Эти строки соответствуют нейронам 2 и 3. Матрица S1 принимает вид как на рис. 9.9.

    Шаг преобразования матрицы следования

    Рис. 9.9. Шаг преобразования матрицы следования

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

    Не приводя промежуточного рисунка, отметим, что мы подтвердили высоким весом (единичным) связи А1-> 1, В1 -> 1, 1 -> R1.

  2. Произведем трассировку {A1, B2} -> R2.

    Сформируем матрицу S2, исключив из рассмотрения нейроны A2, B1, R1, R3, R4 (рис. 9.10).

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

    Рис. 9.10. Матрица следования для трассировки второго решения

    Строка, соответствующая нейрону 1, содержит одну единицу при том, что т1 = 2. Исключаем из рассмотрения и этот нейрон, как не годный к переиспользованию. Матрица S2 принимает вид как на рис. 9.11.

    Шаг преобразования матрицы следования

    Рис. 9.11. Шаг преобразования матрицы следования

    (Для краткости изложения мы не рассматриваем транзитивные связи, легко вводящиеся в матрицу следования. Тогда мы могли бы исключить из рассмотрения нейрон 3, так как нет связи 3 -> R2.)

    Присваиваем строкам, соответствующим входам матрицы S2, признак "возбужден". Находим в совокупности соответствующих им столбцов строку, содержащую максимальное число нулей. Это строка, соответствующая нейрону 2. Заменяем в ней нули единицами, что отмечаем в матрице S. Полагаем т2 = 2. Присваиваем нейрону 2 признак "возбужден", а нейроны А1 и В2 исключаем из рассмотрения. Среди оставшихся строк оказывается "пустая" строка, которая соответствуюет нейрону 3, не обладающему признаком "возбужден". Исключаем и ее, вместе с соответствующим столбцом. Матрица S2 принимает вид как на рис. 9.12.

    Шаг преобразования матрицы следования

    Рис. 9.12. Шаг преобразования матрицы следования

    Повторение очевидных действий приводит к замене оставшегося нуля единицей.

    Таким образом, в результате трассировки на данном шаге сложились связи с единичными весами A1 -> 2, B2 -> 2, 2 -> R2.

  3. Повторив схему построений, легко найдем связи с единичными весами A2 -> 3, B1 -> 3, 3 -> R3, в результате трассировки {A2, B1} -> R3.
  4. А вот трассировка последнего пути возбуждения, {A2, B2} -> R4, преподносит сюрприз, следующий из "слоистости" сети. (Сравните с сетью на рис. 9.4, где в этом смысле допустимы связи через слой.)

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

    Матрица следования для трассировки четвертого решения

    Рис. 9.13. Матрица следования для трассировки четвертого решения

    Придется их ввести, да еще с единичными весами. Ведь мы готовы создавать нужную нам сеть, а не обязаны приспосабливаться. Да и что мы можем сделать - только отвергнуть эту сеть и искать новую? Мы видим, что больше трех эталонов эта сеть все равно не способна воспринять. Таким образом, мы вводим дополнительные связи с единичными весами A2 -> R4, B2 -> R4.

    Окончательно обученная сеть представлена на рис. 9.14, где выделены связи с единичными весами. (Другие "проводочки" мы могли бы перекусить.)

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

Рис. 9.14. Обученная нейросеть

Но радоваться рано. Посчитаем с помощью нашей передаточной функции величины возбуждения нейронов для, например, ситуации A1&B2: V1 = 0, V2 = 1, V3 = 0, VR1 = 0, VR2 = 0, VR3 = 0, VR4 = 0. Ни один нейрон выходного слоя не возбудился! То же - для ситуаций A1&B1 и A2&B1. Рассчитаем ситуацию A2&B2: V1 = 0, V2 = 0, V3 = 0, VR1 = 0, VR2 = 0, VR3 = 0, VR4 = 1. Мы видим, что построенная нейросеть распознает единственную ситуацию.

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

Но мы же располагаем свободой выбора, которая допускает условности, вероятно, нереализованные в природе, находящейся в жестких рамках установленных законов и средств.

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

V=\left\{ 
\begin{array}{ll} 
0, & \mbox{если}\: \sum_i \omega_i V_i \le h, \\
\sum_i \omega_i V_i, & \mbox{в противном случае}
\end{array}
\right

Рассчитайте и убедитесь, что, например, для h = 1 сеть правильно распознает все эталонные ситуации, обеспечивая равную величину возбуждения нейронов выходного слоя. Так, при ситуации A1&B1 получаем следующие величины возбуждения нейронов: V1 = 2, V2 = V3 = 0, VR1 = 2, VR2 = VR3 = VR4 = 0. Аналогично - для ситуаций A1&B2 и A2&B1. Для ситуации A2&B2 находим V1 = V2 = V3 = 0, VR1 = VR2 = VR3 = 0, VR4 = 2.

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

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

< Лекция 8 || Лекция 9: 12345 || Лекция 10 >
Эльвира Герейханова
Эльвира Герейханова

Раньше это можно было зделать просто нажав на тест и посмотреть результаты а сейчас никак

Елена Лобынцева
Елена Лобынцева
Помогите разобраться как можно подобрать НС для распознавания внутренней области выпуклого многоугольника?
Дмитрий Степанов
Дмитрий Степанов
Россия, Москва, МГТУ им. Баумана, 2006
Дмитрий Степаненко
Дмитрий Степаненко
Россия