Список форумов neuroproject.ru neuroproject.ru
Форум сайта компании НейроПроект
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Программная реализация BackProp алгоритма

 
Начать новую тему   Ответить на тему    Список форумов neuroproject.ru -> Нейронные сети
Предыдущая тема :: Следующая тема  
Автор Сообщение
Куркин Дмитрий
Новый посетитель
Новый посетитель


Зарегистрирован: 23 Янв 2006
Сообщения: 12
Откуда: Челябинск

СообщениеДобавлено: Пн Янв 23, 2006 9:59 am    Заголовок сообщения: Программная реализация BackProp алгоритма Ответить с цитатой

Попробовал создать собственную сеть. Вроде получилось (имеется ввиду только способность сети выдавать корректные выходные значения на входные данные). Когда дело доходит до обучения, ничего не получается: все веса изменяются циклически: сначала слегка растут, потом также слегка уменьшаются, в итоге остаются примерно одинаковыми - процесс обучения никогда не заканчивается (так как ошибка на выходе при этом всегда остаётся огромная). У меня есть подозрения, что заданы некорректные обучающие выборки:
x1=[1, 0, 0, 0] y1=[1, 0]
x2=[0, 1, 0, 0] y1=[1, 0]
x3=[0, 0, 1, 0] y1=[0, 1]
x4=[0, 0, 0, 1] y1=[0, 1] при конфигурации сети: 4-3-2 для одного случая и:

x1=[0, 0] y1=[0]
x1=[0, 1] y1=[1]
x1=[1, 0] y1=[1]
x1=[1, 1] y1=[0] при конфигурации сети 2-2-1 для другого.
Что делать? Мож кто с этим уже сталкивался?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
siteadmin
НейроПроект
НейроПроект


Зарегистрирован: 10 Июн 2005
Сообщения: 81
Откуда: Москва

СообщениеДобавлено: Вт Янв 24, 2006 6:17 pm    Заголовок сообщения: Ответить с цитатой

данные нормальные. учиться должно идеально.
видимо вам надо поотлаживать алгоритм.
если с алгоритмом все ок, то может надо поиграть с параметрами обучения?(уменьшить скорость и тд)
вообще напишите поподробнее что вы делали(какие передаточные ф-ии, нормировка входов и тд)
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Куркин Дмитрий
Новый посетитель
Новый посетитель


Зарегистрирован: 23 Янв 2006
Сообщения: 12
Откуда: Челябинск

СообщениеДобавлено: Пн Янв 30, 2006 11:23 am    Заголовок сообщения: Ответить с цитатой

Насколько я понял, для указанных обучающих выборок нормировка не требуется. Скорости обучения брал следующие: 0.05, 0.1, 0.2 (т.е. маленькие). Передаточная функция: униполярный сигмоид (out = 1 / (1 + exp(-sum))), где sum это взвешенная сумма входов (пробовал как с учётом постоянного входа +1, так и без). Кстати, я так и не понял, нужен этот постоянный вход или нет (в некоторых источниках он используется, в некоторых - не используется). Веса изменял по формуле с моментом (той, где учитывается изменение веса на предыдущей итерации).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
siteadmin
НейроПроект
НейроПроект


Зарегистрирован: 10 Июн 2005
Сообщения: 81
Откуда: Москва

СообщениеДобавлено: Вт Янв 31, 2006 7:36 pm    Заголовок сообщения: Ответить с цитатой

постоянный вход нужен, так как задает постоянное смещение.
скорость лучше поставить 0.01
а какую величину момента вы ставили?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Куркин Дмитрий
Новый посетитель
Новый посетитель


Зарегистрирован: 23 Янв 2006
Сообщения: 12
Откуда: Челябинск

СообщениеДобавлено: Ср Фев 01, 2006 2:13 pm    Заголовок сообщения: Ответить с цитатой

Момент (в формулах он зовётся [mu:]) брал равным 0.1 - 0.5. Он оказывался как больше так и меньше коэффициента обучения (скорости).
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Oleg Agapkin
Администратор
Администратор


Зарегистрирован: 10 Июн 2005
Сообщения: 112
Откуда: Москва

СообщениеДобавлено: Ср Фев 01, 2006 4:10 pm    Заголовок сообщения: Ответить с цитатой

Тут дело не в обучающих выборках.
1) Ничего сложного в данных, действительно, нет.
2) Даже если бы данные были случайными, в конкретном случае приведенные вами конфигурации их бы просто запоминали.

Я попробовал загрузить ваши данные в NeuroShell, сети именно такие, какие вы указывали. Сети обучаются за неисчислимо малое время со 100% верным результатом.

Поэтому тут дело скорее в неверно реализованном алгоритме обратного распространения.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
dmitrdv
Новый посетитель
Новый посетитель


Зарегистрирован: 02 Фев 2006
Сообщения: 10
Откуда: екатеринбург

СообщениеДобавлено: Вс Фев 05, 2006 8:40 pm    Заголовок сообщения: Re: Программная реализация BackProp алгоритма Ответить с цитатой

Куркин Дмитрий писал(а):
Попробовал создать собственную сеть. Вроде получилось (имеется ввиду только способность сети выдавать корректные выходные значения на входные данные). Когда дело доходит до обучения, ничего не получается: все веса изменяются циклически: сначала слегка растут, потом также слегка уменьшаются, в итоге остаются примерно одинаковыми - процесс обучения никогда не заканчивается (так как ошибка на выходе при этом всегда остаётся огромная). У меня есть подозрения, что заданы некорректные обучающие выборки:
x1=[1, 0, 0, 0] y1=[1, 0]
x2=[0, 1, 0, 0] y1=[1, 0]
x3=[0, 0, 1, 0] y1=[0, 1]
x4=[0, 0, 0, 1] y1=[0, 1] при конфигурации сети: 4-3-2 для одного случая и:

x1=[0, 0] y1=[0]
x1=[0, 1] y1=[1]
x1=[1, 0] y1=[1]
x1=[1, 1] y1=[0] при конфигурации сети 2-2-1 для другого.
Что делать? Мож кто с этим уже сталкивался?


Начал реализовывать алгоритм обратного распространения ошибки и обнаружил что он не работает!!!
Может кто нидь кинет ссылку на точно правильный алгоритм - я смотрел на
Или посмотрите на http://ai.obrazec.ru/forum/viewtopic.php?t=632
На этом форуме я не могу прикрепить файл - а формулы не могу вставить текст. А на том форуме в прикрепленном файле я сделал ручной расчет в течении 2 итераций и ничего не получилось
Я максимально упростил сеть – взял один нейрон с одним входом (с весом = 1) и одним выходом f(x) = X2, смещение = 0. На вход подаю 2, на выходе хочу получить 3.
В прикрепленном файле приведены две итерации функционирования алгоритма, - и значение, которое я получаю на выходе, постоянно растет, нисколько не приближаясь к 3!!!! В чем ошибка?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Куркин Дмитрий
Новый посетитель
Новый посетитель


Зарегистрирован: 23 Янв 2006
Сообщения: 12
Откуда: Челябинск

СообщениеДобавлено: Пн Фев 06, 2006 12:43 pm    Заголовок сообщения: Ответить с цитатой

А вообще, как должны вести себя выходы сети после одной итерации алгоритма? Я имею ввиду, значения выходов должны стать чуть ближе к значениям, заданным обучающей выборкой или это не обязательно? В моём случае они крутились вокруг каких-то промежуточных значений. Впечатление такое, что им что-то не давало изменяться дальше.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Victor G. Tsaregorodtsev
Эксперт
Эксперт


Зарегистрирован: 28 Июн 2005
Сообщения: 114
Откуда: Красноярск

СообщениеДобавлено: Пн Фев 06, 2006 12:52 pm    Заголовок сообщения: Ответить с цитатой

Куркин Дмитрий писал(а):
А вообще, как должны вести себя выходы сети после одной итерации алгоритма? Я имею ввиду, значения выходов должны стать чуть ближе к значениям, заданным обучающей выборкой или это не обязательно?


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

Т.е. если у нас сечение рельефа целевой функции направлением градиента дает параболку и текущее положение (определяемое весами синапсов сети) сети - на одной из ветвей параболы, то можно прыгнуть на противоположную ветвь в то значение аргумента (набора весов после коррекции), которому будет соответствовать бОльшее по сравнению с начальным значение функции.
_________________
www.neuropro.ru - нейросети, анализ данных, прогнозирование
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов neuroproject.ru -> Нейронные сети Часовой пояс: GMT + 4
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Rambler's Top100 Rambler's Top100