Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 286

 
Mihail Marchukajtes:
Y Ну теперь понятно. Другими словами, сначала тренируем скажем сеть без уччителя. Далее получчившиеся значения весов записаваем ввеса классификатора и потом классификатор уже дообучаем с учителем. очень всё интересно, только вот не понятно. Предположим мы получили веса нейронопроведении тонкой настроки, веса продолжают оптимизироватся????? Другими словами проведя предобучение без учителя, мы задаём начальные веса для классификатора, которые приводят его в глобальный минимум. Так чтоли?

“Глубокое” обучение имеет смысл из за затухания(сигмоид)\взрыного роста(гипертангенс) производных при обратном распространении, когда слоёв становится существенно больше 4-5, эту проблему обошли “костылем” послойного предобучения автоэнкодерами или RBM, которые по сути выполняют иерархический нелинейный отбор признаков(как PCA только нелинейно и много раз), с которыми потом легко работать высокоуровневым слоям, затем обычным бэкпропом быстро донастраиватся вся система уже по таргетам(с учителем).

Смотрим: https://www.youtube.com/watch?v=iowsPfk7uUY

Конечно, тут полно есть “знатоков” со статьями и съевшие собаку на ZZ, помнящие наизусть каким пакетом в R нужно пользоваться на все случаи жизни, поэтому скажу в воздух, всё равно никто не поверит,  глубокие нейросетки, как и CNN, когда понимаешь как они устроены, использовать для прогнозирования рынка рука не подымится, так как такая большая иерархия признаков, нужна только для картинок, видео и NLP, потому что ТАМ ЕСТЬ БОЛЬШАЯ ИЕРАРХИЯ, наш мир так устроен, объекты состоят из объектов и тп. тоже и с NLP, так как язык иерархичен. На рынке нет ничего подобного, Вы торгуете некий таймфрэйм, происходящее на более мелких для вас шум. Инвесторы принимают решение на одном таймфрейме, они не зависят от того какое приняли решение скальперы и ХФТ-шники, тем более хеджеры, арбитражеры и тп. А иерархия в глубокой сети предполагает связность, что мелкое определяет крупное, из снежинок состоит лавина.

11. Data mining. Глубокие нейронные сети
11. Data mining. Глубокие нейронные сети
  • 2015.11.24
  • www.youtube.com
Техносфера Mail.ru Group, МГУ им. М.В. Ломоносова. Курс "Методы обработки больших объемов данных" (осень 2015) Лекция №11 - "Глубокие нейронные сети" Лектор ...
 
Женя:

Выглядит круто, но дороговато.

1 Хотелось бы потренироваться на чем то бесплатном, посмотреть как оно работает в реалтайме без задержки, а там демка с гигантским лагом.

2 А можете в двух словах описать, как происходит использование такого сигнала в торговле и МО? Если не секрет, когда важные новости выходят, успеваете торгануть, или всё таки за секунду, полсекунды кто то раньше, начинает лупить по рынку и снимает сливки?

1 Парсите с сайтов

2 Лучше ожидаемого покупаем, хуже ожидаемого продаём.

 
toxic:

“Глубокое” обучение имеет смысл из за затухания(сигмоид)\взрыного роста(гипертангенс) производных при обратном распространении, когда слоёв становится существенно больше 4-5, эту проблему обошли “костылем” послойного предобучения автоэнкодерами или RBM, которые по сути выполняют иерархический нелинейный отбор признаков(как PCA только нелинейно и много раз), с которыми потом легко работать высокоуровневым слоям, затем обычным бэкпропом быстро донастраиватся вся система уже по таргетам(с учителем).

Смотрим: https://www.youtube.com/watch?v=iowsPfk7uUY

Конечно, тут полно есть “знатоков” со статьями и съевшие собаку на ZZ, помнящие наизусть каким пакетом в R нужно пользоваться на все случаи жизни, поэтому скажу в воздух, всё равно никто не поверит,  глубокие нейросетки, как и CNN, когда понимаешь как они устроены, использовать для прогнозирования рынка рука не подымится, так как такая большая иерархия признаков, нужна только для картинок, видео и NLP, потому что ТАМ ЕСТЬ БОЛЬШАЯ ИЕРАРХИЯ, наш мир так устроен, объекты состоят из объектов и тп. тоже и с NLP, так как язык иерархичен. На рынке нет ничего подобного, Вы торгуете некий таймфрэйм, происходящее на более мелких для вас шум. Инвесторы принимают решение на одном таймфрейме, они не зависят от того какое приняли решение скальперы и ХФТ-шники, тем более хеджеры, арбитражеры и тп. А иерархия в глубокой сети предполагает связность, что мелкое определяет крупное, из снежинок состоит лавина.

Cпасибо обязательно посмотрю видео. Но мне больше понравился подход Решетова. Я тут наткнулся на его статью, где он подробно разжовывает как устроен его предиктор, так что. Жду переделки кода для статьи. Этим занимается модератор. И проглашаю к обсуждению, потмоу как у меня есть свой взгляд на подготовку данныых и обучвение в целом.....
 
toxic:

“Глубокое” обучение имеет смысл из за затухания(сигмоид)\взрыного роста(гипертангенс) производных при обратном распространении, когда слоёв становится существенно больше 4-5, эту проблему обошли “костылем” послойного предобучения автоэнкодерами или RBM, которые по сути выполняют иерархический нелинейный отбор признаков(как PCA только нелинейно и много раз), с которыми потом легко работать высокоуровневым слоям, затем обычным бэкпропом быстро донастраиватся вся система уже по таргетам(с учителем).

Смотрим: https://www.youtube.com/watch?v=iowsPfk7uUY

Конечно, тут полно есть “знатоков” со статьями и съевшие собаку на ZZ, помнящие наизусть каким пакетом в R нужно пользоваться на все случаи жизни, поэтому скажу в воздух, всё равно никто не поверит,  глубокие нейросетки, как и CNN, когда понимаешь как они устроены, использовать для прогнозирования рынка рука не подымится, так как такая большая иерархия признаков, нужна только для картинок, видео и NLP, потому что ТАМ ЕСТЬ БОЛЬШАЯ ИЕРАРХИЯ, наш мир так устроен, объекты состоят из объектов и тп. тоже и с NLP, так как язык иерархичен. На рынке нет ничего подобного, Вы торгуете некий таймфрэйм, происходящее на более мелких для вас шум. Инвесторы принимают решение на одном таймфрейме, они не зависят от того какое приняли решение скальперы и ХФТ-шники, тем более хеджеры, арбитражеры и тп. А иерархия в глубокой сети предполагает связность, что мелкое определяет крупное, из снежинок состоит лавина.

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

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

Определяющим является определение целевой и ее предикторов.

На примере ЗЗ я много раз пытался показать, что даже столь очевидная,  наглядная и красивая целевая переменная как ЗЗ, таковой не является  и при более внимательном рассмотрении таит непреодолимые препятствия.

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

  • предиктор должен иметь отношение к целевой переменной  - предсказательную способность для целевой переменной
  • предиктор должен опережать целевую переменную

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


В очередной раз призываю сосредоточится на целевой переменной и обоснованию предикторов для этой конкретной целевой переменной.  

 

ПС.

Вникаю во взаимосвязи валютных пар. Получил удивительный для меня результаты. В частности:

  • валютные пары EURUSD  и GBPUSD не имеют отношение друг к другу. И это несмотря на широко публикуемую коррелированность. Построение моделей VAR на этих парах безнадежно. 
  • AUDUSD вообще не имеет никакого отношения к основным валютным парам.  

 
СанСаныч Фоменко:

Вникаю во взаимосвязи валютных пар. Получил удивительный для меня результаты. В частности:

  • валютные пары EURUSD  и GBPUSD не имеют отношение друг к другу. И это несмотря на широко публикуемую коррелированность. Построение моделей VAR на этих парах безнадежно. 
  • AUDUSD вообще не имеет никакого отношения к основным валютным парам.  

наверное было бы правильно рассказать о причине таких умозаключений
 
СанСаныч Фоменко:

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

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

Определяющим является определение целевой и ее предикторов.

На примере ЗЗ я много раз пытался показать, что даже столь очевидная,  наглядная и красивая целевая переменная как ЗЗ, таковой не является  и при более внимательном рассмотрении таит непреодолимые препятствия.

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

  • предиктор должен иметь отношение к целевой переменной  - предсказательную способность для целевой переменной
  • предиктор должен опережать целевую переменную

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


В очередной раз призываю сосредоточится на целевой переменной и обоснованию предикторов для этой конкретной целевой переменной.  

 

ПС.

Вникаю во взаимосвязи валютных пар. Получил удивительный для меня результаты. В частности:

  • валютные пары EURUSD  и GBPUSD не имеют отношение друг к другу. И это несмотря на широко публикуемую коррелированность. Построение моделей VAR на этих парах безнадежно. 
  • AUDUSD вообще не имеет никакого отношения к основным валютным парам.  

Вот тут с Вами соглашусь, но хочу внести поправку. Уточнение прежде всего по первому пункту. Не иметь отношение к целевой, а быть для неё причиной. То есть изменился предиктор, поменялась целевая, а не наоборот. И тогда второй пункт просто отпадает. Никакого опережения не нужно. Достаточно чтобы входные данные были причиной для выхода. Ну и опять же все забывают где вы работаете. Главное на бирже цена. Найдите входы которые являются причиной для изменения цены и любая ТС, я Вас уверяю, абсалютно любая ТС будет работать как нужно. Но только это секрет!!!!! Никому не говори.... Вам ребята нужно будет прочесть статью мою всётаки. Не подумайте я не пиарю и всё такое. Конечно переживаю что из читателей буду только я :-) шутка. Так вот после прочтения много вопросов отпадёт. Тут помимо самого ИИ (предположим у вас есть сетка) нужно правильно организовать сбор данных, аккуратно с индикаторами, чтоб не произошло заглядывание и т.д. Думаю в статье как раз таки рассказан один из подходов именно к рынку. А то бывало раньше я так увлекался сетками, что торговля была на втором плане в итоге. Думаю здесь сейчас как раз присутствуют именно такие специалисты, которым торговля то в принципе, лишь бы поэксперементировать.....
 
Ну а что касаемо применения Глубоких нейронных сетей в трейдинге, то рациональное зерно в этом есть, однако количества манипуляций нужно провести достаточно огромное, подразумевая что сеть работает на часах, НО анализирует начиная с минуток, минутки обобщили, потом пяти минутка дообобщили и т.д. ИМХО
 

Mihail Marchukajtes:
Вот тут с Вами соглашусь, но хочу внести поправку. Уточнение прежде всего по первому пункту. Не иметь отношение к целевой, а быть для неё причиной. То есть изменился предиктор, поменялась целевая, а не наоборот. И тогда второй пункт просто отпадает. Никакого опережения не нужно. Достаточно чтобы входные данные были причиной для выхода. Ну и опять же все забывают где вы работаете. Главное на бирже цена. Найдите входы которые являются причиной для изменения цены и любая ТС, я Вас уверяю, абсалютно любая ТС будет работать как нужно. .

================================================================================= 

Это абсолютно правильная мысль. Только я перефразировал бы : Целевая должна порождаться предиктором(-ами). 

 
mytarmailS:
и тем не менее ответа на вопрос как такую целевую реализовать средствами R у вас нет, если я правильно понял

Ответ не так прост. Вот например один способ, с нейронкой, но нужно понимать как работает нейронка, какие в ней формулы итд. 

Допустим есть простенькая нейронка, с четырьмя входами, тремя перцептронами в скрытом слое, и одним выходом. Такая нейронка математическим языком будет работать так:

#include <math.h>
double sigmoid(double x)
{
     return 1.0 / (1.0 + exp(-x));
}

double NeuralNetwork(double* input, double* bias, double* weight){
    double perc_output[3]; //временный массив для хранения промежуточных результатов каждого перцептрона

    double perc_output[0] = sigmoid(bias[0] + input[0] * weight[0] + input[1] * weight[1] + input[2] * weight[2]  + input[3] * weight[3]);
    double perc_output[1] = sigmoid(bias[1] + input[0] * weight[4] + input[1] * weight[5] + input[2] * weight[6]  + input[3] * weight[7]);
    double perc_output[2] = sigmoid(bias[2] + input[0] * weight[8] + input[1] * weight[9] + input[2] * weight[10] + input[3] * weight[11]);
    double result         = sigmoid(bias[3] + perc_output[0] * weight[12] + perc_output[1] * weight[13] + perc_output[2] * weight[14]);
    return result;
}


Теперь можно взять таблицу с обучающими примерами, и найти результат для каждого примера

double nn_input[4]; //массив со входными значениями

double nn_bias[4]; //массив сдвигов, на текущем этапе тут будут рандомные значения
double nn_weight[15]; //массив весов, на текущем этапе тут будут рандомные значения

//для всех обучающих примеров находим по очереди результат нейронки. При этом массивы nn_bias и nn_weight не должны меняться
double results[trainSampleCount];
// trainSampleCount = число обучающих примеров
for(int i=0; i<trainSampleCount; i++){
  nn_input = trainSamples[i]; //синтаксис реально не такой, нужно из обучающей таблицы взять i-тую строку и запихнуть в этот массив nn_input
  results[i] = NeuralNetwork(nn_input, nn_bias, nn_weight);
}

Дальше например строим график прибыли по предсказаниям в массиве results, оцениваем его.

 

Код выше можно засунуть в оптимизатор. Оптимизатор должен найти подходящие значения весов и сдвигов в массивах nn_bias и nn_weight:
1) поменять значения nn_bias и nn_weight по своим алгоритмам
2) найти результаты для всех обучающих примеров
3) построить график торговли
4) оценить график торпговли, использовать эту оценку как фитнесс значение для последующих шагов оптимизации
5) повторять шаги 1-4 по своему алгоритму оптимизации пока график прибыли не станет приемлимым

 

В общем-то всё, но есть нюанс - те оптимизаторы что я пробовал не могут справиться с весами, они просто находят некий локальный минимум когда все результаты будут равны 0,5 для минимизации средней ошибки, и на этом застрянут. Тут нужно применить какую-то хитрость, я дальше не продвинулся.
Чем сложнее структура нейронки - тем больше будет весов, и тем сложнее алгоритму оптимизации их подбирать, на больших нейронках они просто тупят и почти не улучшают начальный результат.

 
Dr.Trader:

Тут нужно применить какую-то хитрость.

Хитрость вобщем-то даже известна, только я не видел софта для её реализации. Производные.

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

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


 

И небольшой минус - всё это в таком виде не поможет для торговли. Мы просто подгоним веса для идеального графика, получится 100%-ное переобучение и слив на новых данных. Для реального профита нужно будет очень много возиться со структурой нейронки, в итоге прибыльной получится что-то типа свёрточной сети наверное.

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