Обсуждение статьи "Нейросети — это просто (Часть 6): Эксперименты с коэффициентом обучения нейронной сети"
Я так мимо проходил))) Вас не смущает тот факт что ошибка по мере обучения растет??? должно быть как бы наоборот)))
Добрый день!
Подскажите, Вы обучаете НС только на цене закрытия? Или используете еще и объем торгов на заданном ТМ?
Добрый день!
Подскажите, Вы обучаете НС только на цене закрытия? Или используете еще и объем торгов на заданном ТМ?
Сейчас в описываемом примере в нейросеть передаются цены открытия, закрытия, хай, ло, объемы, время и показания 4-х индикаторов. Процесс передачи исходных данных в нейросеть описана по ссылке.
- www.mql5.com
Основная проблема не в подборе коэффициента обучения, в конечном счете в Тензор Фло есть функция которая постепенно его снижает во время обучения до указанной величины, подбирая оптимальный. Проблема в том что нейросеть не находит стабильных закономерностей, ей не за что зацепиться. Я применял модели начиная от полносвязных слоев и заканчивая новомодными ResNet и Attention. Эффект не превышает 60%, и это на узком участке, в целом все скатывается к 50 на 50. С нейросетями нужно подумать что в целом можно было бы по анализировать. Просто массивы цен и объемов, в любых комбинациях, результата не дают.
Попробуйте проанализировать корреляцию между исходными данными и целевым результатом.
"..при отсутствии фрактала в эталонном значении при обучении сети указал 0.5 вместо 1."
Почему именно 0.5, откуда эта цифра?
"..при отсутствии фрактала в эталонном значении при обучении сети указал 0.5 вместо 1."
Почему именно 0.5, откуда эта цифра?
В процессе обучения модель учит вероятностное распределение каждого из 3 событий. Т.к. вероятность отсутствия фрактала значительно выше вероятности его появления, то мы искусственно её занижаем. Указываем 0.5, так как при таком значении мы приходим примерно к равному уровню максимальных вероятностей событий. И их можно сравнивать.
Согласен, что такой подход весьма спорный и продиктован наблюдениями из обучающей выборки.
double rsi=RSI.Main(bar_t);
double cci=CCI.Main(bar_t);
double atr=ATR.Main(bar_t);if(open==EMPTY_VALUE ||
!TempData.Add(rsi) || !TempData.Add(cci) || !TempData.Add(atr) )
break;
Похоже что данные не нормализованы, так и должно быть или это тоже работает?
double rsi=RSI.Main(bar_t);
double cci=CCI.Main(bar_t);
double atr=ATR.Main(bar_t);if(open==EMPTY_VALUE ||
!TempData.Add(rsi) || !TempData.Add(cci) || !TempData.Add(atr) )
break;
Похоже что данные не нормализованы, так и должно быть или это тоже работает?
О нормализации данных речь пойдет немного позже.
- www.mql5.com
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Нейросети — это просто (Часть 6): Эксперименты с коэффициентом обучения нейронной сети:
Мы уже рассмотрели некоторые виды нейронных сетей и способы их реализации. Во всех случаях мы использовали метод градиентного спуска для обучения нейронных сетей, который предполагает выбор коэффициента обучения. В данной статье, я хочу на примерах показать важность правильного выбора и его влияние на обучение нейронной сети.
Третий эксперимент является небольшим отступлением от темы статьи, но его идея появилась в процессе проведения первых двух экспериментов. Поэтому решил поделиться и этой мыслью. Наблюдая за обучением нейронной сети обратил внимание на тот факт, что вероятность отсутствия фрактала колеблется в районе 60-70 % и редко опускается ниже 50%. В то время, как вероятность появления фрактала, будь то в бай или селл, колеблется около 20-30%. И это вполне закономерно, т.к. на графике гораздо меньше фракталов, чем свечей внутри тенденций. Таким образом, наша нейронная сеть переобучается и мы получаем результаты, приведенные выше. Практически 100% фракталов пропускаем, и только редкие удается "поймать".
Для решения этой проблемы, я решил немного компенсировать не равномерность выборки и при отсутствии фрактала в эталонном значении при обучении сети указал 0.5 вместо 1.
Такой шаг дал свои результаты. Запустив советник с темпом обучения 0.01 и матрицей весов после предыдущих экспериментов после 5 эпох обучения видим стабилизацию ошибки около 0.34. При этом доля пропущенных фракталов снизилась до 51% и "попадание" поднялось 9.88%. На графике можно заметить, что советник дает сигналы группами, тем самым определяя некоторые зоны. Очевидно, что идея требует дополнительной проработки и тестирования, но полученные результаты говорят о состоятельности подобного подхода.
Автор: Dmitriy Gizlyk