Блог им. bosco

Как вам выступлене Шумихина Михаила?

    • 30 апреля 2019, 08:37
    • |
    • П М
  • Еще
Ну вот, обычное дело для смартлаба — прочитал интересный пост, на важную для меня тему. А комментировать нельзя.

Всё никак концептуально не могу отказаться от нейро. Но вижу что мои результаты в нём слабые, когда она работает как фильтр — часто пропускаются целые прекрасные месяцы и результат даже хуже чем был бы с ней.
В лучшем случае хорошо уменьшается просадка, но потери при этом хороших сделок погружают робота в долгие боковики. Или другая болячка, работает скажем нейра месяца, даже отлично работает. А потом бац и всё. Как будто совсем сломалась и некоторое время «не работает», полгода, год. Потом опять снова всё хорошо. Вобщем, много проблем. Настолько что переодически пытаюсь работать совсем без нейро. Как и сейчас возникло такое желание. Буквально вчера перед сном такие мысли обдумывал. Потому что нужна надёжность.

А тут "Конфа. Мое выступление на тему Машинного обучения. Итоги." — сразу захотелось поучаствовать в обсуждении. Но по какой-то неизвестной причине — в ЧС у автора. 
Так вот у меня вопрос, а кто был на конфе, как вам понравилось выступление, было что-то там из рациональных зёрен? Потому что в самом посте по сути только реклама диплёрнинга и всё. А конкретики нет. Загадочно помахать руками я и сам могу. Только не люблю.
Хочется хотя бы минимально, «вот друзья, смотрите, так — совсем не работает, и так совсем не работает, а в эту сторону уже немного лучше, а если ещё добавить этого — ещё лучше, ну вы поняли в какую сторону копать?»

Опять про меня. Может быть дело в моём подходе. Я пытаюсь обучать робота просто на сделках. Т.е. есть массив сделок, которых я могу нагенерить достаточно много, до 100 000, к примеру. И стоит задача выбрать с рынка те факторы, которые помогают отделить потенциально прибыльные сделки от неприбыльных. Мозгами у меня это сделать не выходит. Поэтому накидываю кучу индикаторов в нейру и пытаюсь её натренировать, а в случае удачи — расковырять и понять как она работает. Пока на всех этапах плохо. Хотя есть подходы, и научить могу нейру и удачи бывают и расковыривал кое что, но в целом задача не решена. Кажется что если решить, это будет новый фонд ренесанс какой-нибудь, хотя мозги у меня не настолько хорошие. Но вдруг у обезьянки получится война и мир.
★12
64 комментария
Машинное обучение эффективно только тогда, когда мы чётко понимаем какую статистическую взаимосвязь мы ищем с его помощью. В современном виде это инструмент, облегчающий изготовление детали, но не конструктор детали.

И вообще то, что сейчас называют «машинным обучением» — это просто новые типы самообучающихся алгоритмов в терминологии 70-х годов прошлого века. 
avatar
А. Г., ну понятие «чётко понимаем, что ищем» — достаточно не чёткое. Т.е. если мы допустим чётко понимаем что ищем идеальную стратегию игры в шахматы — это вобщем-то чёткое понимание достаточно нечёткого результата. Я про AlphaZero от Гугл. Утверждается что она научилась играть в шахматы зная правила и играя много-много раз сама с собой.

Так и здесь, чёткое понимание что ищем факторы «влияющие» или «связанные» с прибыльностью входа в сделку, не говорит о том, что знаем где это и что это.

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

avatar
ПBМ,  я имел ввиду чёткое понимание той статистической взаимосвязи, существование  которой мы хотим доказать. А статистическая взаимосвязь всегда «нечёткая»,  в том смысле, что даже при одинаковых входных данных могут получиться разные выходные.

А искать, лишь бы искать… Ну для любых n точек в координатах (x, y) можно найти многочлен степени n+1 от х, который точно пройдёт через все эти точки.
avatar
А. Г., а вы может пояснить свой тезис про взаимосвязь на примере картинки и классификации того, что на ней изображено. Стандартный такой пример из DL — картинка тензор 500х500х3 нужно отобразить в один из 1000 классов изображений. Есть ли тут понятная статистическая взаимосвязь между набором из 500х500х3 чисел и тем что на изображении скворец? 
avatar
Михаил, нет тут никакой статистической взаимосвязи, потому что нет случайности. Чтобы понять как корректно решить эту задачу, надо задать вероятностное пространство  на  картинке тензор 500х500х3. Причем сложность в том, что при разных вероятностных пространствах правильное решение будет разным. На рынке же нас интересует только одна взаимосвязь: между известным прошлым и будущим приращением цены. И вариативность поиска только в выборе этого прошлого.
avatar
А. Г., вероятностное пространство обычно следующее — случайный тензор из набора 1-10 млн. тензоров, к которым применена аугументация на основе случайных поворотов, кропов, преобразований гаммы и наложений шума. И нас интересует один вопрос — что изображено на картинке из примерно 1000 предметов. 
avatar
Михаил, Вас это интересует? А меня интересует нечто иное — рынок. Ну при чем тут картинки, это явно техника из другого мира.
avatar
SergeyJu, при том, что аргумент АГ на мой взгляд неверный. А второй важный момент, если повариться в области ML, оказывается, что методы из одних областей часто очень хорошо переносятся на другие, казалось бы не связанные области.
avatar
Михаил, логично. В чем-то Вы оба правы. 
avatar
А. Г., представьте что у вас ещё нет того, что вы хотите доказать. у вас куча гипотез и все нелинейные. вам надо из них составить мета нелинейную гипотезу, которая будет *автоматически* доказывать сама себя на каждой предложенной выборке.

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

многочленом тут не получится, кмк, т.к. тут целое семейство их.
avatar
А. Г., «Ну для любых n точек в координатах (x, y) можно найти многочлен степени n+1 от х, который точно пройдёт через все эти точки.»

n-1 сильнее будет.
avatar
ПBМ, Тут нужно отделять reinforcement learning и Deep learning/ML. Это совершенно разные области. И все «AI» которые выигрывают в шахматы и рвут чемпионов в доту имееют мало чего общего с ML. 
По поводу применения нейронных сетей или машинного обучения… тут могу посоветовать прочитать что нить авторства  Marcos Lopez de Prado. Есть у него интересные идеи.
avatar
Denis, ок. если честно глубоко в AlphaZero не копал. судя по wiki они с помощью сети делают лишь оценку важности вариантов.
т.е. используют нейру — как фильтр. 
это я считаю корректным использованием — классификатор преобразователь многие к N, где N заранее задано.
а когда с помощью нейросети пытаются предугадать движение цены, это я вижу как многие ко многим, преобразование из непонятного в непонятное. по честному такой подход должен выдавать не вверх цена пойдёт или вниз, а на сколько вверх и насколько вниз, но это же абсурд. 
насколько я понимаю.
avatar
ПBМ, в шахматах в любой позиции есть лучший ход. Может быть несколько одинаково хороших. Но не может быть такого, что позиция та же, а ход оказывается не лучший. На рынке же если даже предположить что ситуация идентична какой-то в прошлом, она может развиться совершенно иначе. Нейросетки и на стационарных-то данных непросто учить, а на зашумлённых вероятностных вообще непонятно сколько нужно данных а их столько нет
avatar
oerlikon, это уже похоже на софистику… она не приближает нас к решению
avatar
ПBМ, я и не считаю нейросетки подходящим способом решения — для рынков. Учить нейросети нужно очень много данных. Те же альфы для го и шахмат как учили — грубо — сажают две нейросети играть друг с другом, и они играют и учатся, пока есть электричество. Данных неограниченное количество. На рынках такого нет
avatar
ПBМ, https://www.youtube.com/watch?v=ba4_M7UINfo
avatar
oerlikon, из его клипов я про эту программу и узнал
avatar
Про дипленинг он не рассказывал. Основной инструмент, который использовался докладчиком — градиентный бустинг. 
avatar
 Мне кажется, что вы не очень правильно пытаетесь применить нейросети — нет смысла пихать в нейросеть сделанные руками индикаторы — для такого подхода лучше работает бустинг. Нейросети хорошо работают над сырыми данными (просто картинкой, просто звуком или просто котировками), а не над рукотворными признаками, но данных должно быть много. 
avatar
Михаил, почитал его комменты. он пишет что добился точности в 65%
эээ… ну…
avatar
ПBМ, на мой взгляд его выступление не очень понятно на кого рассчитано. Для новичков оно не сильно понятное, для продвинутых людей не содержит полезных деталей, для практиков нет ответа сколько на этом можно поднять денег. Вы человек из третей категории:)
avatar
Михаил, пока не уверился что подход совсем не верный. грубо говоря, наше тело прекрасно пользуется индикаторами в виде носа, рта, глаз и ушей.
да и цены надо как-то нормировать всё равно к потоку, способ нормировки — это тоже «индикатор»
avatar
ПBМ, тут дело практики — не сказать, что это как-то совсем не верно, но в большинстве случаев (близко к 100%) градиентный бустинг даст лучший результат на сгенеренных в ручную фичах, чем нейронные сети, будет быстрее учиться, быстрее применяться после обучения (особенно на небрежных деревьях), может работать на небольших семплах и не нужно будет выдумывать никакую архитектуру — он просто будет работать из коробки (или не будет, но тогда и сети не помогут). Собственно докладчик примерно это и сказал — бустиг с дефолтными настройками на сгенетенных фичах работал гораздо лучше нейронных сетей. И это результат не только докладчика, а известный факт из соревнований по машинному обучению — достаточно немного потусоваться на Kaggle или его аналогах — где есть ручные фичи, там будет бусинг в первую очередь. 
Ваши уши никакими индикаторами не пользуются — они воспринимают давление (а не слова, буквы и звуки), глаза фотоны (а не образы) и т. д. индикаторы создаются мозгом из сырого сигналы, который вы на уровне сознания не осознаете. Сознание вам пихает образы, которые являются очень не тривиальным преобразованием сырых сигналов. 
В сети пихают немного преобразованный сигнал, но обычно это самые базовые преобразования сырого сигнала — масштабирование к диапазону (-1, 1) — обычно ускоряет сходимость, преобразование Фурье (последние обычно из-за слабости железа и от этого постепенно отказываются и пихаются сырой звук), для слов эмбединг в низкоразмерное пространство, который по сути является очень простой сетью, работающей с сырым сигналом (номером слова из словаря).
avatar
Михаил, автор, имхо, ничего не показал. То есть, он сказал про 3 библиотеки, не очень адекватную целевую функцию и некий результат с этой функцией. Результат непонятен, потому что никак не соотнесен с тем что нас интересует — возможность зарабатывать деньги на рынке. 
Наша задача (а) существенно дискретна (б) очень высокий уровень шумов относительно сигнала, при том, что сам сигнал не определен. 
Идея создавать сильный классификатор из несколькх слабых, имхо, правильная. Сам тут  рою. Но подход автора — просто наскок.

avatar
SergeyJu, по поводу докладчика согласен. Выше написал — «На мой взгляд его выступление не очень понятно на кого рассчитано. Для новичков оно не сильно понятное, для продвинутых людей не содержит полезных деталей, для практиков нет ответа сколько на этом можно поднять денег.»
Задача вам только кажется уникальной. Я сейчас принимаю участие в соревнованиях по прогнозу землетрясений: там все сплошной шум — 600 млн. значений акустического шума.
avatar
Михаил, я много лет работал в области обработки акустических сигналов. В том числе сигналов от подводных взрывов. Они похожи на сейсмику. Сейсмику видел, но не обрабатывал. Не знаю, что за соревнование и как предобработан акустический сигнал для соревнований. Вероятно, Вы будете искать предвестники?
А задача не  уникальна, но сильно отличается от обычных естественно-научных. Давно и не нами было сказано. Природа хитра, но не злонамерена. 
avatar
SergeyJu, никак не обработан — дискретные значения с 16 битного датчика с частотой записи 4 мегагерц и небольшим паузами после переполнения буфера устройства через каждые 4096 значения. Большинство решает примерно, как делал докладчик — генерятся фичи в большом количестве (один чел сделал аж 800) и пихаются в градиентный бустинг. У меня порядка 10 и градинтный бустинг — был на втором месте потом сместили на 12. Пытался решить сетями на сыром сигнале — сверточными, сетями внимания и LSTM, но результат хуже бустинга.
avatar
Михаил, один, что ли датчик, не всепланетный охват?
Датчик хотя бы градиентный, или монополь?
avatar
SergeyJu, это лабораторная установка в Лос-Аламосе — один датчик.
avatar
Михаил, один одноканальный датчик. То есть задача локальная и направления прихода сиглага у Вас нет. А что считается землетрясением, есть критерий? 
avatar
SergeyJu, направления нет. Данные состоят из пар чисел — уровень сигнала и значение  времени до землятресения. Всего 600 млн. пар значений, которые разбиты на 17 непрерывных серий соответствующих 17 землетрясениям. 

Далее дано 2500 рядов по 150000 значений — для каждого ряда нужно с максимальной точностью предсказать, сколько осталось времени до землятресения.  
avatar
Михаил, офигеть, всего 17 событий. 
avatar
SergeyJu, я честно не знаю практическую ценность этого. Задачу поставили ученые из Лос-Аламоса. Судя по описанию, они сами пользовались обычными для своей области методами предсказания (не знаю что это значит содержательно), а потом применили ML и добились лучшего результата. Потом решили запилить соревнование, чтобы посмотреть, не удасться ли кому-то сделать еще лучше. Там 20Гб данных, хотя с точки зрения ML событий мало и данных мало — все участники на это жалуются. Первые пять мест должны раскрыть решение. 
avatar
Михаил, может это просто кастинг такой? В финансах на 17 случаях тоже «ученые»  делают далеко идущие неверные обобщения. Но в алготорговле такое обычно не прокатывает. 
avatar
SergeyJu, любой конкурс своеобразный кастинг. Хорошие результаты в подобных конкурсах ценятся у работодателей. Но тут вполне нормальные предсказания по точности получаются. Там скорее народ бурчит из-за того, что некоторые продвинутые методы не работают и финальный результат немного непредсказуем, что портит соревновательную составляющую. Параллельно идет конкурс про предсказание цен бумаг www.kaggle.com/c/two-sigma-financial-news/overview  — оценивается по сути шарп для 10-ти дневного прогноза на основе котировок и новостного фона. В качестве источника идей можно посмотреть публичные кернелы, а как закончится кто-нибудь из лидеров может подвесить свое решение.
avatar
Михаил, посмотрите пожалуйста вопрос ниже
https://smart-lab.ru/blog/536536.php#comment9689731
может у вас есть ответ?
avatar
Михаил, про бустинг думаю можно почитать. интересно.
с обучением как-то проблем нет особых. реально сеть запоминает 100 000 сделок с выосокой точностью, порядка 98%, на небольшом ООС в 3-5% даёт результат 80%
но потом на реальном рынке всё равно выдыхается.
будем искать.
avatar
Туземец, ну да, судя по комментам он уже со всеми почти попрощался 
avatar
Опять про меня. Может быть дело в моём подходе. Я пытаюсь обучать робота просто на сделках.

Да, дело в подходе к выбору целевой переменной, да и фич наверное тоже. Попробуйте как АГ пишет — следующее приращение цены для начала. До сделок вам ещё далеко
avatar
oerlikon, следующее приращение цены может быть просто случайным. в рамках stop-loss оно не слишком интересно.
avatar
ПBМ, оно не просто может быть, оно и будет случайным. для вас. ну если конечно вы сами цену рыночным ордером не дёрнете. вы чот не очень понимаете концепцию вообще )
avatar
С точки зрения торговли интересно только одно применение машинного обучения:

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

Все остальное о машинном обучении с точки зрения торговли — пустая болтовня.

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

Про себя могу сказать, что я проделал пп.1-4 для персептрона, на вход которого подавались относительные приращения цен Лукойла, Газпрома, РАО ЕЭС, SPY за предыдущие 5 дней, а на выходе бралось относительное приращение РАО ЕЭС на следующий день. П. 4  показал, то «тут рыбы нет».
avatar
А. Г., так персептрон это линейная модель, откуда там бы вообще рыбе взяться? Линейную модель сравнили с линейной и удивились )
avatar
oerlikon, персептрон, как функция от входных переменных — это нелинейная регрессия. Да собственно лучший статпрогноз — это неизвестная нам в общем случае нелинейная регрессия. Поэтому и сравнивался частный случай нелинейной регрессии с линейной.
avatar
А. Г., короче, если у вас был только один скрытый слой, вы попробовали случай чуть-чуть сложнее вырожденного ) но на дворе же не 70-е )
avatar
oerlikon, ну это смотря сколько нейронов в слое, да и вообще я перебирал до 3-х слоев.
avatar
видосик выйдет, куплю, отвечу =)
avatar
Мне кажется ошибочным подход в обучении на сделках, тем более нагенеренных. ИМХО обучать надо на поведении цены — взаимосвязях причины и следствия. Предситуация-началоИмпульса-вход-сколькоПрошли. На базе этого получать точки входа/выхода. Плюс допфильтры, конечно, с ними проще.
Прошу прощения за колхозное описание. Может оно и вовсе не в тему…
Как торгую, так и пишу ))
avatar
Из года в год одна и та же песня.
Если коротко: Чем раньше переключите свое внимание с НС на поиск своей собственной стратегии торговли, тем раньше и больше пользы получите (применительно к извлечению прибыли на бирже).
avatar
Prophetic, одно другому не мешает. спасибо за мнение. учту.
avatar
Торговать на рынке вам не шахматы играть, и не образы распознавать. Они отличаются фундаментально, поэтому обычный ML тут не будет работать, как сказал Denis тут только у RL есть шанси. Алгоритм RL биологически похож на человека но сегодняшный RL пока что очень-очень слаб. В любом случае вы получите робота который действует как человек, а вы знаете как действует человек на рынке. Так что все это пустая трата времени и денег. Чтобы знать для каких задач какие алгоритмы применить надо понять фундаментал этих самых задач и алгоритмов.
avatar
Направление использовать ML стратегически правильное.
Обратите внимание на бустинг, как правильно Вам тут подсказывают осведомленные товарищи.
avatar
_sg_, вчера смотрел видео про decision tree, очень понравился замысел. Буду копать, спасибо всем за идею
avatar
_sg_, есть какая-нибудь простая статья про бустинг, с точки зрения программиста?
почему-то везде сплошь формулы, нет чтобы «пальцем показать».
например взял исходники из лекции
https://www.youtube.com/watch?v=LDRbO9a6XPU
там простое дерево, без бустинга, переписал на Java, с первого раза точность ~50%, на 300 ООС семплах, тренировочный набор 10000.
пару вечером поковырялся между вином и шашлыками, убрал «лишние» фичи, получилось 63%.
опять же, без всякого бустинга.
деревья очень классная вещь в том смысле что сразу показывают какие фичи важнее, а какие нет. я до этого пытался понять это по другому реально несколько лет.

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

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

полное дерево построить занимает минут 5, по сравнению с днями тренировки нейросети.
avatar
ПBМ, 
1. размерность пространства признаков можно уменьшить методом PCA — метод главных компонент
https://gsmetrics.blogspot.com/2019/04/backpropagation-c-implementation.html

2. Вот некоторые ссылки про boosting, но полного примера там нет
https://gsmetrics.blogspot.com/search/label/Boosting

3. Я сам в другом направлении копаю.

4. Попробуйте на habre поискать реализации.
https://habr.com/ru/hub/machine_learning/
avatar

  ПBМ, я далеко от компа, чтобы ссылку найти, но алгоритм примерно следующий и состоит из множества итераций:
— берётся приближении предыдущей итерации (в первый раз обычно простая средняя);
— находится ошибка этого приближения на всех примерах;
— строится дерево (обычно не глубокое 6-10 уровней), которое приближает эту ошибку;
— дерево множится на коэффициент менее 1 (скорость обучения) и прибавляется к приближению предыдущей итерации — это новое приближение.

avatar
То есть по сути это последовательность неглубоких деревьев, каждое следующее из которых пытается исправить ошибку предыдущих. Стандартные реализации используют много ухищрений для ускорения и повышения качества — предразбиения признаков на 256 бинов, оптимизации второго порядка при построение отдельных деревьев, регуляризация листьев, минэнкодинг, параллельный запуск и GPU, поэтому большого смысла делать это самому нет. Есть три библиотеки, каждая со своими нюансами — XGBoost первая и достаточно надежная, LightGBM использует построение деревьев не ярусами, а от отдельных листьев, работает очень быстро, но иногда требует настройки (на ней любят обкатывать идеи из-за скорости), Catboost — самая молодая, использует небрежные деревья, что позволяет быстро применять натренированную модель, дольше учится, но обычно даёт лучший результат без настроек. Тенденция последнего времени, что в соревновательных целях ее используют все больше.  
avatar
Лекцию такого типа не знаю — сам изучал по лекциям Школы Анализа Данных Яндекс. Программисту лучше наверное просто код посмотреть — ванильная реализация, которую на практике никто не использует есть в sklearn http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html
Там есть ссылка на исходники на GitHub
avatar
medium.com/mlreview/gradient-boosting-from-scratch-1e317ae4587d — совсем простой пример
avatar
Михаил, спасибо, стало понятнее.
avatar
Если кому интересна тема, с точки зрения алгоритмов нашел серию достаточно простых роликов,
https://www.youtube.com/watch?v=LsK-xG1cLYA
математика тоже есть в отдельных сериях. по ссылке — непосредственно буст, для понимания надо посмотреть пару-тройку других роликов по очереди, он там даёт названия.

Примера кода правда нет, но на основе деревьев из
https://www.youtube.com/watch?v=LDRbO9a6XPU
уже можно что-то начать генерить.

хотя удастся ли добиться большой точности пока не ясно. 
пока я сделал дерево которое угадывает не больше 63%, что явно мало.
для практической применимости, кмк надо никак не меньше 85%
или в топку.
avatar

теги блога П М

....все тэги



UPDONW
Новый дизайн