Многослойный персептрон! Грааль где то рядом!
Atom Ответить
22.01.2014


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

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

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

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

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

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



Спасибо: wkj




17 Ответов
Евгений Гович

Фотография
Дата: 23.01.2014
Ответить


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

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

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

karellin

Фотография
Дата: 27.01.2014
Ответить


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

Rebelion

Фотография
Курсы
Дата: 27.01.2014
Ответить


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


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

karellin

Фотография
Дата: 27.01.2014
Ответить


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

loop

Фотография
Дата: 28.01.2014
Ответить


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

Хорошо сказано.
Спасибо:

karellin

Фотография
Дата: 29.01.2014
Ответить


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

karellin

Фотография
Дата: 06.02.2014
Ответить


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

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

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

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

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

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

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 06.02.2014
Ответить


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

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

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

karellin

Фотография
Дата: 06.02.2014
Ответить


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

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

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 06.02.2014
Ответить


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

karellin

Фотография
Дата: 07.02.2014
Ответить


Иван З. Перейти
Возможно вам помогут сети с обратной связью, так называемые рекуррентные нейронные сети, сети Хопфилда и Хемминга как их разновидность.


Если вы мне объясните, каким образом НС, предназначенная для запоминания и ассоциации образов может помочь оценить прогнозируемость заданного признака в выборке, буду вам очень признателен. То же самое касается и сети кохонена.
Спасибо:

Иван З.

Фотография
Курсы Автор статей Благотворитель
Дата: 07.02.2014
Ответить


karellin Перейти
Иван З. Перейти
Возможно вам помогут сети с обратной связью, так называемые рекуррентные нейронные сети, сети Хопфилда и Хемминга как их разновидность.


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

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

karellin

Фотография
Дата: 07.02.2014
Ответить


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

bosco

Фотография
Дата: 07.03.2014
Ответить


Конечно нейронные сети работают. Их очень много вокруг в коде, на самом деле. Но надо знать как их использовать.
Насколько я понял, вы пытаетесь с помощью сети найти сигналы на вход-выход? Не уверен что это возможно.
Для сети очень критично чтобы данные были нормированы и чтобы входящие наборы были репрезентативными.
Тогда сеть научится. Я не настоящий сварщик, но насколько я могу судить, нейронная сеть отлично подходит в качестве фильтра,
в ситуации, например, когда есть какие-то входные сигналы, связанные с объёмом и ценой, плюс индикаторы по вкусу.
Многие для фильтрации используют простые условия > <... Нейросеть же лучше запомнит, что работает, а что нет.
Кстати насчёт времени обучения, не знаю насколько это правильно, по например та нейросеть что я использую, всего из нескольких десятков нейронов, может обучаться до недели,
с помощью достаточно быстрого железа и в несколько потоков.
Это я к тому, что обучение нейросети - не такой уж и простой процесс. Если у вас получается обучить нейросеть быстро - скорее всего она недообучена.
Воспринимайте это как процесс воспитания ребёнка - образование синаптических связей, их выверка - занимает очень много времени.
Но результат того стОит.
Спасибо:

loop

Фотография
Дата: 08.03.2014
Ответить


bosco Перейти
Конечно нейронные сети работают. Их очень много вокруг в коде, на самом деле. Но надо знать как их использовать.
Насколько я понял, вы пытаетесь с помощью сети найти сигналы на вход-выход? Не уверен что это возможно.
Для сети очень критично чтобы данные были нормированы и чтобы входящие наборы были репрезентативными.
Тогда сеть научится. Я не настоящий сварщик, но насколько я могу судить, нейронная сеть отлично подходит в качестве фильтра,
в ситуации, например, когда есть какие-то входные сигналы, связанные с объёмом и ценой, плюс индикаторы по вкусу.
Многие для фильтрации используют простые условия > <... Нейросеть же лучше запомнит, что работает, а что нет.
Кстати насчёт времени обучения, не знаю насколько это правильно, по например та нейросеть что я использую, всего из нескольких десятков нейронов, может обучаться до недели,
с помощью достаточно быстрого железа и в несколько потоков.
Это я к тому, что обучение нейросети - не такой уж и простой процесс. Если у вас получается обучить нейросеть быстро - скорее всего она недообучена.
Воспринимайте это как процесс воспитания ребёнка - образование синаптических связей, их выверка - занимает очень много времени.
Но результат того стОит.


Нагородили чего то такого что сами наверно не поняли что сказали. Не уверены что можно искать входы выходы но что то при этом както работает.Confused

Докажите, тут много таких философов по теме ИИ, которые в реальности клерки, охранники, кондукторы и фитнес тренеры.

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

kche

Фотография
Дата: 22.04.2014
Ответить


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


посмотрите здесь - http://www.jurikres.com/faq/trading.htm#top

Раздел - SYNTHESIS. Sequence for advanced system building.

особенно stage 2 последние 2 пункта - про temporally and spatially compressions.
Спасибо:

kche

Фотография
Дата: 22.04.2014
Ответить


еще очень полезная книжка - Financial Forecasting & Neural Networks - http://www.jurikres.com/.../cat_pub.htm#forecasting
Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy