Re: Алгоритм обратного распространения (нейросети)
От: HiSH Россия http://m0riarty.ya.ru
Дата: 17.03.06 11:23
Оценка: 3 (1)
Здравствуйте, alex_ant, Вы писали:

> Если кто-нибудь занимается нейросетями и хорошо представляет этот алгоритм, можно ли как-нибудь состыковаться и объяснить этот алгоритм «на пальцах»? Как сеть работает в прямом направлении мне понятно, непонятности появляются именно при обучении обратным распространением. Буду очень признателен, ибо бъюсь уже не один день.


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

Веса входов (дендритов) каждого нейрона подстраиваются, исходя из их "вклада" в общую ошибку. Таким образом:
  1. Для нейронов последнего (N) слоя ошибка известна — это разность между эталонным и полученными сигналами. Вычисляются поправки в веса входов, вычисляется дельта-значение (в формулах обычно обозначается дельтой, хотя сам термин не очень правильный, ИМХО), определяющее вклад каждого нейрона последнего слоя в ошибку[/*]
  2. Берем предпоследний слой (N — 1), аналогично высчитывая ошибку в нем, исходя из дельта-значений нейронов последнего слоя. Аналогично п.1, проводим корректировки, подстраивая веса и высчитываая дельта-значения для всех нейронов этого слоя[/*]
  3. Повторяем п. 2 для N — 2 слоя, N — 3, и т. д. [/*]
Это один шаг "подстройки". При обучении на множестве входных векторов, они должны подаваться в случайном порядке (чтобы сеть вместо них не запомнила их последовательность). После подачи каждого образа осуществляется подстройка всей сети.
О шаге обучения. Его можно выбрать константным, хотя обычно выбирают постепено уменьшающимся, что позволяет точнее приблизиться к глобальному минимуму функции сети. Чтобы избежать попадания в локальные минимумы мне известо три способа:

Вот вроде и все. Могу дать сорцы ООП (!) алгоритма. Могу попробовать объяснить именно его =)
... << RSDN@Home 1.1.4 stable SR1 rev. 568 with тишина...>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.