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




Как же вводить обратные связи?


"Я дух родного твоего отца,

На некий срок скитаться осужденный

Ночной порой, а днем гореть в огне,

Пока мои земные окаянства

Не выгорят дотла".

В. Шекспир. "Гамлет, принц датский", перевод Б. Пастернака

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

Венедикт Ерофеев. "Москва–Петушки"

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

Пусть дядя Рамзай своими собственными глазами видел Васю, беседующего с Оксаной близ ее палатки. И было это не более пяти минут назад. Ясно, что по крайней мере еще минут на двадцать Васю следует исключить из процесса оценки достоверности последующих ситуаций. Желательно этот процесс автоматизировать. Это значит, что на входном слое должна быть учтена информация "Вася уже у Оксаны, следовательно, дальнейшее рассмотрение комбинаций с их участием нецелесообразно". И если вдруг появившийся Вовочка, прося на пряник, сообщает, что только что видел Васю у св. Аполлинарии, то дядя Рамзай, корректируя исходную информацию на текущий момент, должен игнорировать или учесть незначительно (в случае неверия собственным глазам) информацию Вовочки. Мы хотели бы, чтобы достоверность такой информации, с участием Васи и Оксаны, автоматически снижалась. Либо, наоборот, достоверность ситуаций без их участия должна увеличиваться.

И здесь мы можем не гоняться за достоверностью, требуя принадлежности ее величины диапазону [0, 1], а перейти к более общему понятию веса информации. Этот вес необходимо рассматривать как функцию времени. Ведь логично, что с течением времени вероятность участия Васи и Оксаны в последующих ситуациях должна как бы восстанавливаться.

Что необходимо для такой работы сети?

  1. Надо с большей определенностью дифференцировать ситуации на выходном слое. Например, если в решениях R1 и R2 замешаны не только Вася и Оксана, но и другие участники игры, то это затрудняет принятие конкретного решения только по Васе и только по Оксане. Нам необходимо корректировать дальнейшее решение по вхождению комбинации A1&C1, и не связывать, не объединять его, например, с вхождением комбинации A1&C2. Значит, надо расширить множество {Ri} принимаемых решений, повторяя ("размножая", см. лекцию 1), если необходимо, одно и то же решение для разных эталонных комбинаций.

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

Конкретными рекомендациями могут быть:

  1. Детализация, дифференциация эталонных ситуаций, по которым принимается не только "прямое" решение Ri, но и "обратное" решение, корректирующее характер использования исходных данных.

  2. Установление отрицательной обратной связи, которая ведет от каждого нейрона, отвечающего за решение по Васе, к нейрону А1 входного слоя.

  3. Установление отрицательной обратной связи, которая ведет от каждого нейрона, отвечающего за решение по Оксане, к нейрону С1 входного слоя.

  4. Установление "положительной" обратной связи от нейронов выходного слоя, отвечающих за решения по Васе, к нейрону А2, что усиливает шансы Пети в дальнейшей игре дяди Рамзая.

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

Строго следуя данным рекомендациям, на основе "размножения" решений, рекомендуемого в лекции 1, построим более подробную систему предикатов, которую мы воплотим с помощью нейросети:

 \begin{array}{lcr} A1\& B1\& C1\to R1 &&A2\& B3\& C1\to R4 \\ A1\& B1\& C2\to R1 & &A2\& B3\& C2\to R4\\ A1\& B1\& C3\to R1 & &A2\& B3\& C3\to R4\\ A1\& B1\& C4\to R1 & &A2\& B3\& C4\to R4\\ A1\& B1\& C5\to R1 & &A2\& B3\& C5\to R4\\ A1\& B2\& B3\& C1\to R2 & &A2\& B1\& B2\& C1\to R5\\ A1\& B2\& B3\& C2\to R2 & & A2\& B1\& B2\& C2\to R5\\ A1\& B2\& B3\& C3\to R2 & & A2\& B1\& B2\& C3\to R5\\ A1\& B2\& B3\& C4\to R3 & & A2\& B1\& B2\& C4\to R5\\ A1\& B2\& B3\& C5\to R3 & & A2\& B1\& B2\& C5\to R5\end{araay}

Нейросеть с обратными связями

Рис. 6.2.  Нейросеть с обратными связями

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

На рис. 6.2 представлен фрагмент, демонстрация начала построения возможной нейросети, которую мы вправе считать окончательным результатом наших исследований и готовы предъявить Заказчику. Чтобы сократить путаницу, мы не стали вводить положительные обратные связи.

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

Модуль веса обратной связи в нашем случае должен быть убывающей функцией времени. Пользуясь допустимыми условностью и приблизительностью, преследуя цель скорее качественную, нежели количественную, можно рассчитать величину отрицательной обратной связи по простой формуле. Например, если считать, что на один визит Вася расходует не менее 25 минут, то вес ? одного из дендритов нейрона А1 (аналогично – других нейронов входного слоя) находится следующим образом:

 \omega=\left \{ \begin{array}{ll} k\cdot \cfrac{t-t_0-25}{25}, & \mathbox{при} \: t_0 < t \le t_0+25\\ 0, & \mathbox{в \: противном \: случае} \end{array}\rigth

Здесь:

t0

– последний момент времени вовлечения соответствующей особы в действие (хранится в составе информации о данной особе – А1, А2, С1 и др.);

t0 + 25 – ожидаемое время повторного допустимого "использования" особы в деле;

t – текущий момент поступления новых разведданных, требующих использования нейросети;

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

Напомним, хотя это не имеет принципиального значения, что мы используем понравившуюся нам передаточную функцию для нахождения величины Vi

возбуждения i-го нейрона:

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

<


Содержание  Назад