GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.2 (5)<< < Пред. | След. > >>   Поиск:  
 Автор Тема: На: Обратное распространение ошибки
daner
Сообщений: 4605
На: Обратное распространение ошибки
Добавлено: 27 июл 08 2:29
Цитата:
Автор: tac

"3. Схождение сети всегда оценивается по тестовой группе, а не по обучаемой"

Это полный бред ... Что в таком случае Вы называете схождение ?


Схождение -- это схождение. Т.е. Аппроксимация какой-то функции. Но РЕАЛЬНО, НА ДЕЛЕ, нам нужно от Нейронной Сети не точное "зазубривание" обучаемых данных, а некоторое "обобщение" и выявление "закономерности". Поэтому, при обучении тестируют на группе, элементы которой не входят в обучаемые примеры. Есть много способов, всякие cross validation и подобные.
[Ответ][Цитата]
daner
Сообщений: 4605
На: Обратное распространение ошибки
Добавлено: 27 июл 08 2:34
Цитата:
Автор: tac
Ответьте на простой вопрос: Многослойный перцептрон обученый по алгоритму обратного распространения должен (может) ли ОШИБАТЬСЯ (с определенной точностью) после обучения на обучаемой выборке ? Да или Нет ?

Скорее всего. Ведь это только в теории, при бесконечном внутреннем слое любая функция представляется без ошибок (кстати, там еще и про способ обучения речи не велось, а значит и про время обучения не известно, а на сколько я знаю BP алгоритм не полиномиальный... хотя может и ошибаюсь).
И более того, ВР сходиться в локальном минимуме, так что... никто не гарантирует в какой из минимумов вы попадете. Для этого и делают обучение несколько раз с разными инит параметрами.
Так что -- ДА МОЖЕТ.
[Ответ][Цитата]
Victor G. Tsaregorodtsev
Сообщений: 3187
На: Обратное распространение ошибки
Добавлено: 27 июл 08 18:22
2 daner:

>Не понимаю, с чего взяли, что перцептрон линейный?
>на сколько мне известно, в нем функция ступени используется. Какая же это линейность?

Тут есть небольшая путаница Есть многослойная сеть-персептрон Розенблатта - но там учится единственный слой. Правило обучения персептрона применимо и к однослойной/однонейронной сети. Но пороговая нелинейность при обучении не важна и её действительно можно заменять линейной (просто для простоты алгоритма обучения).
Многослойные персептроны 80х стали называть многослойными именно потому, что там один алгоритм учит все слои, а не потому, что там несколько слоев (несколько слоев было и у Розенблатта).

>Одного слоя сети "на все случае жизни" точно не хватит.

Для 99% случаев хватит - если просто не ставить задачу запоминания обучающей выборки с точностью до самой последней значащей цифры в компьютерном представлении вещественных чисел. Правда, под одним слоем я имею в виду действительно один скрытый слой, т.е. "трехслойную" сеть (опять терминологический обман, т.к. в сети будут 2 слоя реальных нейронов, а входной - так, пустышка). Так что Вы с tac'ом проверьтесь, одно ли и тоже вы понимаете под одним/несколькими слоями - или всё-таки разные вещи, а то может спор ни о чем



2 tac:

Цитата:
Многослойный перцептрон обученый по алгоритму обратного распространения должен (может) ли ОШИБАТЬСЯ (с определенной точностью) после обучения на обучаемой выборке ? Да или Нет ?

Может, может. Особенно если задачу поставить неправильно. Например, хоть сколько слоев и нейронов в сети бери - она не запомнит взаимное соответствие между фамилией абонента в телефонном справочнике и его номером телефона (вернее, запомнить может и сможет - но для новых ФИО телефон будет выдавать абы-какой, т.к. просто зависимости между ФИО и номером нет)


PS. Всем. Исходники/ссылки не смотрел и смотреть не буду


--------------------------
нейронные сети, анализ данных, прогнозирование
[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 1:00
По первой части - все правильно Вы рассказали, рад что есть знающие люди ... я конечно же имел введу классический розенблатовский перцептрон (и прямо об этом всегда говорил).

По второй части - конечно, тоже правильно ... но разговор был не об этом ... Вы судя по всему не заметили слова "после обучения на обучаемой выборке" ... т.е. в случае когда нет "новых ФИО телефон" - вопрос остается прежним ??? daner пытается сказать, на сколько я понимаю, и в этом случае может ... ?
[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 1:21
2 daner:

Ну, что такое схождение вы судя по всему не знаете но оставим это на потом ...

Вы говорите об аппроксимации, тем самым вы сузили обсуждаемую задачу с распознования образов (классификации) на аппроксимацию диференцируемых функций ... хорошо начнем с этого ... Как Вам кажется много пользы с алгоритма который аппроксимирует с нестабильными рассхождениями ... т.е. когда НЕЛЬЗЯ сказать, что полученна апроксимация функции с точность плюс минус 0.1 ... ??? А ведь именно такую функцию (без контроля расхождения (плюс-минус)) только и можно получить обратным распространением на ОБУЧАЕМЫХ примерах ... не говоря уже о тесте !

Теперь далее "от Нейронной Сети не точное "зазубривание" обучаемых данных" - вдумайтесь в эту фразу - если мы считаем, что обучаемые примеры - это эталоны, и им можно верить на 100%, то в основу модели для прогнозирования (нейронную сеть) нужно заложить все доступные эталоны со 100 зазубриванием !!! Для обратного распространения я НЕЗНАЮ КАК СДЕЛАТЬ (и в этом главный вопрос всей темы), я все же надеюсь что можно, несмотря что вы пытаетесь сказать что это не нужно (сами не зная как этого добится, лучше было бы если бы Вы хотя бы попытались бы - в противном случае грош цена алгоритму обратного распространения) ...
Что же касается если эталоны у нас не 100% (хотя в вашей реализации это не так) ... то, конечно, имеем что есть и используем что есть - но не стремимся к этому ... т.е. какие входные данные, такая получится и модель ... если входным данным мы можем доверять скажем на 70%, то и модель будет давать ВСЕГДА уверенность НЕ БОЛЕЕ чем 70%, и тестирование на "на группе, элементы которой не входят в обучаемые примеры" - ничем не поможет увеличить эту уверенность ... поэтому совершенно не верна фраза " ... некоторое "обобщение" и выявление "закономерности". Поэтому, при обучении тестируют ... " причино-следственной связи здесь нет ... да, в некоторых, задачах мы хотим получить обобщение ... да, мы тестируем, чтобы ПРОВЕРИТЬ пригодность АЛГОРИТМА (а не для того, чтобы улучшить показатели аппроксимации) ... но вместе это ни как не связанно ...

[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 1:31
"в основу модели для прогнозирования (нейронную сеть) нужно заложить все доступные эталоны со 100 зазубриванием !!!"

(А вот отсюда легко понять, что такое схождение в классическом смысле ...)

Когда удается построить такую модель для прогнозирования, то тогда и можно сказать Обучение нейронной сети сошлось ! Таким образом, схождение - это итерационное приближение к безошибочному ответу модели на обучаемых эталонах (зависимость числа ошибок от итераций на обучении). У Вас есть различные графики (которые не сильно много чего показывают) - а главного нету ! (конечно, же потому, что ему просто не откуда взятся )
И мой ответ остается без ответа, т.к. я не понимаю как этого добится для алгоритма обратного распространения - все мои попытки (в том числе Ваш алгоритм) не позволил этого добится ... и я уже начал сомниватся - а можно ли это вообще ....

[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 2:50
Цитата:
Автор: Victor G. Tsaregorodtsev
Для 99% случаев хватит - если просто не ставить задачу запоминания обучающей выборки с точностью до самой последней значащей цифры в компьютерном представлении вещественных чисел.


Я подумал, и пожалуй заберу у Вас и этот оставшийся пример ... Если Вы имете введу такое вещественное число, которое можно привести к определенному числу байт, например 8 (как это и есть в большенстве компьютерных представлений) - то это всего 64 бита - которые не проблема также выучить, т.е. достич необходимой точности ....
Итого, 100% если имеем дело с конечными (дискретными) числами - а именно такие только и есть, если не вдаваться в метафизику ...
[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 2:54
Цитата:
Автор: Victor G. Tsaregorodtsev
Многослойные персептроны 80х стали называть многослойными именно потому, что там один алгоритм учит все слои, а не потому, что там несколько слоев (несколько слоев было и у Розенблатта).


Очень хорошие слова, если Вы не против я их скомуниздю, и запишу в Википедию ?
[Ответ][Цитата]
daner
Сообщений: 4605
На: Обратное распространение ошибки
Добавлено: 28 июл 08 2:57
я не вижу разницу между "аппроксимацией изучаемой функции" и тем что вы назвали "приближение к безошибочному ответу модели на обучаемых эталонах". Если функция есть описание "обучаемых эталонов", то любая "черная коробка", которая будет вести себя так же как и функция -- будет ее аппроксимацией. Естественно, схождение, это итеративная аппроксимация до заданной ошибки. А кстати, у меня оно так и есть. Сама ошибка вполне может прыгать очень хаотично, главное что бы было некоторое значение уменьшающееся относительно итераций, которое будет больше значений ошибки сходящейся функции.
небольшой пример:
скажем имеем следующий ряд ошибок в процессе обучения
Err = (100,40,90,8 ,14,50,20,13,5 ,12,...)
И это вполне нормальное схождение, так как я могу предоставить следующую функцию
Val = (100,98,92,70,65,58,30,20,18,13,...)
И я буду совершенно в праве утверждать, что обученная модель имеет ошибку не выше 13.

Точно тоже самое было описано в моей работе (если вы не поняли чего показывают графики, ну или для вас "много" несколько отличается, это еще не значит, что ни показывают не сильно много . Для меня это было много).
Я там стабильно получал схождение модели к той функции, которую надо было предсказывать. И модель предсказывала. С определенной ошибкой... ну и ладно. Более того, меня даже интересовала не сама ошибка, а средне-статистическая ошибок от 50 (если не ошибаюсь) попыток.

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

Это замечательно, но сомневаюсь, что кого-то это интересует на практике (хотя если у вас есть альтернатива по круче, причем С ДОКАЗАТЕЛЬСТВОМ, то наверное интересует).
Как я уже сказал (ИМХО), на практике интересует поиск закономерностей.

И тут подходим к процессу обучения. И таки ДА, когда сеть обучают, тестируют ее на тестовой группе, а не на той которую скармливают во время учебы.
Вам нужно изучить функцию Ф(х), но у вас есть только А примеров. Поэтому, вполне вероятно, что может существовать функция Ф1(х), для которой А, так же будет истинно.
Поэтому, когда вы изучаете, необходимо проверять, учит ли сеть еще Ф(х), или уже углубилась в Ф1(х). И это реально встречающаяся ситуация!!! Сеть вроде бы как продолжает сходиться относительно обучаемых примеров, но начинает терять точность относительно тестовых. Если у вас не будет отдельной группы для тестов, вы просто не сможете узнать, когда это произойдет. Вот и все. (это практика, а не теория).

И лично я, знаю только один случай, когда надо изучать просто функцию по всем примерам. Это техника сжатия информации с помощью ИНС. Но так как сжатие получается не очень... то это и не очень интересно.
Если знаете, где еще полезно изучать функцию по ВСЕМ примерам... Да и в конце концов, если у вас есть ВСЕ примеры, то проще применить какой-нибудь другой алгоритм аппроксимации.

P.S.
Ну это я себе все так представляю... могу и ошибаться. Буду рад если Виктор Ц. Меня поправит.

P.S II.
Когда я говорю о 3-ех слоях, я имею ввиду, один входной (пустышка), один скрытый и один слой на выход, другими словами, два слоя связей.
[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 3:23
Вы, очень хорошо описали ситуацию, и я даже начал понимать почему я не понимаю других ... Итак, высказались Вы ясно на этот раз, но у меня есть возражения ... но начну с более удобного для объяснения ...

Цитата:
Автор: daner
И тут подходим к процессу обучения. И таки ДА, когда сеть обучают, тестируют ее на тестовой группе, а не на той которую скармливают во время учебы.
Вам нужно изучить функцию Ф(х), но у вас есть только А примеров. Поэтому, вполне вероятно, что может существовать функция Ф1(х), для которой А, так же будет истинно.
Поэтому, когда вы изучаете, необходимо проверять, учит ли сеть еще Ф(х), или уже углубилась в Ф1(х). И это реально встречающаяся ситуация!!! Сеть вроде бы как продолжает сходиться относительно обучаемых примеров, но начинает терять точность относительно тестовых. Если у вас не будет отдельной группы для тестов, вы просто не сможете узнать, когда это произойдет. Вот и все. (это практика, а не теория).


Итак, у Вас есть обучаемая выборка и тестовая выборка, НО это не все примеры (в смысле, что есть еще большое множество, что нужно предсказывать) ... скажите мне чем отличается обучаемая выборка от тестовой ? Чтобы вопрос стал понятнее переформулирую и уточню Ваш текст:

Вам нужно изучить функцию Ф(х), но у вас есть только А примеров для обучения и Б примеров для теста. Поэтому, вполне вероятно, что может существовать функция Ф1(х), для которой А, так же будет истинно. И функция Ф2(х) для которой А и Б, так же будет истино. Сеть вроде бы как продолжает сходиться относительно обучаемых примеров, а так же сходится относительно тестовых, но все равно может не соответствовать функции Ф(х). Спрашивается, что изменится если объединить все доступные примеры, т.е. А и Б - и обучится на них ? Будет ли разница если их разделить ? Очевидно НЕТ (точнее будет, но в пользу объединения, т.к. не просто констатируется факт что "Сеть вроде бы как продолжает сходиться относительно обучаемых примеров, но начинает терять точность относительно тестовых", а достигается реально чтобы "Сеть сходилась бы относительно обучаемых примеров и тестовых").

[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 3:35
Цитата:
Автор: daner
Если знаете, где еще полезно изучать функцию по ВСЕМ примерам... Да и в конце концов, если у вас есть ВСЕ примеры, то проще применить какой-нибудь другой алгоритм аппроксимации.


Давайте уточним - по ВСЕМ ДОСТУПНЫМ примерам, и это не тоже самое, что "у вас есть ВСЕ примеры" .. Далее, спрашивается какая модель будет правильнее, которая использует большее число примеров, или которая использует меньшее число примеров, но у нее есть некоторая информация о том, как они не соответствует произвольному другому множеству примеров ...
Мне, кажется очевидным, что чем большее число примеров заложенно, тем модель точнее ... а информацию, которая показывает отношение одной подмодели к другой подмодели использовать практически нельзя ни для чего ... Т.е. изучая некие законы соотношения двух локальных подмоделей никак нельзя приблизится к глобальной подмодели ... А можно лишь приблизится к "объединению" эти двух локальных подмоделей в одну, что в альтернативе (при объединении примеров) и так было бы сделано ... Именно поэтому я утверждаю, что тест НЕДАЕТ ни какой пользы в плане построения модели для прогнозирования, а служит лишь в оценке пригодности АЛГОРИТМА прогнозирования в данном конкретном случае ... Вне лабораторных условия этого оценить нельзя ... но мы верим (и именно верим), что если АЛГОРИТМ часто давал положительные результаты в лабораторных условиях, то он сможет быть полезным и в реальных, но там у нас нет НИКАКИХ возможностей проверить, а можно лишь вначале использовать максимально имеющуюся информацию ... т.е. ВСЕ ДОСТУПНЫЕ ПРИМЕРЫ .
[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 4:04
"Сама ошибка вполне может прыгать очень хаотично, главное что бы было некоторое значение уменьшающееся относительно итераций, которое будет больше значений ошибки сходящейся функции."

А зачем так замысловато ? От непригодности алгоритма обратного распространения нужно думать .... ну, ладно, я был бы рад, если бы получилось хотя бы это ... Тогда это означало бы, что ошибка все же не может прыгать хаотично, а должна находится в приделах от выбранной произвольно функции Val ... Теперь давайте поговорим, что же это за функция такая ? И что она показывает ?

Похоже такая функция уже прогнозирует не целевую функцию, а процесс схождения, т.е. она показывает, что обратное распространение все же стремится сойтись, но число "13" в отличии от "0" показывает, что этому не сужденно случится ... что означает, что 13 примеров из обучаемой выборки не будут братся во внимание, и только 87 будут запомнены ... и то не понятно какие именно ....
И ладно, но у меня получается другое соотношение, если требовать достаточную точность, то лишь 1 пример из 100 будет учтен (думаю у Вас так же, но у Вас таких графиков просто нет - Вы показываете все что угодно (поэтому я сказал "не много"), но не существенное ) - т.е. совершенная случайность ... Проблема в том, что алгоритм найде решение для одного примера, тут же его теряет, продолжая искать для других ...
[Ответ][Цитата]
Victor G. Tsaregorodtsev
Сообщений: 3187
На: Обратное распространение ошибки
Добавлено: 28 июл 08 18:01
2 tac сразу на кучу постов

> Как Вам кажется много пользы с алгоритма который аппроксимирует с нестабильными рассхождениями ... т.е.
> когда НЕЛЬЗЯ сказать, что полученна апроксимация функции с точность плюс минус 0.1 ... ???

Сказать - можно, просто не все об этом знают. Метод - классический способ вычисления точечных доверительных интервалов оценок для нелинейной регрессии в теории статистики. Изложен, например, в книге Seber, Wild "Nonlinear regression" года вроде 89 (могли быть и более свежие переиздания), ссылок на пересказы в нейролитературе я сейчас не вспомню, но гарантированно встречал.
Да, доверительный интервал будет не в виде "средней температуры по больнице", а для каждого входного вектора свой - но это на практике полезнее.

>в основу модели для прогнозирования (нейронную сеть) нужно заложить все доступные эталоны со
>100 зазубриванием !!! Для обратного распространения я НЕЗНАЮ КАК СДЕЛАТЬ

Правильного распознавания - достичь от сети можно. Точного зазубривания значений эталонных кодов на выходе сети с максимально возможной компьютерной точностью - невозможно, да этого и не надо, вообще-то.
Если у Вас такие проблемы с неправильным распознаванием встают регулярно - проверьте правильность своей программы путем сравнения с другой, реализующей MLP-сети.

>если входным данным мы можем доверять скажем на 70%, то и модель будет давать ВСЕГДА уверенность
>НЕ БОЛЕЕ чем 70%

Не всегда так. Например, в случае сильно избыточных входных данных (при наличии пар/троек и т.д. достаточно хорошо скоррелированных переменных на входе сети) сетка может усреднить-взвесить эти дублирующие величины и уменьшить уровень аддитивного шума этой сумме по сравнению с амплитудами шума в каждой отдельной переменной (если, конечно, шум между этими переменными нескоррелирован)

>Очень хорошие слова, если Вы не против я их скомуниздю, и запишу в Википедию ?

Только если ссылку на мой сайт вставите - а то самого себя вроде как рекламировать там неприлично Так пусть чужими руками

>Итак, у Вас есть обучаемая выборка и тестовая выборка, НО это не все примеры (в смысле, что есть еще
>большое множество, что нужно предсказывать) ... скажите мне чем отличается обучаемая выборка от
>тестовой ? Чтобы вопрос стал понятнее переформулирую и уточню Ваш текст:
>Вам нужно изучить функцию Ф(х), но у вас есть только А примеров для обучения и Б примеров для теста.
>Поэтому, вполне вероятно, что может существовать функция Ф1(х), для которой А, так же будет истинно. И
>функция Ф2(х) для которой А и Б, так же будет истино. Сеть вроде бы как продолжает сходиться относительно
>обучаемых примеров, а так же сходится относительно тестовых, но все равно может не соответствовать
>функции Ф(х).

Тогда просто А нерепрезентативна для восстановления Ф. Да, такое может быть - но это не проблема сети, а проблема обеспечения статистической полноты данных.

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

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


--------------------------
нейронные сети, анализ данных, прогнозирование
[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 18:16
Цитата:
Автор: Victor G. Tsaregorodtsev

Правильного распознавания - достичь от сетки можно. Точного зазубривания значений эталонных кодов на выходе сети с максимально возможной компьютерной точностью - невозможно, да этого и не надо, вообще-то.
Если у Вас такие проблемы с неправильным распознаванием встают регулярно - проверьте правильность своей программы путем сравнения с другой, реализующей MLP-сети.


Так в этом весь и сырбор ... "Правильного распознавания - достичь от сетки можно" - это мне и надо, но "путем сравнения с другой" с какой ? сравниваю уже с третьей, делаю уже вроде то же самое, пример сократил до игрушечного (код всего один метод и данные) 5 примеров, 3 входа 10 нейронов среднего слоя и один выход ... при точности в 0.1 максимум обучается ОДНОМУ примеру из пяти ... Почему не понимаю ... Взгляните (думаю много времени не займет) ? Могу прислать последнию версию на С# ... В принципе и здесь могу код выложить, т.к. он не большой типа "Hello, World"
[Ответ][Цитата]
tac
Сообщений: 2601
На: Обратное распространение ошибки
Добавлено: 28 июл 08 18:29
Цитата:
Автор: Victor G. Tsaregorodtsev

>Очень хорошие слова, если Вы не против я их скомуниздю, и запишу в Википедию ?

Только если ссылку на мой сайт вставите - а то самого себя вроде как рекламировать там неприлично Так пусть чужими руками


Это можно устроить
Но конкретно те слова привязать к вашему сайту будет затруднительно, типа так сказал "Victor G. Tsaregorodtsev", но т.к. у Вас есть работы по многослойному перцептрону, то в соответствующей статье можно добавить ссылку на Ваш сайт с Вашими работами (только не коммерческими )
[Ответ][Цитата]
 Стр.2 (5)1  [2]  3  4  5<< < Пред. | След. > >>