Написал программу на VB 6, меделирующую 3-х слойную сеть(по 10 нейронов в каждом слое) для распознавания образа. Для обучения использовал алгоритм обратного распространения.
Начинаю обучение.
Подаю последовательно 8 образов на вход, но на пятом (!?) сеть "замирает" и ошибка начинает расти. Менял скорость обучения, модифицировал сигмоиду - бесполезно. Что делать? Подскажите.
Можно небольшое уточнение?
Ошибка растет на обучающем или тестовом множестве?
В первом случае такое возможено если сеть попала в локальный минимум, при этом ошибка начинает расти, но затем снова убывает. Правда на 5-й итерации такого обычно не должно происходить. Скорее всего дело в реализации алгоритма. В некоторых источниках встречается ошибка в формуле вычисления градиента (неверный знак). В результате получается что ошибка на минимизируется, а наоборот максимизируется.
Во втором случае такой эффект возникает обычно при "переобучении" сети, но на пятой иттерации он не должен еще проявиться.
Кроме того может быть дело в представлении входных значений.
Ошибка растет на обучающем множестве.
Я пользовался переводом книги Уоссермена (не помню под чьей редакцией), которая в формате *.doc лежит почти везде.
Я сам сначала пробовал работать с этой книгой. К сожалению в ней алгоритм описан не совсем правильно (как раз там указан неверный знак, из-за чего вмеcто минимизации получается максимизация ошибки). Рекомендую воспользоваться статьей, лежащей на этом сайте в разделе нейронные сети. Кажется называется она "Математические основы". Там я все описал более подробно. Эта технология работает (на ее основе создан пакет Neural Network Wizard )
Че делать я сам хочу узнать, подскажите что делать нужно в таких ситуациях
мой почтовик CAT7314@yandex.ru хоть примерно :_(