Алгоритмы, методы, исходники / Форум

Алгоритмы, методы, исходники / Форум (http://forum.algolist.ru/)
-   Искусственный интеллект, нейронные сети (http://forum.algolist.ru/algorithm-artificial-neural/)
-   -   Новичок в нейронных сетях (http://forum.algolist.ru/algorithm-artificial-neural/4658-novichok-v-neironnyh-setiah.html)

Sarge 20.02.2011 21:30

Новичок в нейронных сетях
 
Здравствуйте!

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

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

Еще раз заранее благодарю всех откликнувшихся!!!

гocть 21.02.2011 01:52

Цитата:

Сообщение от Sarge (Сообщение 14110)
Недавно приступил к изучению нейронных сетей, так как требуется работодателем.

Нейросети далеко не единственный инструмент для анализа данных. Я бы не советовал на нем зацикливаться.

Цитата:

И еще начал читать кое-какие книжки, общие по нейронным сетям, и в частности в книге автора Барский "Нейронные сети. Распознавание, управление, принятие решений"
Посмотрел по содержанию... просто ужас, книга имеет мало общего с современной ситуацией в отрасли.

Если учиться всерьез, то учитесь у признанных авторитетов. Конкретно по нейросетям очень рекомендую Neural Networks for Pattern Recognition Бишопа.

Цитата:

им была сказана такая фраза: "...нейросетевые технологии позволяют строить наглядные функции многих переменных, как бы преобразуя многомерное пространство в одно-, двух- или трехмерное-". Подскажите, автор имел ввиду, что можно имея архитектуру сети представить ее в виде функции?
Нет. Тут видимо имеются в виду SOM-карты, один из методов понижения размерности.

А нейросеть и есть математическая функция. Какой смысл вы вкладываете в слово "представлять" мне не совершенно непонятно.

Цитата:

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

Sarge 21.02.2011 23:33

Здравствуйте,

Спасибо Вам большое, что откликнулись! Могли бы Вы мне ответить на еще несколько моих вопросов:

1) существует ли книга Бишопа на русском языке?

2) В данный момент я столкнулся со следующей задачей: весь алгоритм состоит из 3 пунктов:
1. Построение архитектуры нейронной сети;
2. Выбор параметра для минимизации (например, минимизации ошибки ИНС) и на основании построенной архитектуры и параметра для минимизации вывод целевой функции;
3. Поиск глобального экстремума нашей целевой функции по методом поиска глобального экстремума функции. Найдя его, как я думаю, мы получим веса для нейронов нашей сети и прогнав его получим некий прогноз.

Т.е. речь идет о собственном методе обучения сети, если так можно выразиться, но проблема заключается в том, что я не знаю, как перейти от архитектуры сети к целевой функции, для последующего поиска глобального экстремума. Можете мне помочь, подсказать в решении моей задачи? Заранее Вам благодарен!!!!

гocть 22.02.2011 08:20

Цитата:

Сообщение от Sarge (Сообщение 14116)
1) существует ли книга Бишопа на русском языке?

нет

Цитата:

2) В данный момент я столкнулся со следующей задачей: весь алгоритм состоит из 3 пунктов:
1. Построение архитектуры нейронной сети;
число нейронов и слоев? пробуете разные варианты, оцениваете качество получившихся моделей на независимой тестовой выборке или кроссвалидацией, и выбираете лучший.

Цитата:

2. Выбор параметра для минимизации (например, минимизации ошибки ИНС) и на основании построенной архитектуры и параметра для минимизации вывод целевой функции;
зависит от задачи. обычно в задачах типа регрессии минимизируется квадрат отклонения.

Цитата:

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

Цитата:

Можете мне помочь, подсказать в решении моей задачи?
О какой задаче идет речь? Регрессия, классификация, или еще что-то?

гocть 22.02.2011 08:51

да и еще - прежде чем писать свой код, посмотрите на уже существующие отлаженные пакеты. Например fann - http://leenissen.dk/fann/wp/. Или weka/rapidminer - там есть и куча других методов помимо нейросетей.

Sarge 22.02.2011 20:26

Цитата:

Сообщение от гocть (Сообщение 14118)
да и еще - прежде чем писать свой код, посмотрите на уже существующие отлаженные пакеты. Например fann - http://leenissen.dk/fann/wp/. Или weka/rapidminer - там есть и куча других методов помимо нейросетей.

Спасибо, обязательно поизучаю.

Sarge 22.02.2011 20:41

[quote=гocть;14117]нет


Цитата:

Сообщение от гocть (Сообщение 14117)
число нейронов и слоев?

С числом нейронов и слоев не определялся. Допустим если я имею 1 слой и в нем 3 нейрона, какого вида будет моя целевая функция при минимизации квадрата отклонения?

Цитата:

Сообщение от гocть (Сообщение 14117)
пробуете разные варианты, оцениваете качество получившихся моделей на независимой тестовой выборке или кроссвалидацией, и выбираете лучший.

Планировал по моделировать различные варианты и посмотреть на качество прогнозов.

Цитата:

Сообщение от гocть (Сообщение 14117)
зависит от задачи. обычно в задачах типа регрессии минимизируется квадрат отклонения.

Да тоже в качестве параметра минимизации планирую выбрать квадрат отклонения

Цитата:

Сообщение от гocть (Сообщение 14117)
в нейронных сетях локальный экстремум обычно ищется градиентным спуском a.k.a. "методом обратного распространения ошибки" (backpropagation). а глобальный экстремум ищут просто позапускав локальную оптимизацию несколько раз с разных начальных случайных точек.

Да, я в курсе насчет метода "обратного распространения ошибки". Поиск глобального экстремума методом позапускав локальную оптимизацию не считаю точным, поэтому запрограммировал свой метод поиска глобального экстремума, и протестировал на сложных мат.функциях типа функции Швефеля, Вуда и т.д. у меня метод нашел правильный глобальный экстремум этих функций с высокой точностью (в некоторых случаях точность выше матлаба) и я хотел бы применить его в нейронных сетях.

Цитата:

Сообщение от гocть (Сообщение 14117)
О какой задаче идет речь? Регрессия, классификация, или еще что-то?

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

Если я говорю, что-то глупое, пожалуйста не ругайтесь :) ,это идея, она может быть еще сыровата, но я пытаюсь, к тому же тока начал изучать НС. Еще раз благодарю за отклик!!!

гocть 22.02.2011 23:39

[quote=Sarge;14126]
Цитата:

Сообщение от гocть (Сообщение 14117)
С числом нейронов и слоев не определялся.

Цитата:

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

Цитата:

Допустим если я имею 1 слой и в нем 3 нейрона, какого вида будет моя целевая функция при минимизации квадрата отклонения?
Ну, квадрат отклонения и будет: (y - f(x1, ..., x_m; w_1, ..., w_k))^2, где y - желаемое выходное значения для текущего примера (примеры подаются в цикле по одному), f(x; w) - математическая функция от входа x, соответствующая вашей нейросети, и параметризуемая коэффициентами w (веса нейронов). Берете градиент по w, делаете шаг градиентного спуска, и переходите к следующему примеру.

Например, для однослойной сети с сигмоидной функции активации: f(x, w) = 1/(1 + exp(-w^T x)) = 1/(1 + exp(-w1 x2 - w2 x2 - ... - w_m x_m)).

Если вы хотите отказаться от стандартного backpropagation по одному примеру, и минимизировать все сразу, то берите сумму по всем n примера в обучающей выборке: \sum_{i=1}^n (y[i] - f(x[i]; w))^2

Цитата:

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

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

В любом случае, сначала следует попробовать стандартные реализации стандартных алгоритмов, чтобы был хоть какой-то baseline, относительно которого можно сравниваться.

Цитата:

У меня стоит задача разработки алгоритма для прогнозирования временных рядов (это котировки, цены на сырье и т.д.)
Я бы начал с ознакомления существующей литературы и результатов по проблеме, благо искать научные статьи в наще время стало проще простого: http://scholar.google.com/scholar?hl...ks+time+series

Sarge 25.02.2011 21:09

спасибо Вам большое! Очень помогли. Единственный вопрос у меня остался: а Вы могли бы посоветовать мне пакеты в open source, в которых я мог бы самостоятельно конструировать сеть + сам расставлять веса для каждого нейрона?

гocть 25.02.2011 22:02

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

из софта среди наиболее известных пакетов - matlab neural toolbox и fann


Часовой пояс GMT +4, время: 17:17.