![]() |
|
![]() ![]() ![]() |
|
VinSilverVin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.4.2012 Репутация: нет Всего: нет |
Всем привет! Помогите разобраться с алгоритмом RLS. На сайтах есть общее описание алгоритмов, но, как правило, либо ошибки в алгоритме, либо неполная информация. Привожу пару сайтов: RLS, RLS. Хотелось бы найти что-то типо такого Алгоритм обратного распространения ошибки, но для RLS не нашел. Особенно интересует вопросы с размерностью матриц P, g, I. Спасибо заранее...
![]() |
|||
|
||||
Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
С самим алгоритмом не знаком, просто заинтересовало сравнение с back prop. Просмотрел предложенную вами вторую ссылку (wiki). По моему там очень подробно изложен вывод всех формул. И приведены окончательные формулы. Алгоритм накапливает все параметры постепенно. Уровень забывания задается лямбдой.
Матрицы P,I имеют размерность (p+1)x(p+1). Вектор g имеет размерность p+1. Формулы очень простые. Основная операция - умножение вектора на матрицу слева или срава и скалярное произведение двух векторов. Я не совсем понимаю, в чем проблема? -------------------- Mirkes |
|||
|
||||
VinSilverVin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.4.2012 Репутация: нет Всего: нет |
А что если нейронная сеть многослойная и в каждом слое разное количество нейронов, например как в третьей ссылке (Алгоритм обратного распространения ошибки). Какой размер матриц будет? Или это будет множество матриц? Или это будет просто массив массивов? |
|||
|
||||
Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Прошу прощения, но этот алгоритм не имеет отношения к нейронным сетям. Это алгоритм адаптивной фильтрации. Ваш вопрос странен. В принципе, работу фильтра можно представить в виде нейронной сети со специфическими весами меняющимися не во время обучения, а во время функционирования, но зачем такие сложности?
-------------------- Mirkes |
|||
|
||||
VinSilverVin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.4.2012 Репутация: нет Всего: нет |
Этот алгоритм имеет непосредственную связь с нейронными сетями, скажем так это можно представить в виде отдельного нейрона. Если глянуть на первую ссылку, то можно увидеть связь. На самом деле я вводил неправильные запросы, я нашел алгоритм RLS для обучения нейронных сетей. Этот алгоритм в работает быстрее чем алгоритм BP, даже если алгоритм BP модифицировать и ввести момент.
Например, алгоритм BP обучается, на задаче XOR, за 5819 эпох, а RLS за 641 эпох, с точнотью 0,001. Функция активации сигмоидальная, веса берутся случайным образом. Вот ссылки на RLS: RLS algorithm Модификация алгоритма |
|||
|
||||
Mirkes |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Откуда у вас данные про обучение BP xor? Если речь идет об обычной задаче обучения следующей функции
(1,1) 0 (1,0) 1 (0,1) 1 (0,0) 0 то я завтра поставлю пану экспериментов. Но насколько я помню, обучается BP фактически мгновенно. Сегдня просто нет под рукой нейроимитатора. Сравнение с BP в статье проводилось, судя по параметрам, на одном из самых неудачных алгоритмов обучения. Кстати, в статье указано, что часть параметров, необходимых для обучения, получается тем самым BP. Проведу эксперименты - отпишусь. Проверил на двух древних нейроимитаторах Clab вариант 1 - 274 эпохи Clab вариант 2 - 410 эпох sigmoid1 - 148 эпох Эксперименты проводил в каждом случае по 5 раз. Нейроимитаторы не очень приспособлены для этой задачи. Сами программы и их описания доступны на softcraft.ru. Если говорить по существу, то предложенный метод накапливает историю обучения. Это означает, что результат обучения будет серьезно зависеть даже от порядка перечисления примеров в каждой эпохе, за исключением случая лямбда равного нулю. На каждом этапе определяется не направление корректировки весов а сами веса. Вектор корректировок конечно можно вычислить, но он не будет градиентом функции оценки и нельзя будет применять ускорители типа пакетного обучения, что сильно упрощает жизнь. Кроме того, этот метод предназначен для решения задач прогнозирования значений и не позволяет учитывать особенности решения задач классификации, которые составляют подавляющую часть задач, решаемых с помощью нейронных сетей. Дело в том, что при правильном подходе к решениюадач классификации известно не желаемое значение выходного сигнала, а желаемое соотношение между выходными сигналами. Причем соотношение имеет вид неравенства. Если интересно об этом почитать, то на том же сайте в главе "Оценка и интерпретатор оценки" это расписано очень подробно. Таким образом область применения рассматриваемого алгоритма понятна и по отношению к BP довольно ограничена. Однако для своих задач он может быть лучше BP. Еще одно замечание по поводу сравнения времени обучения в эпохах. В 1995 году С.Е.Гилев показал, что на одной и тойже задаче с одинаковой архитектурой сети на одном и том же алгоритме обучения время обучения в эпохах может различаться до в 100 раз. Так что при сравнениях нужно указывать не только среднее значение, но и дисперсию, а лучше сразу доверительный интервал. Желаю успехов. Это сообщение отредактировал(а) Mirkes - 7.4.2012, 06:49 -------------------- Mirkes |
|||
|
||||
VinSilverVin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.4.2012 Репутация: нет Всего: нет |
Реализовал алгоритм на C# Какова была точноть? Сколько скрытых слоев и нейронов было в сети? |
|||
|
||||
Mirkes |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 586 Регистрация: 18.8.2011 Где: Красноярск Репутация: 4 Всего: 17 |
Для Clab использовал рекуррентную сеть с тремя циклами обмена сигрналами. Всего три нейрона. Для Sigmoid1 использовалась так же рекуррентная сеть с 2 циклами обмена сигналами. Ипоьзовал 5 нейронов, поскольку меньше программа не позволяет. Вопрос про точность не корректен. В предыдущем посте я писал о различии между задачами классификации и задачей предсказания числа. В первом случае речь может идти только о надежности классификации, а во втором случае - о точности предсказания. В программе Clab используется пакетный метод обучения нейронной сети с антиовражным квазиньютоновским методом BFGS В программе Sigmoid1 используется оценка типа расстояние до множества, пакетное обучение, антиовражный метод mParTan. Предполагаю, что в вашей реализации в качестве оценки использовался квадрат разности между ответом сети и "правильным" ответом. Для задачи классификации одна из самых неудачных оценок. Метод обучения вы видимо реализовали позадачный: подали пример на вход, вычислили градиент, модифицировали веса, перешли к следующему примеру. Надо сказать, что этот метод почти всегда проигрывает пакетному по скорости обучения. -------------------- Mirkes |
||||
|
|||||
VinSilverVin |
|
|||
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 4.4.2012 Репутация: нет Всего: нет |
Спасибо за предоставленную информацию. Я в нейронных сетях новичок, будет о чем подумать.
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |