Многослойный персептрон! Грааль где то рядом!

Многослойный персептрон! Грааль где то рядом!
Atom
1/22/2014
Иван З.


Начало здесь: http://www.stocksharp.co...--Vpiervyie-na-arienie/

Первая часть: Для тех, кто верит в нейросети
В вышеуказанном посте я описал работу персептрона, как он учится и торгует после обучения. Проблема в том, что я начитавшись постов в интернете сделал как все. То есть, собрал сеть, обучил, написал стратегию под сеть, и давай ее тестировать! Обучу на одних входных параметрах, тестирую стратеги, обучу на других, тестирую. И тут меня осенило! Когда сеть обучается идет подсчет ошибки, а что если вести параллельный подсчет еще и ошибки работы сети на данных не участвующих в обучении? После реализации чего, прогнав данные в которые я верил, окончательно разочаровался в персептроне. Но все по порядку.

Вторая часть: Что я поправил еще до этой идеи.
Убрал позорный график и вставил родной от S# .
Параметры персептрона теперь передаются в StatisticParameterPanel от S# .
Обучается параллельно 5 нейросетей с одинаковыми параметрами, но с разными первоначальными весами.
Сохраняется одна сеть на выбор пользователя, один раз при остановке обучения (раньше сохранялась при обновлении минимума).
Еще по мелочи, кнопки убрал, перегруппировал и тп.

Третья часть: Что я поправил после этой идеи.
Добавил еще график для вывода контрольной ошибки.
Ошибка считается теперь не среднеквадратичная, а абсолютная. Так легче для понимания графика. Например, на рисунке видно, что образов для обучения 804 это значит, что сети предоставлено 804 единиц, минус единиц, и нулей. Если сеть на каждый образ выдаст ноль, то суммарная ошибка будет равна 804. Что мы и видим на нижнем графике рисунка, вначале обучения ошибка сети равна 804.
Контрольная ошибка считается также, как и ошибка обучения, но на следующий день после последнего дня обучающей последовательности. И НИКАКИМ ОБРАЗОМ НЕ ВЛИЯЕТ НА ОБУЧЕНИЕ СЕТИ. На рисунке видно, что количество образов проверки 161, это значить что если сеть не нашла закономерность, то контрольная ошибка будет колебаться вокруг 161. По логике вещей если сеть нашла закономерность, то контрольная ошибка всех 5 сетей должна устремиться вниз. И дойти хотя бы до 100-110. Но такого я не видел. Прошу если кто-то этого добьется, опубликуйте скирин окошка, верните веру. [biggrin]
В выложенном варианте входную последовательность, и эталон я менять не стал(ну не выкладывать же грааль [lol]). Все как первом моем посте на эту тему. И лежит там же.

Четвертая часть: Мой соображения
Вместе с входными полезными данными мы подаем много мусора в надежде что сеть из мусора вытащит закономерности. А она подстраивается под мусор, и запоминая его, обучаясь до определенного момента.
Вывод: на вход сети надо подавать обработанные данные в которых много полезной информации и мало мусора, вопрос зачем мне нейросеть если у меня есть такие данные?

Вот и все!
Всем спасибо за внимание! Жду отзывов, и лайков! [biggrin]


1 2  >
Евгений Гович

Avatar
Date: 1/23/2014
Reply


Нейронные сети, «нелинейная динамика» и подобная псевдонаучная профанация - гипнотизирующий пиар для необразованных халявщиков.

То есть исключительно около-рыночное применение у этих «технологий».

Реальная торговля уже не мыслима без инсайда и протекции влиятельных особ, нужно быть вхожим в круги олигархов и депутатов. В противном случае рынок эффективен.
Thanks:

karellin

Avatar
Date: 1/27/2014
Reply


Здравствуйте, Иван. Прочитал обе Ваши статьи. Меня не покидает чувство, что вы прочитали всего одну/две книжки/статьи о НС перед тем, как принялись делать своего робота. Ни цены, ни приращения цен, ни свечи (их цвета, тени, патерны) не годятся в качестве исходных данных для НС. Вся соль НС это то, что именно нужно подавать на ее вход. Есть интересные статьи о прогнозировании ценового ряда с помощью НС и анализе влияния применяемой предобработки данных на результат ее работы. Если коротко, самые эффективные методы предобработки данных по различным источникам - это специальные вейвлеты, банальные крестики-нолики, модовая декомпозиция, к которым обычно применяются (для уменьшения размерности пространства признаков) метод главных компонент, кластеризация с равномерным распределением данных внутри кластера и т.д. Дома лежит полдесятка научных статей о предобработке данных для НС, но сейчас на работе, поэтому точные данные дать не могу. Помню фамилии авторов - Крисилов, Олешко. Погуглите, почитайте.
Нейросеть вам ответит что-то внятное только если ее внятно спросить. Если свалить на вход кучу необработанных данных, она вернет общую статистику по основным группам этих данных, а поскольку они не обработаны ее ответ будет примерно соответствовать матожиданию по этой куче, то есть случайный +-. А вообще, существует мнение (которое я в целом разделяю), что методы датамайнинга более эффективны при грамотном использовании, поскольку дают представление о данных в целом (структура, распределения, зависимости), тогда как нейросеть выдает только конечный результат и является по сути черным ящиком.
Thanks: Rebelion Иван З. loop

Rebelion

Avatar
Date: 1/27/2014
Reply


karellin
Здравствуйте, Иван. Прочитал обе Ваши статьи. Меня не покидает чувство, что вы прочитали всего одну/две книжки/статьи о НС перед тем, как принялись делать своего робота. Ни цены, ни приращения цен, ни свечи (их цвета, тени, патерны) не годятся в качестве исходных данных для НС. Вся соль НС это то, что именно нужно подавать на ее вход. Есть интересные статьи о прогнозировании ценового ряда с помощью НС и анализе влияния применяемой предобработки данных на результат ее работы. Если коротко, самые эффективные методы предобработки данных по различным источникам - это специальные вейвлеты, банальные крестики-нолики, модовая декомпозиция, к которым обычно применяются (для уменьшения размерности пространства признаков) метод главных компонент, кластеризация с равномерным распределением данных внутри кластера и т.д. Дома лежит полдесятка научных статей о предобработке данных для НС, но сейчас на работе, поэтому точные данные дать не могу. Помню фамилии авторов - Крисилов, Олешко. Погуглите, почитайте.
Нейросеть вам ответит что-то внятное только если ее внятно спросить. Если свалить на вход кучу необработанных данных, она вернет общую статистику по основным группам этих данных, а поскольку они не обработаны ее ответ будет примерно соответствовать матожиданию по этой куче, то есть случайный +-. А вообще, существует мнение (которое я в целом разделяю), что методы датамайнинга более эффективны при грамотном использовании, поскольку дают представление о данных в целом (структура, распределения, зависимости), тогда как нейросеть выдает только конечный результат и является по сути черным ящиком.


А можно и мне ссылки на данные статьи? Мне важен дата майнинг больше в этом ключе - что подавать на вход стратегиям для анализа. Был бы очень благодарен.
Thanks:

karellin

Avatar
Date: 1/27/2014
Reply


http://neuroschool.narod.ru/articles.html
здесь почитайте подходящие для вас статьи.
Thanks:

loop

Avatar
Date: 1/28/2014
Reply


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

Хорошо сказано.
Thanks:

karellin

Avatar
Date: 1/29/2014
Reply


Я поразмышлял тут на досуге, в каких случаях будет оправдано применение НС в торговле. В общем случай придумал только один, и при этом довольно специфический. Давным давно в журнале Валютный спекулянт год так за 2000-2001 читал статьи про метод торговли AT&CF, при котором автором применялись спектральный анализ и цифровая фильтрация ценового ряда, а также использовались собственные индикаторы. Система сигналов на покупку - продажу по этим индикаторам была далеко нетривиальной - что-то типа: "Если кривая М находится над Т, а индикатор S пересекает D снизу вверх, причем R не больше трех, это сильный сигнал на покупку, приводящий к успеху в 85% случаев".
Так вот, в случае наличия серьезного отклонения матожидания прибыли от нуля при каком-либо из соотношений индикаторов системы, это соотношение, как я считаю, можно выловить с помощью НС типа карт Кохонена или нечеткой нейросети, после чего уже вытащить из обученной нейросети конкретные правила для определения признаков такой прибыльной ситуации.
Других применений для НС я пока, к сожалению, не вижу, поскольку они проигрывают в точности, обоснованности и предсказуемости результата другим методам.
Thanks:

karellin

Avatar
Date: 2/6/2014
Reply


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

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

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

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

Пока то немногое, что приходит на ум - корректировать коэфф. обучения для каждого отдельного выхода сети и смотреть, как будут изменяться целевые веса. Но так сеть будет учиться НУ ОЧЕНЬ ДОЛГО, и не факт, что успешно. Еще один вариант - обучение через генетический алгоритм с настроенной соответствующим образом оценочной функцией.

PS Сеть с тремя скрытыми слоями. Регулировать нужно веса первого слоя от входного.
Thanks:

Иван З.

Avatar
Date: 2/6/2014
Reply


Здравствуйте, karellin! Почитал статьи о прогнозировании ценового ряда, которые вы упоминали в предыдущих комментариях. Крисилов, Олешко и др., спасибо, интересные статьи.

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

При обучении алгоритмом обратного распространения ошибки, для каждого слоя и даже для каждого нейрона можно задать свою функцию активации. При корректировке весов будет использоваться ее производная. Но к ней предъявляются определенные требования. Можно посмотреть здесь http://www.aiportal.ru/a...s/back-propagation.html . Также можно регулировать скорость обучения, и так называемую инерцию http://www.aiportal.ru/a...ate-training-speed.html . Если вы хотите вручную влиять на ход обучения, корректируя веса первого слоя. То это не имеет смысла, сеть будет подстраивать веса которые вы не трогали. А если вы будете корректировать все веса входного слоя то она не обучится вовсе. Реализовать такое вмешательство можно и на персептроне но результата не будет.
Алгоритм обратного распространения ошибки, на мой взгляд, это не самый простой способ обучения нейросети. Генетический алгоритм проще, здесь любопытная реализация http://habrahabr.ru/post/168067/ . А сети Кохонена и Гроссберга еще проще, вот тут они более менее внятно описаны http://www.intuit.ru/stu...rses/88/88/lecture/2656 . Задача не совсем ясна, поэтому, что то советовать трудно.
Thanks: karellin

karellin

Avatar
Date: 2/6/2014
Reply


Иван З., я вполне себе владею основной информацией о нейросетях, как вы понимаете. Моделировал их работу даже в Exсel, не говоря уже о программных реализациях. Вручную никто веса первого слоя корректировать в принципе не сможет при том объеме данных, который обрабатывается. Я предположил, что если я подкорректирую в определенных случаях коэфф. скорости обучения для определенных весов, то это мне поможет сосредоточить на определенных нейронах определенную информацию о выборке. То есть нейросеть используется для датамайнинга с целью извлечь полезную информацию из выборки.
Например, имеется обработанная выборка из рыночных данных. Также имеются сведения об ожидаемой волатильности опционов. Один из выходов нейросети тестируем на корреляцию с ожидаемой волатильностью, и в случае если она (корреляция) уменьшается - пытаемся обучить на данном примере другие веса, уменьшить скорость обучения некоторых весов и т.д. В конечном итоге максим корреляцию и узнаем, какие именно рыночные данные являются определяющими для ожидаемой волатильности и в какие именно моменты времени.
Не нужно говорить о том, что сеть с единственным выходом учится лучше, чем сеть с несколькими. Архитектура сети и алгоритм ее работы такие именно чтобы осуществлять нелинейный поиск в пространстве признаков, а не прогнозировать конкретный признак на основе других. Ищется максимальная корреляция, а не прогноз изменения. Задача - исследование, а не гадание.

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

Иван З.

Avatar
Date: 2/6/2014
Reply


Возможно вам помогут сети с обратной связью, так называемые рекуррентные нейронные сети, сети Хопфилда и Хемминга как их разновидность.
Thanks:
1 2  >

Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy