Искусственные нейронные сети

Автор работы: Пользователь скрыл имя, 18 Декабря 2013 в 19:54, лекция

Описание работы

Термин «нейронные сети» сформировался к середине 50-х годов XX века. Основные результаты в этой области связаны с именами У. Маккалоха, Д Хебба, Ф. Розенблатта, М. Минского, Дж. Хопфилда. Приведем краткую историческую справку. 1943 г. У. Маккалох (W. McCulloch) и У. Питтс (W. Pitts) предложили модель нейрона и сформулировали основные положения теории функционирования головного мозга. 1949 г. Д. Хебб (D. Hebb) высказал идеи о характере соединений нейронов мозга и их взаимодействии (клеточные ансамбли, синаптическая пластичность). Впервые предложил правила обучения нейронной сети.

Файлы: 1 файл

теория.docx

— 322.28 Кб (Скачать файл)

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

E(w) = 2 (1.3)

где - реальное выходное состояние нейрона j выходного слоя нейронной сети при подаче на ее входы k-го образа, - требуемое выходное состояние этого нейрона.

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

(1.4)

где - весовой коэффициент синаптической связи, соединяющей i-й нейрон слоя (q-1) с j-м нейроном слоя q, - коэффициент скорости обучения, 0 < <1

В соответствии с правилом дифференцирования сложной функции:

(1.5)

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

(1.6)

Третий множитель ds/dwil равен выходу нейрона предыдущего слоя уi(q-1)

Что касается первого множителя в (1.5), он легко раскладывается следующим образом:

(1.7)

Здесь суммирование по r выполняется среди нейронов слоя (q+1). Введя новую переменную:

(1.8)

получим рекурсивную формулу  для расчетов величин слоя q из величин более старшего слоя (q+1)

(1.9)

Для выходного слоя:

(1.10)

Теперь можно записать (1.4) в раскрытом виде:

(1.11)

Иногда для придания процессу коррекции весов некоторой инерционности, сглаживающей резкие скачки при перемещении  по поверхности целевой функции, (1.11) дополняется значением изменения веса на предыдущей итерации:

(1.12)

где - коэффициент инерционности; t- номер текущей итерации.

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

ШАГ 1. Подать на входы сети один из возможных образов и в  режиме обычного функционирования нейронной  сети, когда сигналы распространяются от входов к выходам, рассчитать значения последних. Напомним, что:

(1.13)

где L - число нейронов в  слое (q-1) с учетом нейрона с постоянным выходным состоянием +1, задающего смещение; - i-й вход нейрона j слоя q,

(1.14)

где f{ •) - сигмоид,

(1.15)

где хг- r-я компонента вектора  входного образа.

ШАГ 2. Рассчитать для выходного слоя по формуле (1.10)

Рассчитать по формуле (1.11) или (1.12) изменения весов слоя Q.

ШАГ 3. Рассчитать по формулам (1.9) и (1.11) (или (1.9) и (1.12) соответственно и для всех остальных слоев, q=(Q-1)...1.

ШАГ 4. Скорректировать все  веса в нейронной сети:

(1.17)

ШАГ 5. Если ошибка сети существенна, перейти на шаг 1. В противном случае - конец.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1) Функции ошибки:

• интегральные функции  ошибки по всей совокупности обучающих примеров

• функции ошибки целых  и дробных степеней:

2) Процедуры определения  величины шага на каждой итерации

• дихотомия

• инерционные соотношения

• отжиг

3) Процедуры определения направления шага:

• с использованием матрицы  производных второго порядка (метод Ньютона)

• с использованием направлений  на нескольких шагах (партан метод)

 

 


Информация о работе Искусственные нейронные сети