Нейронная сеть для решения задачи XOR

Автор: Пользователь скрыл имя, 04 Апреля 2013 в 17:11, дипломная работа

Краткое описание

Цель - изучение основных принципов работы искусственной вычислительной модели биологического нейрона и их демонстрация на примере решения задачи XOR.
Задачи
Изучение общих вопросов организации искусственных нейронных сетей;
Анализ способности к обучению искусственных нейронных сетей;
Изучение проблемы ограниченности возможностей однослойных персептронов;
Создание программного приложения, демонстрирующего решение проблемы XOR – исключающего ИЛИ.

Оглавление

Введение 3
1 Интеллектуальные системы на основе искусственных нейронных сетей 6
1.1 Аппаратное моделирование структур, подобных структуре мозга 6
1.2 Архитектура нейронной сети 13
1.3 Обучение искусственных нейронных сетей. 25
2 Многослойные сети прямого распространения 33
2.1 Ограниченность возможностей однослойных персептронов. 33
2.2 Принцип обучения многослойной нейронной сети с помощью алгоритма обратного распространения 37
2.3 Пример решения задачи XOR - исключающего ИЛИ 50
Заключение 59
Список используемой литературы 61
Приложение А 62

Файлы: 1 файл

Диплом Дорошева Виталия.docx

— 580.55 Кб (Скачать)

Обучение  с учителем и без учителя.

Существуют два метода обучения нейронных сетей — обучение с учителем и обучение без учителя.

Рассмотренная выше процедура обучения персептрона распознаванию цифр является процедурой с учителем. Учитель  предъявляет сети по очереди все  цифры от 0 до 9, обучая ее распознавать каждую цифру.

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

Детерминистский и стохастический метод.

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

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

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

 

2 Многослойные сети прямого распространения

2.1 Ограниченность возможностей однослойных персептронов

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

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

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

  • Использование нелинейной функции активации, как правило сигмоидальной.
  • Число обучаемых слоев больше одного. Чаще всего в приложениях используется не более трёх.
  • Сигналы поступающие на вход, и получаемые с выхода не бинарные, а могут кодироваться десятичными числами, которые нужно нормализовать, так чтобы значения были на отрезке от 0 до 1 (нормализация необходима как минимум для выходных данных, в соответствии с функцией активации — сигмоидой).
  • Допускается произвольная архитектура связей (в том числе, и полносвязные сети).
  • Ошибка сети вычисляется не как число неправильных образов после итерации обучения, а как некоторая статистическая мера невязки между нужным и получаемым значением.
  • Обучение проводится не до отсутствия ошибок после обучения, а до стабилизации весовых коэффициентов при обучении или прерывается ранее, чтобы избежать переобучения.

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

Итак, отдельно взятый нейрон вида (1.1) позволяет реализовать линейный классификатор или линейную регрессию. При решении практических задач  линейность оказывается чрезмерно  сильным ограничением. На ограниченность персептрона указывали Минский  и Пайперт в своей знаменитой книге «Персептроны». Следующий  классический контрпример иллюстрирует невозможность нейронной реализации даже очень простых функций.

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

В свою очередь, среди многослойных сетей  выделяют:

 

  1. Сети прямого распространения (feedforward networks) – сети без обратных связей. В таких сетях нейроны входного слоя получают входные сигналы, преобразуют их и передают нейронам первого скрытого слоя, и так далее вплоть до выходного, который выдает сигналы для интерпретатора и пользователя. Если не оговорено противное, то каждый выходной сигнал n-го слоя передастся на вход всех нейронов (n+1)-го слоя; однако возможен вариант соединения n-го слоя с произвольным (n+p)-м слоем. Пример слоистой сети представлен на рисунке 4.
  2. Сети с обратными связями (recurrent networks). В сетях с обратными связями информация передается с последующих слоев на предыдущие. Следует иметь в виду, что после введения обратных связей сеть уже не просто осуществляет отображение множества входных векторов на множество выходных, она превращается в динамическую систему и возникает вопрос об ее устойчивости.

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

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

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

Рисунок 2.2 Многослойная нейронная сеть.

 

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

Среди многослойных нейронных сетей  можно выделить четыре наиболее значимых и важных класса нейронных сетей:

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

 

2.2 Принцип обучения  многослойной нейронной сети  с помощью алгоритма обратного распространения

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

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

Обучающий алгоритм обратного распространения.

Сетевые конфигурации:

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

.

 

 

 
Рисунок 2.3 Нейрон

 

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

(1)


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

(2)


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

В действительности имеется множество  функций, которые могли бы быть использованы. Для алгоритма обратного распространения требуется только, чтобы функция была всюду дифференцируема. Сигмоид удовлетворяет этому требованию. Его дополнительное преимущество состоит в автоматическом контроле усиления. Для слабых сигналов (величина NET близка к нулю) кривая вход-выход имеет сильный наклон, дающий большое усиление. Когда величина сигнала становится больше, усиление падает. Таким образом, большие сигналы воспринимаются сетью без насыщения, а слабые сигналы проходят по сети без чрезмерного ослабления. Многослойная сеть. Рассмотрим иерархическую сетевую структуру, в которой связанные между собой нейроны объединены в несколько слоев (см. рис. 2.3). На возможность построения таких архитектур указал еще Ф.Розенблатт, однако им не была решена проблема обучения. Межнейронные синаптические связи сети устроены таким образом, что каждый нейрон на данном уровне иерархии принимает и обрабатывает сигналы от каждого нейрона более низкого уровня.

 
Рисунок 2.4 Объединение нейронов в несколько слоев

Информация о работе Нейронная сеть для решения задачи XOR