Обсуждение статьи "Нейросети — это просто (Часть 34): Полностью параметризированная квантильная функция"
Thank you.
trying this, and I was able to successfully compile everything with no error.
testing on eurusd and getting the error below.
any idea?
2022.11.30 11:51:46.689 Core 08 genetic pass (0, 286) tested with error "OnInit returned non-zero code 1" at 0:00:00.000
thanks
Hi, for run EA in tester you need to copy nnw file to "MetaQuotes\Terminal\Common\Files" directory.
Спасибо!
Ваша "производительность" поражает. Не останавливайтесь!
На таких как Вы всё держится!
P.S.
Я читал новости НейроСетей...
"Нейросети тоже нуждаются в состояниях, напоминающих сны.
К такому выводу пришли исследователи из Национальной лаборатории Лос-Аламоса..."
Доброго времени.
По Вашему коду сделал подобие "Сна" НейроСети.
Процент "спрогнозированных" увеличился на 3%. Для моего "СуперКомпа" - это полет в космос!
//+------------------------------------------------------------------+ //| dream | //+------------------------------------------------------------------+ int Dream(int dream = 0) { Comment("!!! Dream !!! "); int sleep = (dream==0 ? 7 : dream); for(int j=0;j<sleep;j++) { TempData.Clear(); for(int b=0; b<(int)HistoryBars; b++) { if( !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0) || !TempData.Add(0) || !TempData.Add(0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) || !TempData.Add(0.0) ) break; } if(TempData.Total()<(int)HistoryBars*12) return(0); Net.feedForward(TempData); Net.getResults(TempData); //-- Можно посмотреть на "Сны" НейроСети switch(TempData.Maximum(0,3)) { case 0: dPrevSignal=TempData[0]; break; case 1: dPrevSignal=-TempData[1]; break; default: dPrevSignal=0; break; } //-- ... но это не принципиально. //--??? TempData.Clear(); TempData.Add(0.0); TempData.Add(0.0); TempData.Add(0.0); Net.backProp(TempData); //--??? } return(0); }
Применял эту функцию в конце каждой эпохи обучения:
if(add_loop) count++; if(!stop) { dError=Net.getRecentAverageError(); if(add_loop) { Net.Save(FileName+".nnw",dError,dUndefine,dForecast,dtStudied,true); printf("Era %d -> error %.2f %% forecast %.2f",count,dError,dForecast); } ChartScreenShot(0,(string)FileName+(string)IntegerToString(count)+".png",750,400); } Dream(SleepPeriod); //-- Сон printf("Период сновидений = %.2f !",SleepPeriod); }
Вы могли бы протестировать и потом прокомментировать как Вы это делаете? Вдруг "Сны" помогут ИИ?
P.S.
SleepPerriod=1;
Я добавлял к
SleepPeriod
SleepPeriod + (Delta++)
где Дельта=0. Но мой компьютер Очень, очень слабый... :-(
![Обсуждение статьи "Нейросети — это просто (Часть 34): Полностью параметризированная квантильная функция" Обсуждение статьи "Нейросети — это просто (Часть 34): Полностью параметризированная квантильная функция"](https://c.mql5.com/36/60/obsuzhdenie-stati-neyroseti-eto.jpg)
- 2022.11.29
- www.mql5.com
![MQL5 - Язык торговых стратегий для клиентского терминала MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Нейросети — это просто (Часть 34): Полностью параметризированная квантильная функция:
Продолжаем изучение алгоритмов распределенного Q-обучения. В предыдущих статьях мы рассмотрели алгоритмы распределенного и квантильного Q-обучения. В первом мы учили вероятности заданных диапазонов значений. Во втором учили диапазоны с заданной вероятностью. И в первом, и во втором алгоритме мы использовали априорные знания одного распределения и учили другое. В данной статье мы рассмотрим алгоритм, позволяющей модели учить оба распределения.
Такой подход позволяет обучить модель менее чувствительную к гиперпараметру количества квантилей. А случайное их распределение позволяет расширить круг аппроксимируемых функций на неравномерно распределенные.
Перед подачей на вход модели создаётся эмбединг случайно сгенерированных квантилей по представленной ниже формуле.
В процессе объединения полученного эмбединга с тензором исходных данных возможны варианты. Это может быть как простая конкатенация 2 тензоров, так и адамарное (поэлементное) умножение 2 матриц.
Ниже приведено сравнение рассмотренных архитектур, представленное авторами статьи.
Эффективность модели подтверждается проведенными тестами на 57 играх Atari. Ниже представлена сравнительная таблица из оригинальной статьи [8]
Гипотетически, при неограниченности размера модели такой подход позволяет выучить любое распределение прогнозируемого вознаграждения.
Автор: Dmitriy Gizlyk