Логические нейронные сети

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

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

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

9.1. "Железнодорожная рулетка"

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

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

Построение обученной нейросети. Рассмотрим увлекательную детскую игру - "железнодорожную рулетку", - основанную на так хорошо знакомой вам задаче о встрече. Помните: "Из пунктов А и В навстречу друг другу $$\dots$$ " и т.д.?

(рис 9.1) Железнодорожная рулетка

Начальник станции Кукуевка (старший) и начальник станции Пырловка одновременно выпускают навстречу друг другу два паровоза (рис. 9.1) со скоростью либо 60, либо 80 км/ч. Длина перегона составляет 4 км. Небольшой нюанс заключается в том, что пути перегона то сходятся в один, на протяжении одного километра, то расходятся. И тогда, в зависимости от точки встречи, со станции Кукуевка надо выслать на соответствующий километр либо линейного - даму с приветственным платочком, либо линейного с подстилочной соломкой.

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

В отличие от вас, начальник станции Кукуевка неважно учился в пятом классе, и решать оперативно подобную задачу, да еще при дополнительных условиях, не в состоянии. Он просит о помощи вас, предоставив в ваше распоряжение плохонький компьютер, отказанный в порядке шефской помощи Кукуевской начальной школой. Он объясняет вам, что не хочет считать вообще, а хочет добиться определенности по принципу "если $$\dots$$, то $$\dots$$ ", а в случае недостоверных данных - "на что это более всего похоже и что делать?".

Тогда вы понимаете, что без элементов искусственного интеллекта не обойтись. Стимулируя свою изобретательность кружкой пива "Красный Восток", вы ищете что-то похожее на табличный метод, но с автоматической интерполяцией, что-то связанное с ассоциативным мышлением $$\dots$$ И вы решаетесь $$\dots$$

Произведем предварительные расчеты, чтобы представить себе все варианты будущего поведения нашей системы принятия решений - для ее обучения. Представим (рис. 9.2) графически структуру логического функционирования создаваемой системы принятия решений.

  • Кукуевский паровоз имеет скорость 60 км/ч (Событие А1 ). Пырловский паровоз имеет скорость 60 км/ч (Событие В1 ). Одновременное выполнение этих событий обозначим А1В1. Тогда точка встречи находится как раз посредине перегона, что, скорее всего, требует помощи линейного с соломкой. Но возможно и везение за счет неточного определения скоростей. Тогда на всякий случай потребуется дама с платочком. Принимаемое решение, заключающееся в отправлении обоих линейных на границу второго и третьего километров, назовем решением R1. С ним связаны расходы на единовременное пособие М1.

    (рис 9.2) Система принятия решений
  • Кукуевский паровоз имеет скорость 60 км/ч (Событие А1 ), но пырловский паровоз имеет скорость 80 км/ч (Событие В2 ). (Выполняется условие А1В2.) Тогда их точка встречи находится на втором километре пути, и, следовательно, требует решения R2: "Отправить даму с платочком на второй километр!" В активе указанной дамы появляется сумма М2 условных единиц.
  • Кукуевский паровоз имеет скорость 80 км/ч (Событие А2 ), пырловский паровоз имеет скорость 60 км/ч (Событие В1 ). (Выполняется условие А2В1.) Тогда их точка встречи находится на третьем километре пути, что требует сочувственного вмешательства линейного с соломкой (решение R3 ), с оплатой труда в М3 условных единиц.
  • Кукуевский и пырловский паровозы имеют скорость 80 км/ч (Событие А2В2 ), что ввиду высокой скорости перемещения линейных требует решения R4 с затратами М4.
  • А теперь оживим эту структуру, заставим ее действовать, как, по-видимому, на логическом уровне действуют структуры нашего мозга.

    Представим себе, что на месте каждого овала (потом - кружочка, на рис. 9.2 справа) действует нейроподобный элемент (просто нейрон). Нейроны входного слоя - рецепторы - приходят в возбужденное состояние (подобно сетчатке глаза) в соответствии с той ситуацией, которую мы задаем на входе системы. Например, мы хотим испытать ситуацию А1В2. Тогда мы полагаем величины возбуждения нейронов А1 и В2 равными единице и записываем VA1 = VB2 = 1. При этом мы не забываем позаботиться о том, чтобы величины возбуждений нейронов А2 и В1 остались равными нулю.

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

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

    $$V= \xi \left (\sum_i V_i – h\right),$$

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

    (Напомним: функция $$\xi (x)$$ заменяет отрицательную величину нулем, т.е.

    $$\xi (x) = \left \{ \begin{array}{ll} x, \mbox{если}\: x\ge 0, \\ 0, \mbox{если}\: x < 0 \end{array}\rigth$$

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

    Положим h = 1 и рассчитаем величины возбуждения нейронов выходного слоя R1-R4 для ситуации А1В2:

    $$\begin{array}{lll} V_{R1}: 1 \div 0 - 1 = 0, V_{R1} = 0;\\ V_{R2}: 1 \div 1 - 1 = 1, V_{R2} = 1;\\ V_{R3}: 0 \div 0 - 1 = -1, V_{R3} = 0;\\ V_{R4}: 0 \div 1 - 1 = 0, V_{R4} = 0. \end{array}$$

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

    Теперь поэкспериментируем.

    Задавая события по принципу "да - нет", "1 - 0", мы предполагали булевский тип исходных данных. А что, если поменять, обобщить тип исходных данных, допустив рассмотрение значений, интерпретируемых как достоверность? Или даже каких-то других взаимных оценок, которые используются часто в быту людьми, не сведущими в теории вероятности и не знакомых с понятием "полное множество событий"?

    Например, в результате искажения информации начальник станции Кукуевка принял решение считать скорость пырловского паровоза равной не то 60, не то 80 км/ч. Но скорее всего - 60! И подойдя к компьютеру, он по наитию набирает: А1 = 1, В1 = 0,7, В2 = 0,4. На какую ситуацию это указывает, и какое решение наиболее правильно? Считаем:

    $$\begin{array}{lll} V_{R1}: 1 \div 0,7 - 1 = 0,7, V_{R1} = 0,7;\\ V_{R2}: 1 \div 0,4 - 1 = 0,4, V_{R2} = 0,4;\\ V_{R3}: 0 \div 0,7 - 1 = -0,3, V_{R3} = 0;\\ V_{R4}: 0 \div 0,4 - 1 = -0,6, V_{R4} = 0. \end{array}$$

    Мы видим, что максимальной величины возбуждения достиг нейрон R1, определивший главное решение. Но мы вправе учесть и решение R2 с меньшим приоритетом, дав даме с платочком дополнительные указания. И в этом проявится наша мудрость. По известной формуле мы можем оценить математическое ожидание того, на сколько облегчится карман начальника Кукуевской станции:

    $$M=\frac{M1\cdot 0,7 +M2\cdot 0,4 +M3 \cdot 0+ M4 \cdot 0}{0,7+0,4+0+0}$$

    Мы очень просто сформировали уже обученную нейросеть. Однако критический взгляд читателя замечает явные "проколы" и выражает недоумение. Ведь ранее мы говорили о большем! Что ж, подойдем к этому постепенно $$\dots$$

    А что, если бы мы захотели объединить решения R1 и R4, отличающиеся (для нас) только скоростью передвижения линейных? Следуя тому же принципу формирования, мы получили бы сеть как на рис. 9.3.

    (рис 9.3) Непригодность однослойной нейросети

    Легко видеть, что решение R1 максимально возбуждается всегда, когда мы задаем ситуацию, требующую той же величины максимального возбуждения только лишь нейронов R2 и R3. Сеть как бы дает "побочный эффект". Необходим дополнительный инструктаж пользователя. Он заключается в том, что если максимально и одинаково возбудились два нейрона выходного слоя и один из них R1, то "верить" надо второму. Если максимально возбудился только нейрон R1, то он и выдает правильное решение.

    В данном случае произошла коллизия при огульной замене операций конъюнкции $$\wedge$$ и дизъюнкции $$\vee$$ одной операцией . Ведь логический предикат возбуждения решения R1 выглядит как

    $$(A1\wedge B1)\vee (A2\wedge B2) \to R1$$

    Именно это и наводит на предположение (гипотезу) о минимальной длине статической цепочки, которая рассматривается в разделе 1.9. По-видимому, нейросеть будет работать правильно, если ее структура полностью воспроизведет структуру указанного логического выражения. Но для этого нейросеть должна быть двухслойной! Более того, глубокий анализ показывает, что обобщенный эталон А1, А2, В1, В2, приводящий к одному решению ( R1 ), поглотил обобщенные эталоны (например, А1, В2 ), приводящие к другому решению. О какой же однозначности выводов можно говорить!

    Тогда легко восстановить справедливость, построив (обученную!) нейросеть так, как показано на рис. 9.4, введя в рассмотрение т.н. "скрытые" нейроны 1 и 2.

    (рис 9.4) "Правильная" обученная нейросеть

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

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

    $$V= \xi \left ( \sum_i \omega_i V_i – h \right) ,$$

    где Vi - величины возбуждения тех нейронов, аксоны которых связаны с дендритами данного нейрона, i - индекс использованного дендрита, $$\omega _{i}$$ - вес синапсической связи.

    И вот весь фокус в построении и в обучении нейросети заключается в том, что синапсические веса регулируются, обусловливая пути прохождения возбуждений в сети!

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

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

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

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

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

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

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

    (рис 9.6) Матрица следования
  • Произведем трассировку возбуждений нейронов {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.

  • Произведем трассировку {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.

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

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

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

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

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

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

    Но радоваться рано. Посчитаем с помощью нашей передаточной функции величины возбуждения нейронов для, например, ситуации A1B2: V1 = 0, V2 = 1, V3 = 0, VR1 = 0, VR2 = 0, VR3 = 0, VR4 = 0. Ни один нейрон выходного слоя не возбудился! То же - для ситуаций A1B1 и A2B1. Рассчитаем ситуацию A2B2: 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 сеть правильно распознает все эталонные ситуации, обеспечивая равную величину возбуждения нейронов выходного слоя. Так, при ситуации A1B1 получаем следующие величины возбуждения нейронов: V1 = 2, V2 = V3 = 0, VR1 = 2, VR2 = VR3 = VR4 = 0. Аналогично - для ситуаций A1B2 и A2B1. Для ситуации A2B2 находим V1 = V2 = V3 = 0, VR1 = VR2 = VR3 = 0, VR4 = 2.

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

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

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

    В лекции 1 проводилось обоснование системы принятия решений (СПР) на основе основных положений математической логики событий. В последующих лекциях рассматривались примеры практического построения СПР. Однако в предыдущем разделе данной лекции возникли проблемы, связанные с тем, что при заданной структуре и количестве нейронов в обучаемой нейронной сети не всегда удается предусмотреть однозначность выводов. Указывается на важность следования альтернативным правилам: либо "размножением" решений сводить сеть к однослойной, либо при ее трассировке строго соблюдать скобочную структуру логических функций, описывающих СПР.

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

    Пусть гипотетическая СПР контролера электропоезда основана на следующих высказываниях:

    Х1  = "пассажир предъявил билет"; 
      Х2  = "пассажир не предъявил билет"; 
      Х3  = "в билете указана дата (число) этого дня"; 
      Х4  = "в билете указана дата (число) не этого дня"; 
      Х5  = "в билете указан текущий месяц"; 
      Х6  = "в билете указан не текущий месяц"; 
      Х7  = "в билете указан текущий год"; 
      Х8  = "в билете указан прошлый год"; 
      Х9  = "в билете указан более ранний год"; 
      Х10 = "предъявлены проездные документы работника МПС"; 
      Х11 = "предъявлено пенсионное удостоверение"; 
      Х12 = "не предъявлено пенсионное удостоверение"; 
      Х13 = "предъявлено удостоверение работника МПС"; 
      Х14 = "не предъявлено удостоверение работника МПС"; 
      Х15 = "предложена взятка".

    Принимаемые решения:

    R1 = "поблагодарить и извиниться за беспокойство";
      R2 = "взыскать штраф 100 рублей";
      R3 = "взыскать штраф 300 рублей";
      R4 = "вызвать милицию";
      R5 = "пожурить".

    Зададим логическое описание СПР:

    $$\begin{array}{l} (Х_{1}\wedge Х_{3}\wedge Х_{5}\wedge Х_{7 })\vee Х_{10} \to R_{1 },\\ (Х_{1}\wedge Х_{4}\wedge Х_{7 })\vee (Х_{1}\wedge Х_{6}\wedge Х_{7 })\vee (Х_{2} \wedge Х_{12}\wedge Х_{14 }) \to R_{2 },\\ (Х_{1}\wedge Х_{8})\vee (Х_{10}\wedge Х_{8 }) \to R_{3 },\\ (Х_{1}\wedge Х_{9 })\vee (Х_{10}\wedge Х_{9 })\vee (Х_{2}\wedge Х_{15 }) \to R_{4 },\\ (Х_{2}\wedge Х_{11 })\vee (Х_{2}\wedge Х_{13 }) \to R_{5 }. \end{array}$$

    Инструкция контролеру на этапе ее согласования может учитывать не все ситуации, с которыми он встречается. Например, ситуация $$Х_{1}\wedge Х_{10}$$ требует особой благодарности контролера от лица МПС!

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

    Не ограничивая общности рассуждений, будем считать, что каждая логическая функция Fi , i = 1, ..., S, представляет собой дизъюнктивную нормальную форму (ДНФ) в смысле [22], т.е. имеет вид дизъюнкции конъюнкций, где количество членов, составляющих различные конъюнкции, может быть различным.

    Отметим, что традиционно в схемотехнике за ДНФ принимают так называемую совершенную ДНФ (СДНФ), формируемую по известному [22] правилу построения на основе таблицы значений. В ней все конъюнкции имеют одинаковую длину, и их составляют одни переменные в совокупности с отрицанием других.

    Однако заведомо излишне учитывать в каждой ситуации, например, предложена взятка или нет. Таким образом, ДНФ, как исходная форма представления, вполне достаточна для полного описания СПР.

    Более того, при корректном описании СПР не используется операция отрицания, так как применяются лишь исчерпывающие множества событий (здесь читателю все же придется обратиться к лекции 1). Действительно, отрицание некоторого события равно дизъюнкции остальных событий того же множества. Так, в нашем примере для исчерпывающего множества событий Х1 и Х2 справедливо равенство Х2 =Xi.

    Граф-схема выполнения системы логических выражений (9.2), т.е. логическая схема (И-ИЛИ сеть по терминологии [25]) представлена на рис. 9.15. (Не следует пока обращать внимание на веса и пороги.)

    Пусть вершины 1-11 этого графа соответствуют логическим элементам - конъюнкторам, а вершины R1-R5 - дизъюнкторам. Тогда построенная схема отображает функционально законченное устройство, реализующее таблицу, с помощью которой контролер осуществляет свои действия. А именно, задавая на входе значения булевых переменных, характеризующие ситуацию, он на одном из выходов хочет получить булево значение "1", указывающее на принимаемое решение. (Далее мы обнаружим ошибку.)

    (рис 9.15) Логическая схема СПР - структура обученной нейросети

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

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

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

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

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

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

    Каждая конъюнкция высказываний в записи логических функций (9.1), т.е. совокупность событий, определяет ситуацию. Ситуация является эталоном (эталонной ситуацией), если все составляющие ее события обладают достоверностью, равной единице. В логической схеме каждой конъюнкции соответствует вершина из множества {1, ..., 11}. В нейронной сети эти вершины обозначают нейроны промежуточного или скрытого слоя. Нейроны R1-R5 образуют выходной слой; их возбуждение указывает на принимаемое решение.

    Как говорилось выше, нейроны рецепторного слоя возбуждаются пользователем, задающим предполагаемую вероятность (или другую оценку) соответствующего события. Остальные нейроны реализуют передаточную функцию таким образом, чтобы возбуждение нейронов-рецепторов распространялось по сети в соответствии со связями. А именно, если, например, на входе сформирован высокий уровень возбуждения нейронов Х1, Х4, Х7 по сравнению с возбуждением других нейронов-рецепторов, то большая величина возбуждения нейрона 2 должна обеспечить самое высокое возбуждение нейрона R2 среди всех нейронов R1-R5 выходного слоя.

    Отметим, что таким образом мы пытаемся построить уже обученную нейросеть, где по всем эталонным ситуациям максимального возбуждения должны достигать те нейроны выходного слоя, которые ответственны за решения, соответствующие этим ситуациям. Таким образом, реализуется таблица, о которой говорилось выше. Если же с помощью достоверности событий задавать на входе ситуации, явно не существующие, то нельзя гарантировать правильный ответ. Например, если достоверность всех событий Х1 - Х7 положить равной единице, то столь же бессмысленно будет распределение возбуждения нейронов выходного слоя. Или, если предположить, что мятая бумажка является предъявленным билетом с достоверностью 0,1 (событие Х1 ), то полагать высоким значение достоверности события Х8 не следует, т.к. эта достоверность является условной вероятностью, и т.д.

    То есть логика мышления пользователя и знание элементов теории вероятности должны возобладать.

    9.3. Выбор передаточной функции

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

    В нейронных сетях учитывают веса связей - синапсические веса $$\omega$$. Рассмотрение этих весов актуально, если структура сети первоначально задана и следует ее приспособить (обучить) для решения данной задачи. Пока мы рассматриваем построение уже обученной нейросети, поэтому вес сформированных связей принимаем равным единице. Однако далее будет показано, что корректировка весов необходима даже при построении обученных сетей. Эти веса могут быть скорректированы и в процессе эксплуатации для учета влияния событий на результат - принимаемое решение.

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

  • эти функции в области преодоления порога должны монотонно возрастать по каждому сигналу на входе нейрона;
  • не должно быть "угасания" сигнала возбуждения при его прохождении по сети;
  • сигналы возбуждения на выходном слое должны быть четко различимы по величине для различных эталонных ситуаций ;
  • должен быть примерно равным диапазон изменения величин возбуждения нейронов выходного слоя, закрепленных за разными решениями.
  • Практически, для логического решения задач, достаточно применять одну из следующих, например, используемых в [7], передаточных функций, определяющих величину V возбуждения нейрона в зависимости от величин Vi возбуждения связанных с ним нейронов, весов $$\omega _{ i}$$ этих связей, а также порога h:

    1. $$\begin{array}{l} V= \xi \left (\sum_i \omega_i V_i – h\right),\\ \left (\xi (x)=\left\{ \begin{array}{ll} x, \mbox{если}\: x \ge 0, \\ 0, \mbox{в противном случае} \end{array} \right \right) \end{array} $$

    2. $$\begin{array}{l} V:= \xi \left (\sum_i \omega_i V_i – h\right),\\ V:= if \: V> A\: then\: A \:else \:V \end{array}$$

    3. $$\begin{array}{l} V:= \sum_i \omega_i V_i,\\ V:= if \: V> h\: then\: V \:else \:0 \end{array}$$

    4. $$\begin{array}{l} V:= \sum_i \omega_i V_i,\\ V:= if \: V \ge h \wedge V < 1 \: then\: V- h \:else \: if \:V \ge 1\: then \:1-h\: else 0 \end{array}$$

    5. $$\begin{array}{l} V:= \cfrac {1}{n}\sum_i \omega_i V_i,\\ V:= if \: V \ge h \: then\: V \:else \:0,\\ \mbox{где}\: n - \mbox{количество активных входов нейрона} \end{array}$$

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

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

    9.4. Анализ примера

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

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

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

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

    Примеры расчета принимаемых решений
    Решение R1 R2 R1 R3 R4 R2 R2 R3 R4 R4 R4 R5 R5
    Возбуждение нейронов выходного слоя R5 0 0 0 2 0 0 0 2 3
    R4 1 1 1 1 1 3 3 2 1
    R3 1 1 1 0 3 1 0 0 0
    R2 4 0 5 3 0 2 0 1 1
    R1 4 1 2 0 1 1 1 0 0
    Возбуждение нейронов промежуточного слоя 11 0 0 0 1 0 0 0 1 1
    10 0 0 0 1 0 0 0 1 2
    9 0 0 0 1 0 0 0 2 1
    8 0 1 0 0 1 1 2 0 0
    7 1 0 1 0 0 2 1 0 0
    6 0 1 0 0 2 0 0 0 0
    5 1 0 1 0 1 1 0 0 0
    4 0 0 0 3 0 0 0 1 1
    3 2 0 2 0 0 1 0 0 0
    2 2 0 3 0 0 1 0 0 0
    1 4 0 2 0 0 1 0 0 0
    Ситуация X15 0 0 0 0 0 0 0 1 0
    X14 0 0 0 1 0 0 0 0 0
    X13 0 0 0 0 0 0 0 0 0
    X12 0 0 0 1 0 0 0 0 0
    X11 0 0 0 0 0 0 0 0 1
    X10 0 1 0 0 1 0 1 0 0
    X9 0 0 0 0 0 1 1 0 0
    X8 0 0 0 0 1 0 0 0 0
    X7 1 0 1 0 0 0 0 0 0
    X6 0 0 0 0 0 0 0 0 0
    X5 1 0 0 0 0 0 0 0 0
    X4 0 0 1 0 0 0 0 0 0
    X3 1 0 0 0 0 0 0 0 0
    X2 0 0 0 1 0 0 0 1 1
    X1 1 0 1 0 0 1 0 0 0
    1 2 3 4 5 6 7 8 9

    Анализируя таблицу, видим, что даже при предъявлении эталонов сеть работает неправильно. По некоторым эталонам (столбцы 1, 2 и 8) она дает неоднозначный ответ.

    Тем самым сеть демонстрирует "побочный эффект". Из-за наличия общих событий, составляющих разные ситуации, эти события определяют одинаковый исход даже в том случае, если другие события обеспечивают различие ситуаций. Так, конъюнкция $$Х_{1}\wedge Х_{7}$$, определившая вместе с событиями Х3 и Х5 правильное решение R1, дважды (нейроны 2 и 3 ) при использовании передаточной функции 3 участвуют в формировании возбуждения нейрона R2 (столбец 1). Аналогичный вывод следует из анализа столбца 8. Необходимо подавить "побочный эффект", снизив величину возбуждения нейронов, не участвующих в возбуждении "нужного" нейрона выходного слоя. (Столбец 2 пока обсуждать не будем.)

    Далее, анализ таблицы показывает, что даже при правильном ответе величины возбуждения нейронов выходного слоя, закрепленные за разными решениями, различны. Более того, эти величины могут различаться даже при предъявлении эталонов, требующих одного и того же решения (столбцы 1 и 2, 3 и 4, 8 и 9).

    Таким образом, требуется корректировка параметров нейросети.

    Страницы:

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

    9.1. "Железнодорожная рулетка"

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

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

    Построение обученной нейросети. Рассмотрим увлекательную детскую игру - "железнодорожную рулетку", - основанную на так хорошо знакомой вам задаче о встрече. Помните: "Из пунктов А и В навстречу друг другу $$\dots$$ " и т.д.?

    (рис 9.1) Железнодорожная рулетка

    Начальник станции Кукуевка (старший) и начальник станции Пырловка одновременно выпускают навстречу друг другу два паровоза (рис. 9.1) со скоростью либо 60, либо 80 км/ч. Длина перегона составляет 4 км. Небольшой нюанс заключается в том, что пути перегона то сходятся в один, на протяжении одного километра, то расходятся. И тогда, в зависимости от точки встречи, со станции Кукуевка надо выслать на соответствующий километр либо линейного - даму с приветственным платочком, либо линейного с подстилочной соломкой.

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

    В отличие от вас, начальник станции Кукуевка неважно учился в пятом классе, и решать оперативно подобную задачу, да еще при дополнительных условиях, не в состоянии. Он просит о помощи вас, предоставив в ваше распоряжение плохонький компьютер, отказанный в порядке шефской помощи Кукуевской начальной школой. Он объясняет вам, что не хочет считать вообще, а хочет добиться определенности по принципу "если $$\dots$$, то $$\dots$$ ", а в случае недостоверных данных - "на что это более всего похоже и что делать?".

    Тогда вы понимаете, что без элементов искусственного интеллекта не обойтись. Стимулируя свою изобретательность кружкой пива "Красный Восток", вы ищете что-то похожее на табличный метод, но с автоматической интерполяцией, что-то связанное с ассоциативным мышлением $$\dots$$ И вы решаетесь $$\dots$$

    Произведем предварительные расчеты, чтобы представить себе все варианты будущего поведения нашей системы принятия решений - для ее обучения. Представим (рис. 9.2) графически структуру логического функционирования создаваемой системы принятия решений.

  • Кукуевский паровоз имеет скорость 60 км/ч (Событие А1 ). Пырловский паровоз имеет скорость 60 км/ч (Событие В1 ). Одновременное выполнение этих событий обозначим А1В1. Тогда точка встречи находится как раз посредине перегона, что, скорее всего, требует помощи линейного с соломкой. Но возможно и везение за счет неточного определения скоростей. Тогда на всякий случай потребуется дама с платочком. Принимаемое решение, заключающееся в отправлении обоих линейных на границу второго и третьего километров, назовем решением R1. С ним связаны расходы на единовременное пособие М1.

    (рис 9.2) Система принятия решений
  • Кукуевский паровоз имеет скорость 60 км/ч (Событие А1 ), но пырловский паровоз имеет скорость 80 км/ч (Событие В2 ). (Выполняется условие А1В2.) Тогда их точка встречи находится на втором километре пути, и, следовательно, требует решения R2: "Отправить даму с платочком на второй километр!" В активе указанной дамы появляется сумма М2 условных единиц.
  • Кукуевский паровоз имеет скорость 80 км/ч (Событие А2 ), пырловский паровоз имеет скорость 60 км/ч (Событие В1 ). (Выполняется условие А2В1.) Тогда их точка встречи находится на третьем километре пути, что требует сочувственного вмешательства линейного с соломкой (решение R3 ), с оплатой труда в М3 условных единиц.
  • Кукуевский и пырловский паровозы имеют скорость 80 км/ч (Событие А2В2 ), что ввиду высокой скорости перемещения линейных требует решения R4 с затратами М4.
  • А теперь оживим эту структуру, заставим ее действовать, как, по-видимому, на логическом уровне действуют структуры нашего мозга.

    Представим себе, что на месте каждого овала (потом - кружочка, на рис. 9.2 справа) действует нейроподобный элемент (просто нейрон). Нейроны входного слоя - рецепторы - приходят в возбужденное состояние (подобно сетчатке глаза) в соответствии с той ситуацией, которую мы задаем на входе системы. Например, мы хотим испытать ситуацию А1В2. Тогда мы полагаем величины возбуждения нейронов А1 и В2 равными единице и записываем VA1 = VB2 = 1. При этом мы не забываем позаботиться о том, чтобы величины возбуждений нейронов А2 и В1 остались равными нулю.

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

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

    $$V= \xi \left (\sum_i V_i – h\right),$$

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

    (Напомним: функция $$\xi (x)$$ заменяет отрицательную величину нулем, т.е.

    $$\xi (x) = \left \{ \begin{array}{ll} x, \mbox{если}\: x\ge 0, \\ 0, \mbox{если}\: x < 0 \end{array}\rigth$$

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

    Положим h = 1 и рассчитаем величины возбуждения нейронов выходного слоя R1-R4 для ситуации А1В2:

    $$\begin{array}{lll} V_{R1}: 1 \div 0 - 1 = 0, V_{R1} = 0;\\ V_{R2}: 1 \div 1 - 1 = 1, V_{R2} = 1;\\ V_{R3}: 0 \div 0 - 1 = -1, V_{R3} = 0;\\ V_{R4}: 0 \div 1 - 1 = 0, V_{R4} = 0. \end{array}$$

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

    Теперь поэкспериментируем.

    Задавая события по принципу "да - нет", "1 - 0", мы предполагали булевский тип исходных данных. А что, если поменять, обобщить тип исходных данных, допустив рассмотрение значений, интерпретируемых как достоверность? Или даже каких-то других взаимных оценок, которые используются часто в быту людьми, не сведущими в теории вероятности и не знакомых с понятием "полное множество событий"?

    Например, в результате искажения информации начальник станции Кукуевка принял решение считать скорость пырловского паровоза равной не то 60, не то 80 км/ч. Но скорее всего - 60! И подойдя к компьютеру, он по наитию набирает: А1 = 1, В1 = 0,7, В2 = 0,4. На какую ситуацию это указывает, и какое решение наиболее правильно? Считаем:

    $$\begin{array}{lll} V_{R1}: 1 \div 0,7 - 1 = 0,7, V_{R1} = 0,7;\\ V_{R2}: 1 \div 0,4 - 1 = 0,4, V_{R2} = 0,4;\\ V_{R3}: 0 \div 0,7 - 1 = -0,3, V_{R3} = 0;\\ V_{R4}: 0 \div 0,4 - 1 = -0,6, V_{R4} = 0. \end{array}$$

    Мы видим, что максимальной величины возбуждения достиг нейрон R1, определивший главное решение. Но мы вправе учесть и решение R2 с меньшим приоритетом, дав даме с платочком дополнительные указания. И в этом проявится наша мудрость. По известной формуле мы можем оценить математическое ожидание того, на сколько облегчится карман начальника Кукуевской станции:

    $$M=\frac{M1\cdot 0,7 +M2\cdot 0,4 +M3 \cdot 0+ M4 \cdot 0}{0,7+0,4+0+0}$$

    Мы очень просто сформировали уже обученную нейросеть. Однако критический взгляд читателя замечает явные "проколы" и выражает недоумение. Ведь ранее мы говорили о большем! Что ж, подойдем к этому постепенно $$\dots$$

    А что, если бы мы захотели объединить решения R1 и R4, отличающиеся (для нас) только скоростью передвижения линейных? Следуя тому же принципу формирования, мы получили бы сеть как на рис. 9.3.

    (рис 9.3) Непригодность однослойной нейросети

    Легко видеть, что решение R1 максимально возбуждается всегда, когда мы задаем ситуацию, требующую той же величины максимального возбуждения только лишь нейронов R2 и R3. Сеть как бы дает "побочный эффект". Необходим дополнительный инструктаж пользователя. Он заключается в том, что если максимально и одинаково возбудились два нейрона выходного слоя и один из них R1, то "верить" надо второму. Если максимально возбудился только нейрон R1, то он и выдает правильное решение.

    В данном случае произошла коллизия при огульной замене операций конъюнкции $$\wedge$$ и дизъюнкции $$\vee$$ одной операцией . Ведь логический предикат возбуждения решения R1 выглядит как

    $$(A1\wedge B1)\vee (A2\wedge B2) \to R1$$

    Именно это и наводит на предположение (гипотезу) о минимальной длине статической цепочки, которая рассматривается в разделе 1.9. По-видимому, нейросеть будет работать правильно, если ее структура полностью воспроизведет структуру указанного логического выражения. Но для этого нейросеть должна быть двухслойной! Более того, глубокий анализ показывает, что обобщенный эталон А1, А2, В1, В2, приводящий к одному решению ( R1 ), поглотил обобщенные эталоны (например, А1, В2 ), приводящие к другому решению. О какой же однозначности выводов можно говорить!

    Тогда легко восстановить справедливость, построив (обученную!) нейросеть так, как показано на рис. 9.4, введя в рассмотрение т.н. "скрытые" нейроны 1 и 2.

    (рис 9.4) "Правильная" обученная нейросеть

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

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

    $$V= \xi \left ( \sum_i \omega_i V_i – h \right) ,$$

    где Vi - величины возбуждения тех нейронов, аксоны которых связаны с дендритами данного нейрона, i - индекс использованного дендрита, $$\omega _{i}$$ - вес синапсической связи.

    И вот весь фокус в построении и в обучении нейросети заключается в том, что синапсические веса регулируются, обусловливая пути прохождения возбуждений в сети!

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

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

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

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

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

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

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

    (рис 9.6) Матрица следования
  • Произведем трассировку возбуждений нейронов {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.

  • Произведем трассировку {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.

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

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

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

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

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

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

    Но радоваться рано. Посчитаем с помощью нашей передаточной функции величины возбуждения нейронов для, например, ситуации A1B2: V1 = 0, V2 = 1, V3 = 0, VR1 = 0, VR2 = 0, VR3 = 0, VR4 = 0. Ни один нейрон выходного слоя не возбудился! То же - для ситуаций A1B1 и A2B1. Рассчитаем ситуацию A2B2: 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 сеть правильно распознает все эталонные ситуации, обеспечивая равную величину возбуждения нейронов выходного слоя. Так, при ситуации A1B1 получаем следующие величины возбуждения нейронов: V1 = 2, V2 = V3 = 0, VR1 = 2, VR2 = VR3 = VR4 = 0. Аналогично - для ситуаций A1B2 и A2B1. Для ситуации A2B2 находим V1 = V2 = V3 = 0, VR1 = VR2 = VR3 = 0, VR4 = 2.

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

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

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

    В лекции 1 проводилось обоснование системы принятия решений (СПР) на основе основных положений математической логики событий. В последующих лекциях рассматривались примеры практического построения СПР. Однако в предыдущем разделе данной лекции возникли проблемы, связанные с тем, что при заданной структуре и количестве нейронов в обучаемой нейронной сети не всегда удается предусмотреть однозначность выводов. Указывается на важность следования альтернативным правилам: либо "размножением" решений сводить сеть к однослойной, либо при ее трассировке строго соблюдать скобочную структуру логических функций, описывающих СПР.

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

    Пусть гипотетическая СПР контролера электропоезда основана на следующих высказываниях:

    Х1  = "пассажир предъявил билет"; 
      Х2  = "пассажир не предъявил билет"; 
      Х3  = "в билете указана дата (число) этого дня"; 
      Х4  = "в билете указана дата (число) не этого дня"; 
      Х5  = "в билете указан текущий месяц"; 
      Х6  = "в билете указан не текущий месяц"; 
      Х7  = "в билете указан текущий год"; 
      Х8  = "в билете указан прошлый год"; 
      Х9  = "в билете указан более ранний год"; 
      Х10 = "предъявлены проездные документы работника МПС"; 
      Х11 = "предъявлено пенсионное удостоверение"; 
      Х12 = "не предъявлено пенсионное удостоверение"; 
      Х13 = "предъявлено удостоверение работника МПС"; 
      Х14 = "не предъявлено удостоверение работника МПС"; 
      Х15 = "предложена взятка".

    Принимаемые решения:

    R1 = "поблагодарить и извиниться за беспокойство";
      R2 = "взыскать штраф 100 рублей";
      R3 = "взыскать штраф 300 рублей";
      R4 = "вызвать милицию";
      R5 = "пожурить".

    Зададим логическое описание СПР:

    $$\begin{array}{l} (Х_{1}\wedge Х_{3}\wedge Х_{5}\wedge Х_{7 })\vee Х_{10} \to R_{1 },\\ (Х_{1}\wedge Х_{4}\wedge Х_{7 })\vee (Х_{1}\wedge Х_{6}\wedge Х_{7 })\vee (Х_{2} \wedge Х_{12}\wedge Х_{14 }) \to R_{2 },\\ (Х_{1}\wedge Х_{8})\vee (Х_{10}\wedge Х_{8 }) \to R_{3 },\\ (Х_{1}\wedge Х_{9 })\vee (Х_{10}\wedge Х_{9 })\vee (Х_{2}\wedge Х_{15 }) \to R_{4 },\\ (Х_{2}\wedge Х_{11 })\vee (Х_{2}\wedge Х_{13 }) \to R_{5 }. \end{array}$$

    Инструкция контролеру на этапе ее согласования может учитывать не все ситуации, с которыми он встречается. Например, ситуация $$Х_{1}\wedge Х_{10}$$ требует особой благодарности контролера от лица МПС!

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

    Не ограничивая общности рассуждений, будем считать, что каждая логическая функция Fi , i = 1, ..., S, представляет собой дизъюнктивную нормальную форму (ДНФ) в смысле [22], т.е. имеет вид дизъюнкции конъюнкций, где количество членов, составляющих различные конъюнкции, может быть различным.

    Отметим, что традиционно в схемотехнике за ДНФ принимают так называемую совершенную ДНФ (СДНФ), формируемую по известному [22] правилу построения на основе таблицы значений. В ней все конъюнкции имеют одинаковую длину, и их составляют одни переменные в совокупности с отрицанием других.

    Однако заведомо излишне учитывать в каждой ситуации, например, предложена взятка или нет. Таким образом, ДНФ, как исходная форма представления, вполне достаточна для полного описания СПР.

    Более того, при корректном описании СПР не используется операция отрицания, так как применяются лишь исчерпывающие множества событий (здесь читателю все же придется обратиться к лекции 1). Действительно, отрицание некоторого события равно дизъюнкции остальных событий того же множества. Так, в нашем примере для исчерпывающего множества событий Х1 и Х2 справедливо равенство Х2 =Xi.

    Граф-схема выполнения системы логических выражений (9.2), т.е. логическая схема (И-ИЛИ сеть по терминологии [25]) представлена на рис. 9.15. (Не следует пока обращать внимание на веса и пороги.)

    Пусть вершины 1-11 этого графа соответствуют логическим элементам - конъюнкторам, а вершины R1-R5 - дизъюнкторам. Тогда построенная схема отображает функционально законченное устройство, реализующее таблицу, с помощью которой контролер осуществляет свои действия. А именно, задавая на входе значения булевых переменных, характеризующие ситуацию, он на одном из выходов хочет получить булево значение "1", указывающее на принимаемое решение. (Далее мы обнаружим ошибку.)

    (рис 9.15) Логическая схема СПР - структура обученной нейросети

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

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

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

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

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

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

    Каждая конъюнкция высказываний в записи логических функций (9.1), т.е. совокупность событий, определяет ситуацию. Ситуация является эталоном (эталонной ситуацией), если все составляющие ее события обладают достоверностью, равной единице. В логической схеме каждой конъюнкции соответствует вершина из множества {1, ..., 11}. В нейронной сети эти вершины обозначают нейроны промежуточного или скрытого слоя. Нейроны R1-R5 образуют выходной слой; их возбуждение указывает на принимаемое решение.

    Как говорилось выше, нейроны рецепторного слоя возбуждаются пользователем, задающим предполагаемую вероятность (или другую оценку) соответствующего события. Остальные нейроны реализуют передаточную функцию таким образом, чтобы возбуждение нейронов-рецепторов распространялось по сети в соответствии со связями. А именно, если, например, на входе сформирован высокий уровень возбуждения нейронов Х1, Х4, Х7 по сравнению с возбуждением других нейронов-рецепторов, то большая величина возбуждения нейрона 2 должна обеспечить самое высокое возбуждение нейрона R2 среди всех нейронов R1-R5 выходного слоя.

    Отметим, что таким образом мы пытаемся построить уже обученную нейросеть, где по всем эталонным ситуациям максимального возбуждения должны достигать те нейроны выходного слоя, которые ответственны за решения, соответствующие этим ситуациям. Таким образом, реализуется таблица, о которой говорилось выше. Если же с помощью достоверности событий задавать на входе ситуации, явно не существующие, то нельзя гарантировать правильный ответ. Например, если достоверность всех событий Х1 - Х7 положить равной единице, то столь же бессмысленно будет распределение возбуждения нейронов выходного слоя. Или, если предположить, что мятая бумажка является предъявленным билетом с достоверностью 0,1 (событие Х1 ), то полагать высоким значение достоверности события Х8 не следует, т.к. эта достоверность является условной вероятностью, и т.д.

    То есть логика мышления пользователя и знание элементов теории вероятности должны возобладать.

    9.3. Выбор передаточной функции

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

    В нейронных сетях учитывают веса связей - синапсические веса $$\omega$$. Рассмотрение этих весов актуально, если структура сети первоначально задана и следует ее приспособить (обучить) для решения данной задачи. Пока мы рассматриваем построение уже обученной нейросети, поэтому вес сформированных связей принимаем равным единице. Однако далее будет показано, что корректировка весов необходима даже при построении обученных сетей. Эти веса могут быть скорректированы и в процессе эксплуатации для учета влияния событий на результат - принимаемое решение.

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

  • эти функции в области преодоления порога должны монотонно возрастать по каждому сигналу на входе нейрона;
  • не должно быть "угасания" сигнала возбуждения при его прохождении по сети;
  • сигналы возбуждения на выходном слое должны быть четко различимы по величине для различных эталонных ситуаций ;
  • должен быть примерно равным диапазон изменения величин возбуждения нейронов выходного слоя, закрепленных за разными решениями.
  • Практически, для логического решения задач, достаточно применять одну из следующих, например, используемых в [7], передаточных функций, определяющих величину V возбуждения нейрона в зависимости от величин Vi возбуждения связанных с ним нейронов, весов $$\omega _{ i}$$ этих связей, а также порога h:

    1. $$\begin{array}{l} V= \xi \left (\sum_i \omega_i V_i – h\right),\\ \left (\xi (x)=\left\{ \begin{array}{ll} x, \mbox{если}\: x \ge 0, \\ 0, \mbox{в противном случае} \end{array} \right \right) \end{array} $$

    2. $$\begin{array}{l} V:= \xi \left (\sum_i \omega_i V_i – h\right),\\ V:= if \: V> A\: then\: A \:else \:V \end{array}$$

    3. $$\begin{array}{l} V:= \sum_i \omega_i V_i,\\ V:= if \: V> h\: then\: V \:else \:0 \end{array}$$

    4. $$\begin{array}{l} V:= \sum_i \omega_i V_i,\\ V:= if \: V \ge h \wedge V < 1 \: then\: V- h \:else \: if \:V \ge 1\: then \:1-h\: else 0 \end{array}$$

    5. $$\begin{array}{l} V:= \cfrac {1}{n}\sum_i \omega_i V_i,\\ V:= if \: V \ge h \: then\: V \:else \:0,\\ \mbox{где}\: n - \mbox{количество активных входов нейрона} \end{array}$$

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

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

    9.4. Анализ примера

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

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

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

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

    Примеры расчета принимаемых решений
    Решение R1 R2 R1 R3 R4 R2 R2 R3 R4 R4 R4 R5 R5
    Возбуждение нейронов выходного слоя R5 0 0 0 2 0 0 0 2 3
    R4 1 1 1 1 1 3 3 2 1
    R3 1 1 1 0 3 1 0 0 0
    R2 4 0 5 3 0 2 0 1 1
    R1 4 1 2 0 1 1 1 0 0
    Возбуждение нейронов промежуточного слоя 11 0 0 0 1 0 0 0 1 1
    10 0 0 0 1 0 0 0 1 2
    9 0 0 0 1 0 0 0 2 1
    8 0 1 0 0 1 1 2 0 0
    7 1 0 1 0 0 2 1 0 0
    6 0 1 0 0 2 0 0 0 0
    5 1 0 1 0 1 1 0 0 0
    4 0 0 0 3 0 0 0 1 1
    3 2 0 2 0 0 1 0 0 0
    2 2 0 3 0 0 1 0 0 0
    1 4 0 2 0 0 1 0 0 0
    Ситуация X15 0 0 0 0 0 0 0 1 0
    X14 0 0 0 1 0 0 0 0 0
    X13 0 0 0 0 0 0 0 0 0
    X12 0 0 0 1 0 0 0 0 0
    X11 0 0 0 0 0 0 0 0 1
    X10 0 1 0 0 1 0 1 0 0
    X9 0 0 0 0 0 1 1 0 0
    X8 0 0 0 0 1 0 0 0 0
    X7 1 0 1 0 0 0 0 0 0
    X6 0 0 0 0 0 0 0 0 0
    X5 1 0 0 0 0 0 0 0 0
    X4 0 0 1 0 0 0 0 0 0
    X3 1 0 0 0 0 0 0 0 0
    X2 0 0 0 1 0 0 0 1 1
    X1 1 0 1 0 0 1 0 0 0
    1 2 3 4 5 6 7 8 9

    Анализируя таблицу, видим, что даже при предъявлении эталонов сеть работает неправильно. По некоторым эталонам (столбцы 1, 2 и 8) она дает неоднозначный ответ.

    Тем самым сеть демонстрирует "побочный эффект". Из-за наличия общих событий, составляющих разные ситуации, эти события определяют одинаковый исход даже в том случае, если другие события обеспечивают различие ситуаций. Так, конъюнкция $$Х_{1}\wedge Х_{7}$$, определившая вместе с событиями Х3 и Х5 правильное решение R1, дважды (нейроны 2 и 3 ) при использовании передаточной функции 3 участвуют в формировании возбуждения нейрона R2 (столбец 1). Аналогичный вывод следует из анализа столбца 8. Необходимо подавить "побочный эффект", снизив величину возбуждения нейронов, не участвующих в возбуждении "нужного" нейрона выходного слоя. (Столбец 2 пока обсуждать не будем.)

    Далее, анализ таблицы показывает, что даже при правильном ответе величины возбуждения нейронов выходного слоя, закрепленные за разными решениями, различны. Более того, эти величины могут различаться даже при предъявлении эталонов, требующих одного и того же решения (столбцы 1 и 2, 3 и 4, 8 и 9).

    Таким образом, требуется корректировка параметров нейросети.

    Вернуться к учебному плану