новости  материалы  справочник  форум  гостевая  ссылки Поиск с Яндексом  
Новости
Материалы
  Логические подходы
  Нейронные сети
  Генетические алгоритмы
  Разное
  Публикации
  Алгоритмы
  Применение
Справочник
Форум
Гостевая книга
Ссылки
О сайте
 

Альтернативы обратному распространению

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

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

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

Для каждой сети существует счет - сумма общих ошибок данной сети. Напрмиер, если сеть должна выдавать на выходе два значения - 1 и 0, но выдает 0.3 и 0.1, то общая ошибка будет равна (1-0.3) + (0.1-0) = 0.8. Эти самые ошибки и складываются для всех входных наборов данных.

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

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

сеть общая ошибка
1 1.00431
2 2.65520
3 1.35425
4 1.94233
5 1.35462
6 0.97766
7 1.38752
8 1.17584

Только часть этих сетей будет использоваться в дальнейшем. В данном случае выберем две штуки (6 и 1) и копируем их в другие слоты (2, 3, 4 и т.д.), при этом слегка их изменяя. Это и есть те "мутации", которые должны улучшить качество расчетов. Мутации, вызывающие увеличение ошибок, - отбрасываются.

Работает ли эта идея. - Да, она действительно работает, но очень медленно! Если вы думаете, что метод обратного распространения медленный, то сравните с этим монстром. То, что может быть сделано с помощью обратного распространения за полчаса, займет всю ночь.

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


Предыдущая Оглавление Следующая