Модераторы: Rickert
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Алгоритм обратного распространения, непонятная ошибка 
:(
    Опции темы
Deliverer
Дата 12.6.2013, 08:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.6.2013

Репутация: нет
Всего: нет



Здравствуйте. Я захотел реализовать алгоритм обратного распространения. Вроде бы разобрался, закодил, но… Возникает ошибка следующего характера: после прогона всех образов обучающей выборки, начинаю проверку и подаю на вход сети снова, последовательно, образы обучающей выборки и происходит следующее: выход нейронов последнего скрытого слоя почти не изменяется и лежит в диапазоне желаемого выхода последней обучающей выборки + - 0,09.
Пример:
Желаемый выход последней обучающей выборки  0, 64, 
Выходы при тесте  - 0, 635, 0, 637, 0, 643 и т.д.
В качестве учителя  использовалась функция y=x^2. Было создано 9 примеров обучения. Сеть имела следующую конфигурацию: 1  вход, 3 скрытых слоя 4-5-1. Изменение числа слоев и увеличение количества нейронов до 1000 результата никакого не дали.
Подозреваю, что накосячил в алгоритме, прошу меня перепроверить:
1.    Произвожу прямой проход,нахожу локальное поле нейрона получаю выход нейрона. Активационная функция  - экспоненциальный сигмоид. Когда рассчитаны все нейроны слоя, произвожу запись значений выходного слоя во входы нейронов следующего слоя.
2.    Рассчитываю ошибку выходного слоя. 
Из требуемого значения вычитаю фактическое. Нахожу производную функции экспоненциального сигмоида. Считаю локальный градиент перемножением производной на ошибку. Получаю сумму перемножений всех входов нейрона на  локальный градиент, и умножаю её на скорость коррекции =0,5(варьирование этого параметра не помогает) . Далее к каждому весу прибавляю значение коррекции.
3.    Рассчитываю значение коррекции для оставшихся скрытых слоев, делаю следующее:
Получаю сумму перемножений  значений весовых коэффициентов синаптических связей входов нейронов следующего слоя, связанных с рассчитываемым  нейроном, с локальным градиентом нейрона, вес входа которого беру. Если j –текущий слой, k- следующий, то
Fsumm+=Wjk*Gradient
Умножаю fsumm  на  производную  активационной функции
Получаю локальный градиент нейрона.
4.    Получаю сумму перемножений всех входов нейрона на  локальный градиент, и умножаю её на скорость коррекции =0,5(варьирование этого параметра не помогает) .  Далее к каждому весу прибавляю значение коррекции.

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

PM MAIL   Вверх
Bitter
Дата 12.6.2013, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Цитата(Deliverer @  12.6.2013,  08:47 Найти цитируемый пост)
выход нейронов последнего скрытого слоя почти не изменяется и лежит в диапазоне желаемого выхода последней обучающей выборки + - 0,09

имелось в виду последнего образа обучающей выборки?

То есть вы проводите обучение сети после прогона каждого образа? Если я не ошибаюсь, то это не правильно. Нужно считать суммарную ошибку по всей выборке и только после прогона всех образов проводить обучение. Обучение проводить маленькими шагами, иначе вы будете прыгать по стенкам локального минимума.
Думаю из-за того что вы проводите обучение после каждого образа, из-за этого и получается что сеть обучается на последнем поданном образе.

PM MAIL ICQ Skype   Вверх
Deliverer
Дата 12.6.2013, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.6.2013

Репутация: нет
Всего: нет



Цитата(Bitter @ 12.6.2013,  11:36)
Цитата(Deliverer @  12.6.2013,  08:47 Найти цитируемый пост)
выход нейронов последнего скрытого слоя почти не изменяется и лежит в диапазоне желаемого выхода последней обучающей выборки + - 0,09

имелось в виду последнего образа обучающей выборки?

То есть вы проводите обучение сети после прогона каждого образа? 

Да, именно это и имею ввиду.
Как я понял из книги Хайкина, такого не должно быть в независимости от типа обучения  - последовательного или пакетного...
PM MAIL   Вверх
Bitter
Дата 12.6.2013, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный лентяй
***


Профиль
Группа: Завсегдатай
Сообщений: 1209
Регистрация: 15.8.2004
Где: Харьков, Ukraine

Репутация: 5
Всего: 27



Вы видимо попадаете в локальный минимум из которого сеть не может выбраться. Попробуйте поменять порядок образов, сделать другую выборку, использовать пакетный способ обучения, уменьшить шаг обучения. Ну и если после этих манипуляций результата не будет, тогда можно думать дальше
PM MAIL ICQ Skype   Вверх
Deliverer
Дата 12.6.2013, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 12.6.2013

Репутация: нет
Всего: нет



Цитата(Bitter @ 12.6.2013,  13:51)
Вы видимо попадаете в локальный минимум из которого сеть не может выбраться. Попробуйте поменять порядок образов, сделать другую выборку, использовать пакетный способ обучения, уменьшить шаг обучения. Ну и если после этих манипуляций результата не будет, тогда можно думать дальше

Я попробовал функцию y=x+2 и получил в итоге тоже самое. Попробую, конечно, обучить в пакетном режиме, хотя большого смысла не вижу. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0409 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.