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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XOR-задача. нейронные сети 
:(
    Опции темы
almaz1988
Дата 12.6.2013, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго времени суток всем)
Я новичок в нейронных сетях.
Изучаю их по книге Хайкина "Нейронные сети. Полный курс".
Читаю главу за главой и реализовываю все прочитанное на языке С++.

Глава 3. Однослойный персептрон.  - Здесь проблем не возникло. Написал программу в С++ распознающую образы с помощью однослойного персептрона.
Перешел к главе 4 - "Многослойный персептрон". Написал программу, реализующую многослойный персептрон. 
Решил решить задачу XOR:

2 входа, 2 нейрона в скрытом слое и 1 нейрон в выходном слое. 
Веса генерируются рандомно в диапазоне от -0.9 до +0.9. Веса корректируются после каждой обучающей пары, а не после эпохи в целом.
Активационная функция - логистическая: F(x)= 1/ ( 1 + exp( 2 - 4*x ) ).
Обучающая выборка состоит из 4-ех пар:
0  0  |   0
0  1  |   1
1  0  |   1
1  1  |   0

Запускаю - не обучается! Меняю скорость обучения, количество эпох обучения - не помогает. 

Принялся рыть в интернете. Наткнулся на статью:http://21.net78.net/lesson.php?glava=2.
Там приводится решение задачи XOR с той же структурой сети ( 2-1 ) с конкретно заданными стартовыми значениями весов:
1-й нейрон скрытого слоя: -0.082843 и 0.018629.  
2-й нейрон скрытого слоя: - 0.011006 и - 0.071407.
нейрон выходного слоя: 0.032680 и 0.020701.

Запускаю обучение своей сети с этими весами - срабатывает! Сеть обучается!
Но не хочет обучаться с рандомными весами. Меняю диапазоны генерации весов - не помогает.
По-видимому я столкнулся с каким-нибудь эффектом при обучении в сети, но т.к. слабо ориентируюсь в тематике не понимаю с каким именно. Судя по Хайкину - желательно обучать сеть корректируя веса после каждой обучающей выборки в целом, а не после каждой отдельной обучающей пары. Но все же интересно понять в чем суть возникшей проблемы. 
Почему сеть обучается только при определенных сочетаниях весов? Наверняка для опытных кодеров нейронных сетей это детский вопрос) Буду благодарен за разъяснения)
 
PM MAIL   Вверх
almaz1988
Дата 12.6.2013, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Применил в качестве активационной функции гиперболического тангенс. Помогло! Сеть обучается при рандомных стартовых весах. Но при входных значениях от 0 до 1. Если же ноли заменить на -1, как и должно быть при использовании гиперболического тангенса, то сеть не обучается. В общем непонятно.
PM MAIL   Вверх
Bitter
Дата 19.6.2013, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



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

только там в примере функция немного от вашей отличается - 1 / (1 + exp(-4*(x-0.5))) Может в этом ошибка, Вы ж наверное производную взяли из урока?

Это сообщение отредактировал(а) Bitter - 19.6.2013, 22:43
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

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

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

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

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


 




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


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

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