Рыночный этикет или правила хорошего тона на минном поле - страница 82

 
Neutron >>:

Тут у меня самого полного понимания нет.

Согласно утверждению (Ежов Александр Александрович, Шумский Сергей Александрович "Нейрокомпьютинг"), существует оптимальная длина, на которой минимизируется ошибка обобщения Popt=w^2/d, где d - размерность входа НС, w - число всех настраиваемых параметров НС. Так вот, с этой точки зрения, НС является переобученной, если P<Popt НС "запоминает" обучающую выборку. Вариант P>Popt тоже не хорош, т.к. на большей длине, больше вероятность смены рыночной тенденции, что равносильно уменьшению корреляций между отсчётами.

С другой стороны, НС можно "перетаскать" на завышеном числе обучающих эпох и, как следствие, ошибка обобщения начнёт вновь расти, или не дотаскать... Вобщем, тут нужно проводить численные эксперименты с набором статистики, что само по себе очень ресрсоёмко! Но, это необходимо проделать. Существенно облегчит положение, доказательство вышеприведённого учловия для оптимальной длины обучающего вектора. gpwr, есть желание повозиться?

Если посмотреть на ваши графики


то возникает несколько вопросов. Как я понимаю, красная линия кружками - средняя ошибка обучения по нескольким статистическим экспериментам с разными случайными начальными значениями весов. Синия линия кружками - средняя ошибка предсказания на необученных данных. Правильно? Тонкие линии показывают диапазон разброса. Теперь вопросы

1. Соответствует ли нижняя тонкая синяя линия нижней тонкой красной? Иначе говоря, улучшается ли точность out-of-sample предсказания для статистических экспериментов с наименьшей ошибкой обучения?

2. Так как разброс ошибки обучения не сужается в ноль, значит обучение не достигает глобального минимума.

Меня сейчас очень терзает такой вопрос: стоит ли искать алгоритм обучения достигающий глобальный минимум в надежде что предсказания на необученных выборках будут более точными? Я гоняю свою сетку и наблюдаю как протеворечивы её предсказания в зависимости где я остановлю её обучение. Даже если задавать одно и то же кол-во эпох 1000, то предсказания разные на разных прогонах на одних и тех же обучающих выборках. Половина предсказаний - цена пойдёт вверх, другая половина - вниз. Меня это не устраивает. Если очень долго обучать, то сеть ближе подходит к глобальному минимуму и её предсказания одинаковы на разных прогонах.

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

 
gpwr писал(а) >>

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

+5 Согласен полностью.

Вы, всё же пролистайте Ежёва с Шумским. Может идеи появятся относительно доказательсьва.

Синия линия кружками - средняя ошибка предсказания на необученных данных. Правильно?

Правильно.

1. Соответствует ли нижняя тонкая синяя линия нижней тонкой красной? Иначе говоря, улучшается ли точность out-of-sample предсказания для статистических экспериментов с наименьшей ошибкой обучения?

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

P.S. gpwr, я встречал в сети ссылку на труд двух америкосов, которые лет 5 назад смогли доказать существование и реализовать модифицированный алгоритм ОРО для двуслойной нелинейной НС с ОДНИМ нейроном на выходе. Так вот, при специальном виде функции активации (а от конкретного её вида, вычислительная мощность сети не зависит), скорость обучения по новому алгоритму, на более чем два порядка! превышает классический ОРО. Ничего подобного не встречали?

 
Neutron >>:

+5 Согласен полностью.

Вы всё же пролистайте Ежёва с Шумским. Может идеи появятся относительно доказательсьва.

Правильно.

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

P.S. gpwr, я встречал в сети ссылку на труд двух америкосов, которые лет 5 назад смогли доказать существование и реализовать модифицированный алгоритм ОРО для двуслойной нелинейной НС с ОДНИМ нейроном на выходе. Так вот, при специальном виде функции активации (а от конкретного её вида, вычислительная мощность сети не зависит), скорость обучения по новому алгоритму, на более чем два порядка! превышает классический ОРО. Ничего подобного не встречали?

Встречал несколько вариантов ОРО:

QuickProp - 1988, добавлена производная второго порядка для убыстрения сходимости

RProp - Resilient back-Propagation - 1993, Riedmiller, немец, суть алгоритма в замене градиента его знаком

iRProp - Improved RProp - 2000, Igel, немец, тот же RProp, но сеть делает шаг назад если ошибка обучения на прошлой эпохе возросла

SARProp - Simulated Annealing back-Propagation - 1998, Treadgold, австралиец, для глобальной сходимости добавлен случайный размер шага при определённх условиях когда ошибка на предыдущей эпохе увеличилась

JRProp - Jacobi RProp, 2005, Anastasiadis, грек из англии, тот же iRProp, но немного другой метод возвращения при увеличенной ошибке

GRProp, GJRProp - Global RProp/JRProp - 2005, Anastasiadis, на каждой эпохе выбирается наименьший шаг веса и заменяется странной формулой

Я перепробовал их все. RProp, iRProp, JRProp работают почти одинаково. Глобальные методы SARProp и GRProp не работают. Вы легко можете найте статьи по этим алгоритмам.

Посмотрите здесь на русском

http://masters.donntu.edu.ua/2005/kita/tkachenko/library/article01/index.htm

www.iis.nsk.su/preprints/pdf/063.pdf

 

Спасибо. Посотрю обязательно.

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

 

Поставил себе 2001i Pro

Можешь в двух словах прокомментировать графики рапределений, которые я вчера вывесил?

 

Ну, конечно.

Они правильные. Первый и третий рис. интереса не представляют в виду малой статистики на последнем и малого Н на первом. А, вот, второй рис. представителен:

Для Каги-распределения (рис. слева), можно отметить отсутствие длин плеч с размером меньшим, чем шаг разбиения Н (paralocus, ты конечно большой оригинал в плане необычных представлений днанных, например измерять шаг разбиения не в пунктах, а в спредах...) и экспоненциальное уменьшение частоты появления длин плеч с ростом их длины. Для ряда трансакций, можно отметить почти полочкообразное распределение частоты появления длин в предлах +/-Н и так же экспоненциальное спадание при переходе на длины больше Н. Что и видно из рис. справа. Думаю, что такое представление входных данных для НС (нормированных ещё на Н), является почти идеальным, т.к. не требует "хитрых" процедур нормализации и центрирования (МО тождественно равно нулю). Правда, остаётся открытым вопрос об оптимальности Каги-представления. Тут ведь задачу нужно решать комплексно, и вторым важным блоком в связке, является ММ. Для ТС без реинвестирования, Каги-разбивка, действительно является оптимальной.

 
Спасибо. ММ для меня пока терра инкогнита. Несколько раз пробовал реинвестировать накопленные одним лотом деньги и получал значительный убыток. В начале этой ветки ты писал об ММ в связи с плечом. Но разве плечо регулируется трейдером? По-моему плечо = 100 и все на этом. Можно лишь выбирать пары для уменьшения риска. Я предпочитаю AUDUSD - тоже в твоих постах подсмотрел. Ну, вобщем об этом говорить время пока не пришло(для меня). Сейчас займусь двухслойкой. Сегодня буду кодить, завтра покажу, что получилось.
 
Торговое плечо пропорционально отношению стоимости лота к размеру капитала. Поэтому, увеличиавя или уменьшая размер торгуемого лота, ты по сути изменяешь размер плеча. В анализе пользоваться плечём проще, чем размером лота, т.к. это величина безразмерная. Именно по этому я и использовал его в свих формулах.
 

По сути, МТ-ый тестер представляет собой чёрный ящик с несколькими входами (МАшки, стохастик и др. индикаторы ТА), со счётным числом настраиваемых параметров (периоды МАшек, оптимальные амплитуды и т.п.) и "хитрым" алгоритмом смешивания всего этого внутри себя. На выходе мы имеем торговый приказ Sell/Buy или Stop. Существует процедура оптимизации, которая позволяет на исторических данных выбрать оптимальные параметры из условия максимизации прибыли ТС. Ничего не напоминает? Вот-вот, если учесть, что индикаторы ТА вместе с хитрым (нелинейным) алгоритмом их обработки, суть - нелинейная функция активация многослойного персептрона, то все мы тут, уже много лет занимаемся одним и тем же - строим и воспитываем свои НС! Вот только, факт сей не очевиден и от того столько проблем в работе с тестером стратегий (подгонка, неустойчивость найденного оптимума и т.п.). На форуме многие уважаемые люди частенько скептически высказываются в адрес НС, а по сути занимаются всё свободное время тем же самым и другого, похоже, ничего нет! Подумайте.

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

Короче, все мы волей не волей повязаны одним и тем же, и не важно, шлифуем мы тестер стратегий или пишем свою собственную сеть. Важно, что бы мы понимали, что именно мы делаем и зачем.

P.S. Погонял немного одинокого персептрончика на синтетике.

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

 

Когда я занимался "щлифовкой тестера" подобные ощущения приходили, но до осмысления дело не дошло... -:)

Зато теперь поперли, казалось бы простые, но более рабочие идеи. Кое что вчера сформулировал:

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


Т.е. получается по сути то, о чем ты писал - тейк равен стопу! Здесь возникает один тонкий момент:

Если распределение полученного ряда транзакций таково, что свыше 50% следующих друг за другом плеч имеют разный цвет, то зачем вообще НС?(только не бейте ногами, я просто спросил... -:))


P.S. Поправил очепятку

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