Нейро-синтезатор, конструктор+лаборатория

 

По мотивам прочитанного и открытых кодов, сделал кое-что для себя.

Реализованы методы обратного распространения, по прибыльности,

слои Кохенена, несколько вариантов нормализации входных данных.

Сбор данных в своем формате, возможен экспорт их *.hst файлов,

безбиблиотечный экспорт-импорт в матлаб, полная визуализация

как всех входных векторов, так и результаты прогона по истории.

На самом деле ни хвалюсь- поскольку ничего особенного, пишут

и более красивые и сильные вещи, но смысл в собственной

нейролаборатории с усиленной вычислительной мощью.

( 3 млн. проходов по 8тыс. паттернов ~ за ночь )

Выход:либо memfile, либо сбос весов на диск.


Входящие данные


Параметры нейросети (еще не доделаны .. в процессе)


Монитор процесса обучения (масштабирует, запрос по точке)


Прогон по истории (тоже недоделан, переделываю заново)

Делаю для себя, ни для продажи - ищу со-авторов по нейро-алгоритмам. Интересует практические идеи и алгоритмы по применению сетей Хопфилда, модели Липпмана-Хемминга, машина Больцмана, сеть Кохонена, звезды и слои Гроссберга, етс. Также некоторые градиентные алгоритмы (скоростной и пороговый) обучения и методы сопряжённых градиентов, квазиньютоновы алгоритмы, етс.

 

Вот маленькая помощь.

Ещё возможно здесь стоит поискать: http://www.machinelearning.ru

Файлы:
 
StatBars писал(а) >>

Вот маленькая помощь.

Стало быть, и я помогу.

Очень рекомендую книжку (содержание расскажет о том, что это must have): http://www.piter.com/book.phtml?978531800220

Код присутствует (см. по ссылке) :) Сама книга есть в инете (в djvu точно).

 

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

 
А реализация или ссылки на алгоритм Левенберга-Марквардта(язык сломаешь) есть у кого-нибудь?
 
StatBars писал(а) >>
А реализация или ссылки на алгоритм Левенберга-Марквардта(язык сломаешь) есть у кого-нибудь?

Реализацию находил в гугле, помниццо. По запросу "levmar" первые две строчки - самое оно: http://www.ics.forth.gr/~lourakis/levmar/

Удачи!

 
StatBars >>:
А реализация или ссылки на алгоритм Левенберга-Марквардта(язык сломаешь) есть у кого-нибудь?

Алгоритм Левенберга-Марквардта хорошо описан в книге Hagan "Neural Network Design". А также здесь, для общего применения,


http://dspace.ubvu.vu.nl/bitstream/1871/12462/1/Scanjob_199300011.pdf

http://www2.imm.dtu.dk/pubdb/views/edoc_download.php/3215/pdf/imm3215.pdf


Разные программные реализации (MINPACK, MPFIT, LEVMAR, ...) даны здесь


http://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm

http://www.fizyka.umk.pl/nrbook/c15-5.pdf


По моему собственному опыту, этот алгоритм самый быстрый и способен достичь меньшую ошибку обучения, хотя в другой ветке все утверждали что "не нужно это". Бакпроп сам по себе это только метод вычисления градиентов сети и ведёт к методу градиентного спуска (w_new = w_old - a*gradient). BFGS (Broden-Fletcher-Goldfarb-Shanno) и conjugate gradient хуже Левенберга-Марквардта по моему опыту. Интересно что создатель кода LEVMAR (Lourakis) отрёкся от алгоритма Левенберга-Марквардта в пользу Dog Leg алгоритма в статье 2005 года "Is Levenberg-Marquardt the Most Efficient Optimization Algorithm for Implementing Bundle Adjustment?":


http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.60.3592


Кстати, все эти алгоритмы гарантированно ведут к локальным минимумам, что, опять же, "пустячок" согласно распространённому мнению на другой ветке. Если достижение глобального минимума в обучении сети не важно, то зачем извращаться? Бакпроп проще и нуждается в меньшей памяти.

 
registred >>:

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


Согласен. FANN приветствуется.

 

Раз пошли такие интеллектуальные посты, может кто в курсе что за алгиритм в обучении NSDT используется ? Думаю ничего нового там нет. И как пакет внутри готовит входные данные ? Пакет считаю ничего особенного просто любопытен их подход.

 
Valio >>:

Раз пошли такие интеллектуальные посты, может кто в курсе что за алгиритм в обучении NSDT используется ? Думаю ничего нового там нет. И как пакет внутри готовит входные данные ? Пакет считаю ничего особенного просто любопытен их подход.

Смотрите здесь, в конце статьи

http://www.neuroshell.com/Successful%20Trading%20Using%20Artificial%20Intelligence.pdf


Написано что используют TurboProp 2. Статья по турбопропу здесь

http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.56.4325


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

Причина обращения: