Введение в нейронные сети

Построение обученных логических нейронных сетей

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

Нейронная сеть для распознавания символов

Построение "схемотехнической" модели распознавания букв

Пусть перед нами экран, разбитый на двенадцать клеток, 4 x 3. Клетки отображают дискретность элементов изображения. При фокусировании изображения клетка либо засвечивается, либо нет. "Засветка" определяет единичное значение величины ее возбуждения, "не засветка" — нулевое. Так, буква О определяет засветку клеток, определяемую на рис.2.1. Буква А засвечивает экран, как показано на рис.2.2.

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

Очевидно, надо все сигналы возбуждения клеток экрана, засвечиваемые буквой О, подать на конъюнктор, реализующий схему И. Единичный сигнал на выходе конъюнктора, как показано на рис.2.1, сформируется тогда и только тогда, когда засветятся все клетки экрана, на которое ложится изображение буквы О. Наличие единичного сигнала на выходе конъюнктора и определит ответ: "Это буква О".

(рис 2.1) Обучение букве "О" (рис 2.2) Обучение букве "А"

То же необходимо сделать и для буквы А.

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

$$(1,2) \land (2,1) \land (2,3) \land (3,1) \land (3,3) \land (4,2) \to О$$ $$(1,1) \land (1,3) \land (2,1) \land (2,2) \land (2,3) \land (3,1) \land (3,3) \land (4,2) \to А.$$

Эти предикаты определяют "электронное" воплощение методами схемотехники.

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

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

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

Но что делать, если буквы на экране пишутся дрожащей рукой? Тогда мы должны разрешить альтернативную засветку каких-то соседних клеток экрана и учитывать это с помощью операции дизъюнкции, ИЛИ. Как известно, в результате выполнения этой операции формируется единичный сигнал в том случае, если на входе есть хоть один единичный сигнал.

Рассмотрим возможность распознавания буквы О, допустив возможность засветки клеток (1,1), (1,3), (4,1), (4,3). Тогда ранее построенный предикат примет вид:

$$((1,1) \lor (1,2) \lor (1,3)) \land (2,1) \land (2,3) \land (3,1) \land (3,2) \land (3,3) \land ((4,1) \lor (4,2) \lor (4,3)) \to О.$$

Аналогично, для буквы А допустим засветку клеток (4,1) и (4,3):

$$(1,1) \land (2,1) \land (2,2) \land (2,3) \land (3,1) \land (3,2) \land (3,3) \land ((4,1) \lor (4,2) \lor (4,3)) \to А.$$ (рис 2.3) Совместное обучение буквам "О" и "А"

Объединив оба предиката, получим схему на рис.2.3.

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

Построение логической нейронной сети, обученной распознаванию букв

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

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

Значит, надо уйти от вполне определенных булевых переменных (0, 1, "да — нет", "белое — черное" и т.д.) в сторону неопределенности, достоверности или других оценок информации, — в сторону действительных переменных.

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

Преобразуем полученную нами обученную схему в нейронную сеть (рис.2.4).

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

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

(рис 2.4) Нейронная сеть для распознавания букв "О" и "А"

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

Первоначально находим $$V=\sum \limits_jV_j$$

Затем положим $$V_i= \begin{cases} V,\text{если V>h}\\ 0,\text{в противном случае} \end{cases}$$

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

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

Пусть при показе буквы О засветились нейроны-рецепторы (1,1), (1,2), (1,3), (2,1), (2,3), (3,1), (3,3), (4,2). Тогда, при h = 0 величины возбуждения нейронов примут значения $$V_1 = 3, V_2 = 1, V_O = 8, V_A = 7$$. Нейрон О возбудился более, чем нейрон А, указывая тем самым, что скорее всего была показана буква О. Аналогично можно рассчитать реакцию нейросети на все возможные конфигурации четко заданных эталонов букв.

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

$$ V_{(1,1)} = 0,2, V_{(1,2)} = 0,7, V_{(1,3)} = 0, V_{(2,1)} = 0,5, V_{(2,2)} = 0,1, V_{(2,3)} = 0,5,$$ $$V_{(3,1)} = 0,5, V_{(3,2)} = 0,5, V_{(3,3)} = 0,1, V_{(4,1)} = 0,4, V_{(4,2)} = 0,4, V_{(4,3)} = 0,5.$$

Считаем: $$V_1 = 0,9, V_2 = 1,3, V_O = 3,8, V_A = 3,9.$$

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

Рассмотренный принцип распознавания является обобщением принципа простейшего Персептрона, предложенного Ф. Розенблатом в 1959 г. [4] и ставшего классическим.

Построение обученной нейронной сети "Железнодорожная рулетка"

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

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

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

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

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

(рис 2.6) Система принятия решений

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

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

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

Ситуация 3. Кукуевский паровоз имеет скорость 80 км/ч (Событие А2), пырловский паровоз имеет скорость 60 км/ч (Событие В1). (Выполняется условие А2В1.) Тогда их точка встречи находится на третьем километре пути, что требует сочувственного вмешательства линейного с соломкой (решение R3), с оплатой труда в М3 условных единиц.

Ситуация 4. Кукуевский и пырловский паровозы имеют скорость 80 км/ч (Событие А2В2), что, ввиду высокой скорости перемещения линейных в середину перегона, требует решения R4 с затратами М4.

А теперь оживим эту структуру, заставим ее действовать, как, по-видимому, на логическом уровне действуют структуры нашего мозга.

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

Для других нейронов, "принимающих" возбуждение в соответствии со стрелками, введем функцию активации, в результате выполнения которой формируется величина V возбуждения каждого нейрона. Для нашего случая, не долго думая (ибо существует большой произвол в выборе вида функции активации, на любой вкус), определим вид такой функции $$V=\sum \limits_iV_i-h,$$ где i — индекс нейрона, "передающего" свое возбуждение данному нейрону, h — порог.

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

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

$$V_{R1}: 1 + 0 - 1 = 0, V_{R1} = 0;\\ V_{R2}: 1 + 1 - 1 = 1, V_{R2} = 1;\\ V_{R3}: 0 + 0 - 1 = -1, V_{R3} = 0;\\ V_{R4}: 0 + 1 - 1 = 0, V_{R4} = 0.$$

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

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

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

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

$$V_{R1}: 1 + 0,7 - 1 = 0,7, V_{R1} = 0,7;\\ V_{R2}: 1 + 0,4 - 1 = 0,4, V_{R2} = 0,4;\\ V_{R3}: 0 + 0,7 - 1 = -0,3, V_{R3} = 0;\\ V_{R4}: 0 + 0,4 - 1 = -0,6, V_{R4} = 0.$$

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

По известной формуле нахождения среднего мы можем оценить математическое ожидание того, на сколько облегчится карман начальника Кукуевской станции:

$$M= \frac {M1\cdot0,7+М2\cdot0,4+М3\cdot0+М4\cdot0}{0,7+0,4+0+0}$$

Построение "современной" нейросетевой системы принятия решений

В огороде бузина, а в Киеве дядька.

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

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

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

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

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

Начинаем решать пример

В России революция — дрогнула мать сыра земля, замутился белый свет…

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

Вася и Петя — друзья. Нет, не в том смысле: они почти нормальной сексуальной ориентации. Скорее, в смысле вечной святой мужской дружбы, без смущения применяющей слово "друг". Обозначим А — множество друзей,

А = {Вася, Петя}.

Вася и Петя — крутые парни. Они плохо учились в школе, и это хорошо! Они создали "крышу", под которой успешно трудится ряд палаток

С = {"Оксана", "Роксана", "Марина", "Регина", "Св. Аполлинария"},

заботливо опекаемые хозяйками, соответственно, Оксаной и Роксаной, Мариной и Региной, а также Аполлинарией. Палатки реализуют продукцию фирм

В = {Красный Киллер, Пират, Ночная Бабочка}.

Фирма Красный Киллер в секретных подвалах славных подразделений бойцов холодной войны на основе бабушкиного самогона и контрабандного синтетического спирта гонит всемирно известную вино-водочную продукцию отличного качества. Фирма Пират производит аудио- и видеопродукцию и другие культурные ценности. Фирма Ночная Бабочка стряпает французскую косметику из мосластых московских дворняг.

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

Дядя Рамзай – прогрессивный бизнесмен, и оценки прибыли решает проводить на высоком математическом уровне, обратившись за помощью к нам (рис.2.7). Мы хорошо учились в школе, и это — плохо! Мы, как истинные альтруисты и ученые-бессеребренники, с радостью поможем ему, — бесплатно.

(рис 2.7) Предмет исследования

А информации приходится обрабатывать дяде Рамзаю много. Он, прямо скажем, работает в условиях неопределенности и усиленных помех. Судите сами. Оксана делит любовь между Васей и Петей. Роксана — пока нет. Марина и Регина, жалея, подкармливают юных следопытов. Аполлинария вообще закадрила хахаля из местной мэрии и разъезжает в длиннющем "линкольне". Тщетно пытаясь разрушить узы бескорыстной дружбы, фирма Пират напрямую подмазала Васю, снизив нагрузку вымогательства на свою продукцию. Петя, кажется, пошел на нарушение Конвенции и вторгается в область, контролируемую конкурентами. (Ох, не избежать благородной разборки, со стрельбой и окровавленными трупами!) Скоро отмотает свой срок Никита, и предприятие расширится и т.д., и т.д., и т.д.…

Все такие обстоятельства прямо или косвенно влияют на долю прибыли дяди Рамзая.

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

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

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

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

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

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

    if A1 then

    if B1 then R1 else

    if (C1 \lor C2 \lor C3)

    then R2 else R3

    else

    if B3 then R4 else R5.

    Здесь R1 - R5 — принимаемые решения.

    Одно решение соответствует некоторой, в общем случае не единственной, комбинации событий. Для изображения таких комбинаций воспользуемся записями, например, вида $$А1 \land (В2 \lor В3) \land (С4 \lor С5)$$. Это означает, что Вася отправился в палатку то ли к Регине, то ли к Аполлинарии, торгующей продукцией то ли фирмы Пират, то ли фирмы Ночная Бабочка. Однако эта же запись означает, что все составляющие ее конъюнкции $$А1 \land В2 \land С4, А1 \land В3 \land С4$$ и др. приводят к одному и тому же решению.

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

    $$if A1 \land B1 \land (C1 \lor C2 \lor C3 \lor C4 \lor C5)\ then\ R1;\\ if A1 \land (B2 \lor B3) \land (C1 \lor C2 \lor C3)\ then\ R2;\\ if A1 \land (B2 \lor B3) \land (C4 \lor C5)\ then\ R3;\\ if A2 \land B3 \land (C1 \lor C2 \lor C3 \lor C4 \lor C5)\ then\ R4;\\ if A2 \land (B1 \lor B2) \land (C1 \lor C2 \lor C3 \lor C4 \lor C5)\ then\ R5. $$

    Тогда, например, первое логическое высказывание означает: "Если Вася отправился в одну из пяти палаток, и все они торгуют сегодня продукцией фирмы Красный Киллер, то следует принять решение R1 (например, заказать туристическую путевку)".

    Второе логическое высказывание означает: "Если Вася посетил одну из палаток С1, С2 или С3, торгующих сегодня продукцией фирм В2 и (или) В3, то следует принять решение R2" и т.д.

    "Схемотехнический" подход к построению нейросети "под задачу"

    Как и ранее, реализуем подход, используемый при построении схем устройств компьютера и другой электронной техники. Выделим функционально полную, для данного применения, систему булевых функций — дизъюнкцию $$ \lor $$ и конъюнкцию $$ \land $$.

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

    Построим (рис.2.8) схему, реализующую алгоритм счета значения выражения (2.1).

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

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

    (рис 2.8) "Электронная" схема системы принятия решений

    Значит, мы должны из точного, детерминированного представления перейти в область ассоциативного, неточного, приблизительного мышления! Но степень (частота) угадывания должна быть достаточно высока.

    Именно здесь должна помочь нейросеть, реализующая нечеткую логику.

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

    Выберем функцию активации произвольного (i-го) нейрона, с числом m входов-дендритов, первоначально рассчитав значение $$V:=\sum \limits_{j=1}^m {V_j \omega_{ij}$$. Затем находим Vi := if V < h then 0 else if V > 1 then 1 else V.

    Здесь $$V_j$$, как и ранее, величина возбуждения (другого нейрона), поступающая на j-й вход данного.

    Тогда нейрон-конъюнктор может быть реализован с помощью существенно высокого порога (рис.2.9), где значение $$\delta$$ обусловлено некой поправкой, достаточной, чтобы для преодоления порога сигналы возбуждения с высокой вероятностью поступали обязательно по всем входам.

    (рис 2.9) Модель нейрона-конъюнктора

    При обучении предполагается, что входные сигналы — булевы переменные, принимающие значения 0, 1. Положим $$\omega_{ij} = 1/m$$ и выберем $$ \delta < 1/m$$. Тогда для того, чтобы преодолеть порог, на всех входах должны быть "1"; недостаток хотя бы одной "1" приведет к тому, что взвешенная сумма будет более чем на 1/m меньше указанной суммы весов.

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

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

    (рис 2.10) Модель нейрона-дизъюнктора

    Итак, поменяем тип данных и заменим нейронами все элементы на схеме рис.2.8. Получим нейросеть на рис.2.11, где нейроны-конъюнкторы заштрихованы.

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

    Например, зададим "правильную" и абсолютно достоверную ситуацию В3 = 1, А1 = 1, С4 = 1 (Вася отправился к Регине, торгующей ямайским ромом). Легко проследить, что в первом такте возбудятся нейроны 1 и 6, реализующие дизъюнкцию. Величина их возбуждения равна "1". В следующем такте возбуждение нейронов 1, 6 и А1 приведет к возбуждению (с величиной, равной "1") нейронов 7 и 9, а в следующем такте — сигналы возбуждения нейронов 6 и 7 поступят на вход нейрона-конъюнктора Вых3. Никакой другой нейрон выходного слоя не возбудится.

    (рис 2.11) Нейросеть с "конъюнкторами" и "дизъюнкторами"

    Рассмотрим другую ситуацию, неопределенную и недостоверную.

    Пусть то ли Вася, то ли Петя – осведомитель не установил точно — направился то ли к Оксане, то ли к Аполлинарии, торгующим в этот день то ли тройным одеколоном, то ли золотым диском группы "Та-ра-рам".

    Дядя Рамзай, по выданной нами инструкции, решает использовать интуитивные оценки веса или, на нашем языке, оценить достоверность каждой компоненты возникшей ситуации. Поскольку прогулки как Васи, так и Пети одинаково достоверны, то дядя Рамзай полагает величину возбуждения нейронов А1 и А2 равной 0,5 (V_{A1} = V_{A2} = 0,5). После долгих раздумий он по наитию полагает V_{B1} = 0,8, V_{B2} = 0,8, V_{C1} = 0,7, V_{C5} = 0,8.

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

    Сдавая нейросеть "в эксплуатацию", мы установили веса всех конъюнкторов равными 0,5, а дизъюнкторов — равными 1. Пороги конъюнкторов определяются значением $$\delta$$ = 0,4. Пороги дизъюнкторов имеют нулевое значение.

    Важность данного примера требует повторения рисунка нейросети (рис.2.12) с проставленными возле нейронов значениями сигналов возбуждения.

    В итоге ситуация скорее всего имеет решение R5, и уж никак не R4. Однако ситуация, соответствующая решению R1, требует внимания и т.д.

    Пусть при вполне определенной ситуации (все достоверности принимают значение "1") каждое решение Ri приносит прибыль $$M_i$$ . Тогда средняя величина ожидаемой прибыли для нашей неопределенной ситуации рассчитывается так:

    $$M=\frac{\sum\limits_i{M_iV_{Выхi}}}{\sum\limits_i{V_{Выхi}}}=\frac{М_1\cdot0,825+М_2\cdot0,675+М_3\cdot0,725+М_4\cdot0,875}{3,1}$$ (рис 2.12) Расчет примера

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

    Построение нейросети "под задачу"

    Мы построили нейросеть – с экзотическими (с точки зрения невропатолога) конъюнкторами и дизъюнкторами.

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

    Введем функцию активации без ограничения по величине возбуждения, но не отрицательную (отрицательное значение разности примем нулевым):

    $$V:=\sum\limits_{j=1}^m{V_j\omega_{ij}-h_i}$$

    Положим $$\omega_{ij} = 0,8, h = 0,2$$. Сеть представлена на рис.2.13.

    Подадим на вход, например, ситуацию {A1, B1, C3}, требующую решения R1. Величины возбуждений нейронов показаны на рисунке.

    На основе расчетов по полученной сети составим табл. 2.3.1, отображающую правильную (!) работу сети при получении различных решений. При этом связи, предыстория которых определена дизъюнкторами, требуют проверки не более чем одного "представителя": в рассмотренном примере получаем тот же результат, если вместо С3 положим С1 или С2.

    (рис 2.13) Расчет примера на нейросети
    Примеры расчета принимаемых решений
    Ситуация Требуемое решение $$V_{Вых1}$$ $$V_{Вых2}$$ $$V_{Вых3}$$ $$V_{Вых4}$$ $$V_{Вых5}$$
    {A1, B1, C3} R1 1.144 0.76 0.28 0.024 0.248
    {A1, B2, C2} R2 0.504 1.144 0.664 0.024 0.248
    {A1, B3, C3] R2 0.504 1.144 0.664 0.504 0.024
    {A1, B2, C4} R3 0.504 0.664 1.144 0.024 0.224
    {A1, B3, C5} R3 0.504 0.664 1.144 0.504 0.024
    {A2, B3,C1} R4 0.024 0.504 0.024 1.144 0.504
    {A2, B1, C3} R5 0.504 0.28 0 0.504 0.888
    {A2, B2, C4} R5 0.024 0.024 0.504 0.504 0.888
    $$V_{B1} = V_{B2} = 0.8, V_{A1} = V_{A2} = 0.5, V_{C1} = 0.7, V_{C5} = 0.8$$ ? 0.824 0.529 0.593 0.312 1.003

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

    Рассмотрим ту же неопределенную ситуацию, показанную на рис.2.12. Она отражена в последней строке таблицы. Близка ли она более всего ситуации, когда Петя направился к Аполлинарии и надо принимать решение R5? Ситуация с Васей, устремившимся туда же, дает примерно тот же ответ.

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

    Переход к однослойной нейронной сети

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

    Очень часто на практике так и поступают. Поэтому широкое распространение получили так называемые однослойные сети. Построим такую сеть и для нашего примера (рис.2.14).

    (рис 2.14) Однослойная нейросеть

    Возьмем ту же функцию активации, с теми же параметрами и рассчитаем те же примеры, отображенные в табл. 2.3.1. Составим для них табл. 2.3.2.

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

    Примеры расчета решений по однослойной нейросети
    Ситуация Требуемое решение $$V_{Вых1}$$ $$V_{Вых2}$$ $$V_{Вых3}$$ $$V_{Вых4}$$ $$V_{Вых5}$$
    {A1, B1, C3} R1 2.2 1.4 0.6 0.6 1.4
    {A1, B2, C2} R2 1.4 2.2 1.4 0.6 1.4
    {A1, B3, C3] R2 1.4 2.2 1.4 1.4 0.6
    {A1, B2, C4} R3 1.4 1.4 2.2 0.6 1.4
    {A1, B3, C5} R3 1.4 1.4 2.2 1.4 0.6
    {A2, B3,C1} R4 1.4 1.4 0.6 2.2 1.4
    {A2, B1, C3} R5 1.4 0.6 0 1.4 2.2
    {A2, B2, C4} R5 0.6 0.6 1.4 1.4 2.2
    $$V_{B1} = V_{B2} = 0.8, V_{A1} = V_{A2} = 0.5, V_{C1} = 0.7, V_{C5} = 0.8$$ ? 2.04 1.4 0.84 1.4 2.68

    Проблема обучения "готовых" нейросетей

    Справедливо желание построения универсальных моделей нейросетей в составе программного обеспечения компьютера, снабженных механизмами приспособления под задачу пользователя. Еще более справедливо желание построить набор аппаратных средств — нейросетей (нейрокомпьютеров, НК), сопряженных с компьютером и, по выбору пользователя, участвующих в решении сложных задач. Такие аппаратно реализованные нейросети, как приставки или внешние устройства компьютера, например, определяют специальное направление использования ПЛИС — интегральных схем с программируемой логикой.

    Однослойная нейросеть

    Пусть первоначально дан граф, который можно интерпретировать однослойной нейросетью, составленной по принципу "каждый с каждым" (рис.2.15).

    (рис 2.15) Формирование однослойной нейросети

    Для задачи дяди Рамзая закрепим 10 нейронов рецепторного слоя за исходными данными, 5 выходов — за решениями. Этим мы выделим интересующую нас подсеть, как показано на том же рисунке.

    Выберем все ту же функцию активации

    $$V:=\sum\limits_{j=1}^m{V_j\omega_{ij}-h_i}$$

    Тогда, для реализации системы принятия решений, представленной на рис.2.14, предстоит подобрать значения $$\omega_{ij}$$. Значения hi для упрощения можно положить равными нулю.

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

    Установим веса связей между нейронами В1, А1, С1, С2, С3, С4, С5, с одной стороны, и нейроном Вых1 — с другой, равными единице, оставив нулевыми веса связей этого нейрона с другими нейронами входного слоя. Таким образом полностью исключается влияние других нейронов входного слоя на данный выходной нейрон. Конкретная задача может потребовать корректировки, учета взаимного влияния всех входных ситуаций в результате тщательного экспериментального исследования задачи.

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

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

    … Так какую же сеть предложить дяде Рамзаю? Ведь надо и подоходчивее, и попрактичнее, но и так, чтобы не казалось уж слишком просто.

    Нейросеть на основе графа произвольной структуры

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

    Пусть выбранная нами нейросеть имеет 12 входов (более чем достаточно), 5 выходов и реализует ту же передаточную функцию с начальными значениями весов $$\omega_{ij} = 0$$ и порога h = 0.

    Однако сеть обладает специфической топологией, затрудняющей ее обучение. Сеть многослойная, что исключает связи "через слой", присутствующие, например, на рис.2.13, как результат построения нейросети "под задачу". Да и связь между слоями, скорее, соответствует известному предупреждению "шаг влево, шаг вправо…".

    Будем использовать метод трассировки, расширяющий использованный выше "схемотехнический" подход. Суть метода - в трассировке соединений, в назначении высоких (как правило – единичных) весов некоторых связей, превращающих нейросеть в законченное функциональное устройство, реализующее заданную зависимость значений сигналов на выходах от значений сигналов на входах. При такой трассировке обучение производится на эталонах в полном смысле этого слова, на вполне определенных (достоверных) ситуациях, например, на отсутствии (0) события или на его наступлении (1). После обучения сеть должна выдавать наиболее близкое решение при недостоверной информации, т.е. согласно вероятности наступления того или иного события. Хотя, как показано на примерах, можно выйти и за рамки теории вероятности, не требуя полноты множества событий и условий нормировки, но взвешивая события на основе каких-то других принципов.

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

    (рис 2.16) Результат трассировки многослойной нейросети

    Систематизируя муки комбинаторного мышления, проанализируем свои действия:

  • Мы анализировали слой за слоем, постоянно помня цель — пять комбинаций ситуаций, каждая из которых должна возбудить один из нейронов выходного слоя. Пока мы не вводили жесткое закрепление решений за этими нейронами.
  • В каждом слое мы собирали частную комбинацию — терм, который можно использовать в последующем, — из доступных термов предыдущего слоя.
  • Термы, которые пока не могут быть использованы при конструировании из-за их взаимной удаленности, мы запоминали без изменения на анализируемом слое, пытаясь их "подтянуть" в направлении возможного дальнейшего объединения.
  • Мы старались не "тянуть" термы "поперек" всей сети. В противном случае мы сталкивались бы с проблемой: как избегать пересечений и искажения уже сформированных термов. Все это заставило нас долго не закреплять нейроны выходного слоя за решениями, что, в конце концов, привело к нарушению естественного порядка следования решений.
  • Таким образом, возникает задача дальнейших исследований: как построить все необходимые пути возбуждения так, чтобы они, возможно, пересекались, — но только для формирования общих термов? А способна ли выбранная нами "готовая" нейросеть вообще справиться с поставленной задачей или предпочтительнее принцип "нейросеть под задачу"? Эти исследования отражены в [1 - 5].

    … Вот теперь-то мы довольны! Мы снабдили дядю Рамзая универсальной обучаемой нейросетью. Теперь, если он, раскаявшись, вновь возлюбит свою благороднейшую профессию, он найдет ей (сети) достойное применение в водворении Васи, Пети K0 на то спальное место, которое они действительно заслуживают.

    Ключевые термины

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

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

    Дизъюнктор – прибор, реализующий функцию ИЛИ, при которой на выходе образуется единица, если единица подается хотя бы на один вход.

    Краткие итоги

  • Распознавание символов (после центровки и масштабирования) целесообразно производить с помощью заключения эталонов в области экрана (эталонные области, ловушки), достаточно широко (с учетом искажений испытываемых символов) охватывающие эти эталоны. Исследуется, какую из известных эталонных областей в наибольшей степени и с превышением порога покрывает испытываемый символ. Для этого функция активации строится на основе суммирования сигналов в каждой эталонной области. Если при проверке всех известных эталонных областей порог распознавания не был превышен, подаваемый символ признается неизвестным.
  • Нейронная сеть строится посредством непосредственной связи всех рецепторов, образующих одну эталонную область ($$\Delta$$) с нейроном, говорящим: "Это символ (буква) $$\Delta$$!"
  • Тактическая игровая система строится на основе знания всех возможных ситуаций факторного пространства событий и соответствующих им решений. Рецепторы, на которые подается достоверность событий, характеризующих ситуацию, непосредственно связываются с нейронами, "отвечающими" за решения по данной ситуации. Максимально возбудившийся, в результате счета значения функции активации, нейрон определяет принимаемое решение.
  • Построение более сложных систем принятия решений производится на основе их логического описания. Воспроизведение промежуточной схемы нейронной сети подобно схемотехническому ее воплощению с помощью конъюнкторов и дизъюнкторов.
  • Переход к нейронам для использования нечетких данных на входе производится с помощью нечеткой логики – приближенного построения конъюнкторов и дизъюнкторов с помощью нейронов.
  • Так как трудно себе представить специализацию нейронов "в голове", то выяснилось, что единообразные, "стандартные" нейроны вполне способны в составе полученной схемы определять правильное решение. Так производится переход и от нечеткой логики к чисто нейронной сети. Таким образом, пункты 4 и 5 служат обоснованию и иллюстрации, но ни в коем случае не определяют технологию разработки.
  • Важным представляется дальнейший шаг к упрощению нейронной сети - переход к однослойной логической нейронной сети, применяемой практически во всех случаях, не требующих обратных связей.
  • Вопросы:

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

    Изобразите экран $$ 8 \times 16$$ клеток. Каждую клетку интерпретируйте рецептором, способным воспринимать извне величину возбуждения в диапазоне 0 – 1. Для обучения одной букве условно нарисуйте на экране эталон буквы О. Окружите линию этого эталона клетками (рецепторами) с некоторым запасом (как показано на рисунке) так, чтобы создать "ловушку" для захвата основной части нечетко и с искажениями изображаемой буквы О. Соедините все рецепторы "ловушки" буквы О связями (с единичными весами) с нейроном, отвечающим за вывод: "Это буква О".

    Выберите функцию активации этого нейрона $$f_O= \frac {1}{N_O} \sum \limits_i {f_i}-h$$, при отрицательном значении разности принимающую нулевое значение. $$N_O$$ – количество рецепторов, образующих "ловушку" буквы О, $$f_i$$ – величина возбуждения i-го рецептора, h – единый порог, подбираемый экспериментально для всех букв, распознаванию которых производится обучение. По рисунку $$N_O$$ =68.

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

    Функция активации этого нейрона имеет тот же вид $$f_A= \frac {1}{N_A} \sum \limits_i {f_i}-h$$, однако $$N_A$$ = 74. (Данное нормирование производится для уравнивания всех букв, которым обучается нейросеть.)

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

    Перейдите к рабочему режиму распознавания. На рисунке показан вариант зашумленной засветки экрана. Слева наложена "ловушка" для распознавания буквы О. Справа – "ловушка" для распознавания буквы А.

    Сумма сигналов в "ловушке" О равна 49,2. Пусть h = 0,7. Тогда $$f_O$$ = 0,72 - 0,7 = 0,02. Сумма сигналов в "ловушке" А равна 36,9, $$f_A$$ = 0. Нейросеть высказалась за то, что ей была предъявлена "зашумленная" буква О.

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

    Вы, несомненно, столкнетесь с малой разрешающей способностью экрана $$ 8 \times 16$$. Кроме того, данная лабораторная работа ограничена центровкой и масштабированием образов. Так что перед экспериментатором неограниченные возможности!

    Лабораторная работа 2. Построение, верификация и исследование логической нейронной сети

    Тщательно изучите разделы 2.2 и 2.3. По точно известным ситуациям, на основе 5 - 6 достоверных, т.е. "единичных", наборов данных, произведите верификацию всех вариантов выполнения системы принятия решений: "электронной" схемы, схемы на нечеткой логике, "многослойной" и однослойной нейронной сети.

    Каждый удовлетворительный результат анализа сопровождайте расчетом 2 - 3 (единых для всех способов построения СПР) вариантов нечеткого задания данных. Результаты должны совпасть.

    При задании возбуждения рецепторов следуйте принципу исчерпывающих множеств событий.

    Страницы:

    Нейронная сеть для распознавания символов

    Построение "схемотехнической" модели распознавания букв

    Пусть перед нами экран, разбитый на двенадцать клеток, 4 x 3. Клетки отображают дискретность элементов изображения. При фокусировании изображения клетка либо засвечивается, либо нет. "Засветка" определяет единичное значение величины ее возбуждения, "не засветка" — нулевое. Так, буква О определяет засветку клеток, определяемую на рис.2.1. Буква А засвечивает экран, как показано на рис.2.2.

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

    Очевидно, надо все сигналы возбуждения клеток экрана, засвечиваемые буквой О, подать на конъюнктор, реализующий схему И. Единичный сигнал на выходе конъюнктора, как показано на рис.2.1, сформируется тогда и только тогда, когда засветятся все клетки экрана, на которое ложится изображение буквы О. Наличие единичного сигнала на выходе конъюнктора и определит ответ: "Это буква О".

    (рис 2.1) Обучение букве "О" (рис 2.2) Обучение букве "А"

    То же необходимо сделать и для буквы А.

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

    $$(1,2) \land (2,1) \land (2,3) \land (3,1) \land (3,3) \land (4,2) \to О$$ $$(1,1) \land (1,3) \land (2,1) \land (2,2) \land (2,3) \land (3,1) \land (3,3) \land (4,2) \to А.$$

    Эти предикаты определяют "электронное" воплощение методами схемотехники.

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

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

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

    Но что делать, если буквы на экране пишутся дрожащей рукой? Тогда мы должны разрешить альтернативную засветку каких-то соседних клеток экрана и учитывать это с помощью операции дизъюнкции, ИЛИ. Как известно, в результате выполнения этой операции формируется единичный сигнал в том случае, если на входе есть хоть один единичный сигнал.

    Рассмотрим возможность распознавания буквы О, допустив возможность засветки клеток (1,1), (1,3), (4,1), (4,3). Тогда ранее построенный предикат примет вид:

    $$((1,1) \lor (1,2) \lor (1,3)) \land (2,1) \land (2,3) \land (3,1) \land (3,2) \land (3,3) \land ((4,1) \lor (4,2) \lor (4,3)) \to О.$$

    Аналогично, для буквы А допустим засветку клеток (4,1) и (4,3):

    $$(1,1) \land (2,1) \land (2,2) \land (2,3) \land (3,1) \land (3,2) \land (3,3) \land ((4,1) \lor (4,2) \lor (4,3)) \to А.$$ (рис 2.3) Совместное обучение буквам "О" и "А"

    Объединив оба предиката, получим схему на рис.2.3.

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

    Построение логической нейронной сети, обученной распознаванию букв

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

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

    Значит, надо уйти от вполне определенных булевых переменных (0, 1, "да — нет", "белое — черное" и т.д.) в сторону неопределенности, достоверности или других оценок информации, — в сторону действительных переменных.

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

    Преобразуем полученную нами обученную схему в нейронную сеть (рис.2.4).

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

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

    (рис 2.4) Нейронная сеть для распознавания букв "О" и "А"

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

    Первоначально находим $$V=\sum \limits_jV_j$$

    Затем положим $$V_i= \begin{cases} V,\text{если V>h}\\ 0,\text{в противном случае} \end{cases}$$

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

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

    Пусть при показе буквы О засветились нейроны-рецепторы (1,1), (1,2), (1,3), (2,1), (2,3), (3,1), (3,3), (4,2). Тогда, при h = 0 величины возбуждения нейронов примут значения $$V_1 = 3, V_2 = 1, V_O = 8, V_A = 7$$. Нейрон О возбудился более, чем нейрон А, указывая тем самым, что скорее всего была показана буква О. Аналогично можно рассчитать реакцию нейросети на все возможные конфигурации четко заданных эталонов букв.

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

    $$ V_{(1,1)} = 0,2, V_{(1,2)} = 0,7, V_{(1,3)} = 0, V_{(2,1)} = 0,5, V_{(2,2)} = 0,1, V_{(2,3)} = 0,5,$$ $$V_{(3,1)} = 0,5, V_{(3,2)} = 0,5, V_{(3,3)} = 0,1, V_{(4,1)} = 0,4, V_{(4,2)} = 0,4, V_{(4,3)} = 0,5.$$

    Считаем: $$V_1 = 0,9, V_2 = 1,3, V_O = 3,8, V_A = 3,9.$$

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

    Рассмотренный принцип распознавания является обобщением принципа простейшего Персептрона, предложенного Ф. Розенблатом в 1959 г. [4] и ставшего классическим.

    Построение обученной нейронной сети "Железнодорожная рулетка"

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

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

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

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

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

    (рис 2.6) Система принятия решений

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

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

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

    Ситуация 3. Кукуевский паровоз имеет скорость 80 км/ч (Событие А2), пырловский паровоз имеет скорость 60 км/ч (Событие В1). (Выполняется условие А2В1.) Тогда их точка встречи находится на третьем километре пути, что требует сочувственного вмешательства линейного с соломкой (решение R3), с оплатой труда в М3 условных единиц.

    Ситуация 4. Кукуевский и пырловский паровозы имеют скорость 80 км/ч (Событие А2В2), что, ввиду высокой скорости перемещения линейных в середину перегона, требует решения R4 с затратами М4.

    А теперь оживим эту структуру, заставим ее действовать, как, по-видимому, на логическом уровне действуют структуры нашего мозга.

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

    Для других нейронов, "принимающих" возбуждение в соответствии со стрелками, введем функцию активации, в результате выполнения которой формируется величина V возбуждения каждого нейрона. Для нашего случая, не долго думая (ибо существует большой произвол в выборе вида функции активации, на любой вкус), определим вид такой функции $$V=\sum \limits_iV_i-h,$$ где i — индекс нейрона, "передающего" свое возбуждение данному нейрону, h — порог.

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

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

    $$V_{R1}: 1 + 0 - 1 = 0, V_{R1} = 0;\\ V_{R2}: 1 + 1 - 1 = 1, V_{R2} = 1;\\ V_{R3}: 0 + 0 - 1 = -1, V_{R3} = 0;\\ V_{R4}: 0 + 1 - 1 = 0, V_{R4} = 0.$$

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

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

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

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

    $$V_{R1}: 1 + 0,7 - 1 = 0,7, V_{R1} = 0,7;\\ V_{R2}: 1 + 0,4 - 1 = 0,4, V_{R2} = 0,4;\\ V_{R3}: 0 + 0,7 - 1 = -0,3, V_{R3} = 0;\\ V_{R4}: 0 + 0,4 - 1 = -0,6, V_{R4} = 0.$$

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

    По известной формуле нахождения среднего мы можем оценить математическое ожидание того, на сколько облегчится карман начальника Кукуевской станции:

    $$M= \frac {M1\cdot0,7+М2\cdot0,4+М3\cdot0+М4\cdot0}{0,7+0,4+0+0}$$

    Построение "современной" нейросетевой системы принятия решений

    В огороде бузина, а в Киеве дядька.

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

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

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

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

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

    Начинаем решать пример

    В России революция — дрогнула мать сыра земля, замутился белый свет…

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

    Вася и Петя — друзья. Нет, не в том смысле: они почти нормальной сексуальной ориентации. Скорее, в смысле вечной святой мужской дружбы, без смущения применяющей слово "друг". Обозначим А — множество друзей,

    А = {Вася, Петя}.

    Вася и Петя — крутые парни. Они плохо учились в школе, и это хорошо! Они создали "крышу", под которой успешно трудится ряд палаток

    С = {"Оксана", "Роксана", "Марина", "Регина", "Св. Аполлинария"},

    заботливо опекаемые хозяйками, соответственно, Оксаной и Роксаной, Мариной и Региной, а также Аполлинарией. Палатки реализуют продукцию фирм

    В = {Красный Киллер, Пират, Ночная Бабочка}.

    Фирма Красный Киллер в секретных подвалах славных подразделений бойцов холодной войны на основе бабушкиного самогона и контрабандного синтетического спирта гонит всемирно известную вино-водочную продукцию отличного качества. Фирма Пират производит аудио- и видеопродукцию и другие культурные ценности. Фирма Ночная Бабочка стряпает французскую косметику из мосластых московских дворняг.

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

    Дядя Рамзай – прогрессивный бизнесмен, и оценки прибыли решает проводить на высоком математическом уровне, обратившись за помощью к нам (рис.2.7). Мы хорошо учились в школе, и это — плохо! Мы, как истинные альтруисты и ученые-бессеребренники, с радостью поможем ему, — бесплатно.

    (рис 2.7) Предмет исследования

    А информации приходится обрабатывать дяде Рамзаю много. Он, прямо скажем, работает в условиях неопределенности и усиленных помех. Судите сами. Оксана делит любовь между Васей и Петей. Роксана — пока нет. Марина и Регина, жалея, подкармливают юных следопытов. Аполлинария вообще закадрила хахаля из местной мэрии и разъезжает в длиннющем "линкольне". Тщетно пытаясь разрушить узы бескорыстной дружбы, фирма Пират напрямую подмазала Васю, снизив нагрузку вымогательства на свою продукцию. Петя, кажется, пошел на нарушение Конвенции и вторгается в область, контролируемую конкурентами. (Ох, не избежать благородной разборки, со стрельбой и окровавленными трупами!) Скоро отмотает свой срок Никита, и предприятие расширится и т.д., и т.д., и т.д.…

    Все такие обстоятельства прямо или косвенно влияют на долю прибыли дяди Рамзая.

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

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

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

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

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

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

    if A1 then

    if B1 then R1 else

    if (C1 \lor C2 \lor C3)

    then R2 else R3

    else

    if B3 then R4 else R5.

    Здесь R1 - R5 — принимаемые решения.

    Одно решение соответствует некоторой, в общем случае не единственной, комбинации событий. Для изображения таких комбинаций воспользуемся записями, например, вида $$А1 \land (В2 \lor В3) \land (С4 \lor С5)$$. Это означает, что Вася отправился в палатку то ли к Регине, то ли к Аполлинарии, торгующей продукцией то ли фирмы Пират, то ли фирмы Ночная Бабочка. Однако эта же запись означает, что все составляющие ее конъюнкции $$А1 \land В2 \land С4, А1 \land В3 \land С4$$ и др. приводят к одному и тому же решению.

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

    $$if A1 \land B1 \land (C1 \lor C2 \lor C3 \lor C4 \lor C5)\ then\ R1;\\ if A1 \land (B2 \lor B3) \land (C1 \lor C2 \lor C3)\ then\ R2;\\ if A1 \land (B2 \lor B3) \land (C4 \lor C5)\ then\ R3;\\ if A2 \land B3 \land (C1 \lor C2 \lor C3 \lor C4 \lor C5)\ then\ R4;\\ if A2 \land (B1 \lor B2) \land (C1 \lor C2 \lor C3 \lor C4 \lor C5)\ then\ R5. $$

    Тогда, например, первое логическое высказывание означает: "Если Вася отправился в одну из пяти палаток, и все они торгуют сегодня продукцией фирмы Красный Киллер, то следует принять решение R1 (например, заказать туристическую путевку)".

    Второе логическое высказывание означает: "Если Вася посетил одну из палаток С1, С2 или С3, торгующих сегодня продукцией фирм В2 и (или) В3, то следует принять решение R2" и т.д.

    "Схемотехнический" подход к построению нейросети "под задачу"

    Как и ранее, реализуем подход, используемый при построении схем устройств компьютера и другой электронной техники. Выделим функционально полную, для данного применения, систему булевых функций — дизъюнкцию $$ \lor $$ и конъюнкцию $$ \land $$.

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

    Построим (рис.2.8) схему, реализующую алгоритм счета значения выражения (2.1).

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

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

    (рис 2.8) "Электронная" схема системы принятия решений

    Значит, мы должны из точного, детерминированного представления перейти в область ассоциативного, неточного, приблизительного мышления! Но степень (частота) угадывания должна быть достаточно высока.

    Именно здесь должна помочь нейросеть, реализующая нечеткую логику.

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

    Выберем функцию активации произвольного (i-го) нейрона, с числом m входов-дендритов, первоначально рассчитав значение $$V:=\sum \limits_{j=1}^m {V_j \omega_{ij}$$. Затем находим Vi := if V < h then 0 else if V > 1 then 1 else V.

    Здесь $$V_j$$, как и ранее, величина возбуждения (другого нейрона), поступающая на j-й вход данного.

    Тогда нейрон-конъюнктор может быть реализован с помощью существенно высокого порога (рис.2.9), где значение $$\delta$$ обусловлено некой поправкой, достаточной, чтобы для преодоления порога сигналы возбуждения с высокой вероятностью поступали обязательно по всем входам.

    (рис 2.9) Модель нейрона-конъюнктора

    При обучении предполагается, что входные сигналы — булевы переменные, принимающие значения 0, 1. Положим $$\omega_{ij} = 1/m$$ и выберем $$ \delta < 1/m$$. Тогда для того, чтобы преодолеть порог, на всех входах должны быть "1"; недостаток хотя бы одной "1" приведет к тому, что взвешенная сумма будет более чем на 1/m меньше указанной суммы весов.

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

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

    (рис 2.10) Модель нейрона-дизъюнктора

    Итак, поменяем тип данных и заменим нейронами все элементы на схеме рис.2.8. Получим нейросеть на рис.2.11, где нейроны-конъюнкторы заштрихованы.

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

    Например, зададим "правильную" и абсолютно достоверную ситуацию В3 = 1, А1 = 1, С4 = 1 (Вася отправился к Регине, торгующей ямайским ромом). Легко проследить, что в первом такте возбудятся нейроны 1 и 6, реализующие дизъюнкцию. Величина их возбуждения равна "1". В следующем такте возбуждение нейронов 1, 6 и А1 приведет к возбуждению (с величиной, равной "1") нейронов 7 и 9, а в следующем такте — сигналы возбуждения нейронов 6 и 7 поступят на вход нейрона-конъюнктора Вых3. Никакой другой нейрон выходного слоя не возбудится.

    (рис 2.11) Нейросеть с "конъюнкторами" и "дизъюнкторами"

    Рассмотрим другую ситуацию, неопределенную и недостоверную.

    Пусть то ли Вася, то ли Петя – осведомитель не установил точно — направился то ли к Оксане, то ли к Аполлинарии, торгующим в этот день то ли тройным одеколоном, то ли золотым диском группы "Та-ра-рам".

    Дядя Рамзай, по выданной нами инструкции, решает использовать интуитивные оценки веса или, на нашем языке, оценить достоверность каждой компоненты возникшей ситуации. Поскольку прогулки как Васи, так и Пети одинаково достоверны, то дядя Рамзай полагает величину возбуждения нейронов А1 и А2 равной 0,5 (V_{A1} = V_{A2} = 0,5). После долгих раздумий он по наитию полагает V_{B1} = 0,8, V_{B2} = 0,8, V_{C1} = 0,7, V_{C5} = 0,8.

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

    Сдавая нейросеть "в эксплуатацию", мы установили веса всех конъюнкторов равными 0,5, а дизъюнкторов — равными 1. Пороги конъюнкторов определяются значением $$\delta$$ = 0,4. Пороги дизъюнкторов имеют нулевое значение.

    Важность данного примера требует повторения рисунка нейросети (рис.2.12) с проставленными возле нейронов значениями сигналов возбуждения.

    В итоге ситуация скорее всего имеет решение R5, и уж никак не R4. Однако ситуация, соответствующая решению R1, требует внимания и т.д.

    Пусть при вполне определенной ситуации (все достоверности принимают значение "1") каждое решение Ri приносит прибыль $$M_i$$ . Тогда средняя величина ожидаемой прибыли для нашей неопределенной ситуации рассчитывается так:

    $$M=\frac{\sum\limits_i{M_iV_{Выхi}}}{\sum\limits_i{V_{Выхi}}}=\frac{М_1\cdot0,825+М_2\cdot0,675+М_3\cdot0,725+М_4\cdot0,875}{3,1}$$ (рис 2.12) Расчет примера

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

    Построение нейросети "под задачу"

    Мы построили нейросеть – с экзотическими (с точки зрения невропатолога) конъюнкторами и дизъюнкторами.

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

    Введем функцию активации без ограничения по величине возбуждения, но не отрицательную (отрицательное значение разности примем нулевым):

    $$V:=\sum\limits_{j=1}^m{V_j\omega_{ij}-h_i}$$

    Положим $$\omega_{ij} = 0,8, h = 0,2$$. Сеть представлена на рис.2.13.

    Подадим на вход, например, ситуацию {A1, B1, C3}, требующую решения R1. Величины возбуждений нейронов показаны на рисунке.

    На основе расчетов по полученной сети составим табл. 2.3.1, отображающую правильную (!) работу сети при получении различных решений. При этом связи, предыстория которых определена дизъюнкторами, требуют проверки не более чем одного "представителя": в рассмотренном примере получаем тот же результат, если вместо С3 положим С1 или С2.

    (рис 2.13) Расчет примера на нейросети
    Примеры расчета принимаемых решений
    Ситуация Требуемое решение $$V_{Вых1}$$ $$V_{Вых2}$$ $$V_{Вых3}$$ $$V_{Вых4}$$ $$V_{Вых5}$$
    {A1, B1, C3} R1 1.144 0.76 0.28 0.024 0.248
    {A1, B2, C2} R2 0.504 1.144 0.664 0.024 0.248
    {A1, B3, C3] R2 0.504 1.144 0.664 0.504 0.024
    {A1, B2, C4} R3 0.504 0.664 1.144 0.024 0.224
    {A1, B3, C5} R3 0.504 0.664 1.144 0.504 0.024
    {A2, B3,C1} R4 0.024 0.504 0.024 1.144 0.504
    {A2, B1, C3} R5 0.504 0.28 0 0.504 0.888
    {A2, B2, C4} R5 0.024 0.024 0.504 0.504 0.888
    $$V_{B1} = V_{B2} = 0.8, V_{A1} = V_{A2} = 0.5, V_{C1} = 0.7, V_{C5} = 0.8$$ ? 0.824 0.529 0.593 0.312 1.003

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

    Рассмотрим ту же неопределенную ситуацию, показанную на рис.2.12. Она отражена в последней строке таблицы. Близка ли она более всего ситуации, когда Петя направился к Аполлинарии и надо принимать решение R5? Ситуация с Васей, устремившимся туда же, дает примерно тот же ответ.

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

    Переход к однослойной нейронной сети

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

    Очень часто на практике так и поступают. Поэтому широкое распространение получили так называемые однослойные сети. Построим такую сеть и для нашего примера (рис.2.14).

    (рис 2.14) Однослойная нейросеть

    Возьмем ту же функцию активации, с теми же параметрами и рассчитаем те же примеры, отображенные в табл. 2.3.1. Составим для них табл. 2.3.2.

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

    Примеры расчета решений по однослойной нейросети
    Ситуация Требуемое решение $$V_{Вых1}$$ $$V_{Вых2}$$ $$V_{Вых3}$$ $$V_{Вых4}$$ $$V_{Вых5}$$
    {A1, B1, C3} R1 2.2 1.4 0.6 0.6 1.4
    {A1, B2, C2} R2 1.4 2.2 1.4 0.6 1.4
    {A1, B3, C3] R2 1.4 2.2 1.4 1.4 0.6
    {A1, B2, C4} R3 1.4 1.4 2.2 0.6 1.4
    {A1, B3, C5} R3 1.4 1.4 2.2 1.4 0.6
    {A2, B3,C1} R4 1.4 1.4 0.6 2.2 1.4
    {A2, B1, C3} R5 1.4 0.6 0 1.4 2.2
    {A2, B2, C4} R5 0.6 0.6 1.4 1.4 2.2
    $$V_{B1} = V_{B2} = 0.8, V_{A1} = V_{A2} = 0.5, V_{C1} = 0.7, V_{C5} = 0.8$$ ? 2.04 1.4 0.84 1.4 2.68

    Проблема обучения "готовых" нейросетей

    Справедливо желание построения универсальных моделей нейросетей в составе программного обеспечения компьютера, снабженных механизмами приспособления под задачу пользователя. Еще более справедливо желание построить набор аппаратных средств — нейросетей (нейрокомпьютеров, НК), сопряженных с компьютером и, по выбору пользователя, участвующих в решении сложных задач. Такие аппаратно реализованные нейросети, как приставки или внешние устройства компьютера, например, определяют специальное направление использования ПЛИС — интегральных схем с программируемой логикой.

    Однослойная нейросеть

    Пусть первоначально дан граф, который можно интерпретировать однослойной нейросетью, составленной по принципу "каждый с каждым" (рис.2.15).

    (рис 2.15) Формирование однослойной нейросети

    Для задачи дяди Рамзая закрепим 10 нейронов рецепторного слоя за исходными данными, 5 выходов — за решениями. Этим мы выделим интересующую нас подсеть, как показано на том же рисунке.

    Выберем все ту же функцию активации

    $$V:=\sum\limits_{j=1}^m{V_j\omega_{ij}-h_i}$$

    Тогда, для реализации системы принятия решений, представленной на рис.2.14, предстоит подобрать значения $$\omega_{ij}$$. Значения hi для упрощения можно положить равными нулю.

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

    Установим веса связей между нейронами В1, А1, С1, С2, С3, С4, С5, с одной стороны, и нейроном Вых1 — с другой, равными единице, оставив нулевыми веса связей этого нейрона с другими нейронами входного слоя. Таким образом полностью исключается влияние других нейронов входного слоя на данный выходной нейрон. Конкретная задача может потребовать корректировки, учета взаимного влияния всех входных ситуаций в результате тщательного экспериментального исследования задачи.

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

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

    … Так какую же сеть предложить дяде Рамзаю? Ведь надо и подоходчивее, и попрактичнее, но и так, чтобы не казалось уж слишком просто.

    Нейросеть на основе графа произвольной структуры

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

    Пусть выбранная нами нейросеть имеет 12 входов (более чем достаточно), 5 выходов и реализует ту же передаточную функцию с начальными значениями весов $$\omega_{ij} = 0$$ и порога h = 0.

    Однако сеть обладает специфической топологией, затрудняющей ее обучение. Сеть многослойная, что исключает связи "через слой", присутствующие, например, на рис.2.13, как результат построения нейросети "под задачу". Да и связь между слоями, скорее, соответствует известному предупреждению "шаг влево, шаг вправо…".

    Будем использовать метод трассировки, расширяющий использованный выше "схемотехнический" подход. Суть метода - в трассировке соединений, в назначении высоких (как правило – единичных) весов некоторых связей, превращающих нейросеть в законченное функциональное устройство, реализующее заданную зависимость значений сигналов на выходах от значений сигналов на входах. При такой трассировке обучение производится на эталонах в полном смысле этого слова, на вполне определенных (достоверных) ситуациях, например, на отсутствии (0) события или на его наступлении (1). После обучения сеть должна выдавать наиболее близкое решение при недостоверной информации, т.е. согласно вероятности наступления того или иного события. Хотя, как показано на примерах, можно выйти и за рамки теории вероятности, не требуя полноты множества событий и условий нормировки, но взвешивая события на основе каких-то других принципов.

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

    (рис 2.16) Результат трассировки многослойной нейросети

    Систематизируя муки комбинаторного мышления, проанализируем свои действия:

  • Мы анализировали слой за слоем, постоянно помня цель — пять комбинаций ситуаций, каждая из которых должна возбудить один из нейронов выходного слоя. Пока мы не вводили жесткое закрепление решений за этими нейронами.
  • В каждом слое мы собирали частную комбинацию — терм, который можно использовать в последующем, — из доступных термов предыдущего слоя.
  • Термы, которые пока не могут быть использованы при конструировании из-за их взаимной удаленности, мы запоминали без изменения на анализируемом слое, пытаясь их "подтянуть" в направлении возможного дальнейшего объединения.
  • Мы старались не "тянуть" термы "поперек" всей сети. В противном случае мы сталкивались бы с проблемой: как избегать пересечений и искажения уже сформированных термов. Все это заставило нас долго не закреплять нейроны выходного слоя за решениями, что, в конце концов, привело к нарушению естественного порядка следования решений.
  • Таким образом, возникает задача дальнейших исследований: как построить все необходимые пути возбуждения так, чтобы они, возможно, пересекались, — но только для формирования общих термов? А способна ли выбранная нами "готовая" нейросеть вообще справиться с поставленной задачей или предпочтительнее принцип "нейросеть под задачу"? Эти исследования отражены в [1 - 5].

    … Вот теперь-то мы довольны! Мы снабдили дядю Рамзая универсальной обучаемой нейросетью. Теперь, если он, раскаявшись, вновь возлюбит свою благороднейшую профессию, он найдет ей (сети) достойное применение в водворении Васи, Пети K0 на то спальное место, которое они действительно заслуживают.

    Ключевые термины

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

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

    Дизъюнктор – прибор, реализующий функцию ИЛИ, при которой на выходе образуется единица, если единица подается хотя бы на один вход.

    Краткие итоги

  • Распознавание символов (после центровки и масштабирования) целесообразно производить с помощью заключения эталонов в области экрана (эталонные области, ловушки), достаточно широко (с учетом искажений испытываемых символов) охватывающие эти эталоны. Исследуется, какую из известных эталонных областей в наибольшей степени и с превышением порога покрывает испытываемый символ. Для этого функция активации строится на основе суммирования сигналов в каждой эталонной области. Если при проверке всех известных эталонных областей порог распознавания не был превышен, подаваемый символ признается неизвестным.
  • Нейронная сеть строится посредством непосредственной связи всех рецепторов, образующих одну эталонную область ($$\Delta$$) с нейроном, говорящим: "Это символ (буква) $$\Delta$$!"
  • Тактическая игровая система строится на основе знания всех возможных ситуаций факторного пространства событий и соответствующих им решений. Рецепторы, на которые подается достоверность событий, характеризующих ситуацию, непосредственно связываются с нейронами, "отвечающими" за решения по данной ситуации. Максимально возбудившийся, в результате счета значения функции активации, нейрон определяет принимаемое решение.
  • Построение более сложных систем принятия решений производится на основе их логического описания. Воспроизведение промежуточной схемы нейронной сети подобно схемотехническому ее воплощению с помощью конъюнкторов и дизъюнкторов.
  • Переход к нейронам для использования нечетких данных на входе производится с помощью нечеткой логики – приближенного построения конъюнкторов и дизъюнкторов с помощью нейронов.
  • Так как трудно себе представить специализацию нейронов "в голове", то выяснилось, что единообразные, "стандартные" нейроны вполне способны в составе полученной схемы определять правильное решение. Так производится переход и от нечеткой логики к чисто нейронной сети. Таким образом, пункты 4 и 5 служат обоснованию и иллюстрации, но ни в коем случае не определяют технологию разработки.
  • Важным представляется дальнейший шаг к упрощению нейронной сети - переход к однослойной логической нейронной сети, применяемой практически во всех случаях, не требующих обратных связей.
  • Вопросы:

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

    Изобразите экран $$ 8 \times 16$$ клеток. Каждую клетку интерпретируйте рецептором, способным воспринимать извне величину возбуждения в диапазоне 0 – 1. Для обучения одной букве условно нарисуйте на экране эталон буквы О. Окружите линию этого эталона клетками (рецепторами) с некоторым запасом (как показано на рисунке) так, чтобы создать "ловушку" для захвата основной части нечетко и с искажениями изображаемой буквы О. Соедините все рецепторы "ловушки" буквы О связями (с единичными весами) с нейроном, отвечающим за вывод: "Это буква О".

    Выберите функцию активации этого нейрона $$f_O= \frac {1}{N_O} \sum \limits_i {f_i}-h$$, при отрицательном значении разности принимающую нулевое значение. $$N_O$$ – количество рецепторов, образующих "ловушку" буквы О, $$f_i$$ – величина возбуждения i-го рецептора, h – единый порог, подбираемый экспериментально для всех букв, распознаванию которых производится обучение. По рисунку $$N_O$$ =68.

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

    Функция активации этого нейрона имеет тот же вид $$f_A= \frac {1}{N_A} \sum \limits_i {f_i}-h$$, однако $$N_A$$ = 74. (Данное нормирование производится для уравнивания всех букв, которым обучается нейросеть.)

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

    Перейдите к рабочему режиму распознавания. На рисунке показан вариант зашумленной засветки экрана. Слева наложена "ловушка" для распознавания буквы О. Справа – "ловушка" для распознавания буквы А.

    Сумма сигналов в "ловушке" О равна 49,2. Пусть h = 0,7. Тогда $$f_O$$ = 0,72 - 0,7 = 0,02. Сумма сигналов в "ловушке" А равна 36,9, $$f_A$$ = 0. Нейросеть высказалась за то, что ей была предъявлена "зашумленная" буква О.

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

    Вы, несомненно, столкнетесь с малой разрешающей способностью экрана $$ 8 \times 16$$. Кроме того, данная лабораторная работа ограничена центровкой и масштабированием образов. Так что перед экспериментатором неограниченные возможности!

    Лабораторная работа 2. Построение, верификация и исследование логической нейронной сети

    Тщательно изучите разделы 2.2 и 2.3. По точно известным ситуациям, на основе 5 - 6 достоверных, т.е. "единичных", наборов данных, произведите верификацию всех вариантов выполнения системы принятия решений: "электронной" схемы, схемы на нечеткой логике, "многослойной" и однослойной нейронной сети.

    Каждый удовлетворительный результат анализа сопровождайте расчетом 2 - 3 (единых для всех способов построения СПР) вариантов нечеткого задания данных. Результаты должны совпасть.

    При задании возбуждения рецепторов следуйте принципу исчерпывающих множеств событий.

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