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

Трассировка нейронной сети

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

4.2. Алгоритм трассировки нейросети

В результате решения примера сформировались и даже стали привычными действия, на основе которых мы можем сформулировать

Алгоритм трассировки (обучения по обобщенным эталонам ) нейросети

  1. Дополняем матрицу следования S транзитивными связями по алгоритму, представленному в "Построение современной нейросетевой технологии" .
  2. Все нейроны выходного слоя не должны иметь в соответствующих им строках "пустых" элементов в позициях, соответствующих нейронам входного слоя. Пустой элемент указывает на отсутствие пути возбуждения от соответствующего нейрона входного слоя. Мы будем считать нейросеть построенной некорректно и нуждающейся во внесении дополнительных связей, например, непосредственно от нейрона входного слоя к нейрону выходного слоя.
  3. Организуем перебор всех обобщенных эталонных ситуаций и соответствующих им решений, последовательно закрепляя нейроны выходного слоя Выхi за обобщенными ситуациями. Для каждой обобщенной ситуации выполняем пункты 4-15.
  4. Для обобщенного эталона i ( i = 1, 2, ..., m ) строим матрицу следования Si[Vi1, Vi2, ..., Vir -> Выхi], где Vi1, Vi2, ..., Vir - нейроны входного слоя, возбуждающиеся (до максимальной величины) при подаче обобщенного эталона, т.е. характеризующие ситуацию.
  5. В матрице Si последовательно, сверху вниз, вычеркиваем строки (и соответствующие столбцы), которые содержат количество единиц меньше значения m, указанного при строке.

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

  6. Присваиваем признак "возбужден" всем нейронам входного слоя, представленным в матрице Si.
  7. Проверяем: содержит ли матрица Si более одной строки? Если содержит, выполняется следующий пункт, в противном случае выполняется пункт 3.
  8. Исключаем из матрицы Si строки и столбцы, соответствующие нейронам–входам, не обладающим признаком "возбужден".
  9. Выделяем множество столбцов матрицы Si, обладающих признаком "возбужден".
  10. Выполняем действие, отраженное в пункте 5 (во внешнем цикле): исключаем из текущего вида матрицы Si строки (и столбцы), которые содержат количество единичных элементов меньшее, чем указанное при строке значение m.

    Примечание. Такое действие необходимо после каждого вычеркивания строк и столбцов.

  11. В совокупности выделенных столбцов находим (если таковая имеется) первую строку, содержащую максимальное число единиц и не содержащую единиц в других столбцах. (Число найденных единиц не должно быть меньше соответствующего значения m.) Соответствующий ей нейрон может быть переиспользован. Если такой строки найти не удается, выполняем пункт 13.
  12. Исключаем из рассмотрения нейроны (вычеркиваем строки и столбцы) которым соответствуют единицы в найденной строке. Присваиваем нейрону, соответствующему выделенной строке, признак "возбужден". Уничтожаем в выделенной строке все нули и символы транзитивных связей, если они имеются, - превращаем строку во вход матрицы Si.

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

    Переходим к выполнению пункта 7.

  13. В совокупности выделенных столбцов находим, если таковая имеется, первую строку, содержащую максимальное число нулевых элементов. Если такой строки найти не удается, выполняем пункт 15.
  14. Меняем значение возбуждения соответствующих связей, то есть заменяем нули единицами. Присваиваем нейрону, соответствующему выделенной строке, значение m, равное количеству единиц в строке, и признак "возбужден". Исключаем из рассмотрения нейроны (вычеркиванием строк и столбцов), "передавшие" свое возбуждение найденному нейрону.

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

    Внесенные изменения весов учитываем в матрице S. Переходим к выполнению пункта 7.

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

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

    Переходим к выполнению шага 7.

Описание алгоритма закончено.

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

Так, в нашем случае удачно сложился терм в результате связи [C1, C2, C3, C4,C5 -> 6 ]. Он использовался при получении трех решений по эталонным ситуациям – R1, R4, R5. По-видимому, целесообразны термы в результате объединения С1, С2, С3, а также С4 и С5, В1 и В2 и др.

Мы предлагаем читателю самому произвести трассировку сети, представленной на рис. 2.14, по предложенному алгоритму. Избежит ли он введения дополнительных связей? Мы не знаем. Но, во-первых, мы строим простой, нетрудоемкий алгоритм; во-вторых - мы же раньше говорили о нецелесообразности экономии! При такой скудости наших знаний на что нам тратить сто миллиардов нейронов с десятью тысячами дендритов каждый?!

4.3. Приведение нейросети после трассировки

Зафиксируем передаточную функцию, например

\begin{array}{l}
V:= \sum_j \omega_j V_j \\
V_i := if\: V > h\: then \: V else \: 0\end{array}

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

Рассмотренный выше пример нехарактерен. В нем каждый эталон приводил, при данной передаточной функции, к одинаковой величине возбуждения нейронов выходного слоя. Но, например, при распознавании знаков алфавита величины возбуждения нейронов выходного слоя, в ответ на предъявление различных эталонов, могут быть различными. Так, в первом примере "Основы нейросетевых технологий" для записи буквы О потребовалось возбуждение шести нейронов-рецепторов, а для записи буквы А – восьми рецепторов. Очевидно, эталон латинской I "засветит" на входном слое (на клетчатке) меньшее число нейронов, чем, скажем, буква Q, но значительно большее число, чем необходимо для записи запятой. Значит, при рассматриваемых простейших видах передаточной функции величины возбуждения на выходе будут существенно различаться.

Тогда закрадывается подозрение: а не приведет ли некоторое незначительное искажение ситуации А, логично требующее все же решения RA, в сторону ситуации В, то есть принятия решения RB?

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

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

k_j = \frac{U_j}{V_j}.

Однако значение Vj находим не по обобщенному эталону, а по каждой конкретной ситуации, входящей в состав обобщенного эталона. Например, ситуация {A1, B1, C1} образует реальный эталон в составе обобщенного эталона {A1, B1, C1, C2, C3, C4, C5}. По нему (другие ситуации аналогичны) находится величина возбуждения VВых1 нейрона Вых1. Значит,

k_{Вых1} = \frac{U}{ V_{Вых1}}

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

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

< Лекция 3 || Лекция 4: 123456 || Лекция 5 >
Эльвира Герейханова
Эльвира Герейханова

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

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