Hey Dimitriy,
I discovered a new NN sequence: enjoy <3
Картинку также можно просто перетащить в текст или вставить её с помощью Ctrl+V
I discovered a new NN sequence: enjoy <3
bool CreateDescriptions(CArrayObj *actor, CArrayObj *critic)
{
//---
CLayerDescription *descr;
//---
if(!actor)
{
actor = new CArrayObj();
if(!actor)
return false;
}
if(!critic)
{
critic = new CArrayObj();
if(!critic)
return false;
}
//--- Actor
actor.Clear();
//--- Input layer
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
int prev_count = descr.count = (HistoryBars * BarDescr);
descr.window = 0;
descr.activation = None;
descr.optimization = ADAM;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 1
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBatchNormOCL;
descr.count = prev_count;
descr.batch = 1000;
descr.activation = None;
descr.optimization = ADAM;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 2
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronConvOCL;
prev_count = descr.count = BarDescr;
descr.window = HistoryBars;
descr.step = HistoryBars;
descr.window_out = 8;
descr.activation = LReLU;
descr.optimization = ADAM;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 3
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronConvOCL;
prev_count = descr.count = prev_count;
descr.window = 8;
descr.step = 8;
descr.window_out = 4;
descr.activation = LReLU;
descr.optimization = ADAM;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 4
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = 1024;
descr.optimization = ADAM;
descr.activation = LReLU;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 5
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = 1024;
descr.optimization = ADAM;
descr.activation = LReLU;
if(!actor.Add(descr))
{
delete descr;
return false;
}
// Softmax Layer
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronSoftMaxOCL;
descr.count = 1024;
descr.optimization = ADAM;
descr.activation = LReLU;
if(!actor.Add(descr))
{
delete descr;
return false;
}
// Multilayer Multi-Head Attention Layer
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronMLMHAttentionOCL;
descr.count = 1024;
descr.optimization = ADAM;
descr.activation = LReLU;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 6
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronConcatenate;
descr.count = LatentCount;
descr.window = prev_count;
descr.step = AccountDescr + 6;
descr.optimization = ADAM;
descr.activation = SIGMOID;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 7
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 1024;
descr.activation = LReLU;
descr.optimization = ADAM;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 8
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 1024;
descr.activation = LReLU;
descr.optimization = ADAM;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- layer 9
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 6;
descr.optimization = ADAM;
descr.activation = SIGMOID;
if(!actor.Add(descr))
{
delete descr;
return false;
}
//--- Critic
critic.Clear();
//--- Input layer
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
prev_count = descr.count = LatentCount;
descr.window = 0;
descr.activation = None;
descr.optimization = ADAM;
if(!critic.Add(descr))
{
delete descr;
return false;
}
//--- layer 1
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronConcatenate;
descr.count = 512;
descr.window = prev_count;
descr.step = 6;
descr.optimization = ADAM;
descr.activation = LReLU;
if(!critic.Add(descr))
{
delete descr;
return false;
}
//--- layer 2
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 512;
descr.activation = LReLU;
descr.optimization = ADAM;
if(!critic.Add(descr))
{
delete descr;
return false;
}
//--- layer 3
if(!(descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 512;
descr.activation = LReLU;
descr.optimization = ADAM;
if(!critic. Add(descr))
{
delete descr;
return false;
}
--- layer 4
if(!( descr = new CLayerDescription()))
return false;
descr.type = defNeuronBaseOCL;
descr.count = 1;
descr.optimization = ADAM;
descr.activation = None;
if(!critic. Add(descr))
{
delete descr;
return false;
}
//---
return true;
}
Картинку также можно просто перетащить в текст или вставить её с помощью Ctrl+V
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Опубликована статья Нейросети — это просто (Часть 49): Мягкий Актер-Критик (Soft Actor-Critic):
Мы продолжаем рассмотрение алгоритмов обучения с подкреплением в решении задач непрерывного пространства действий. И в данной статье предлагаю познакомиться с алгоритмом Soft Аctor-Critic (SAC). Основное преимущество SAC заключается в способности находить оптимальные политики, которые не только максимизируют ожидаемую награду, но и имеют максимальную энтропию (разнообразие) действий.
В этой статье я предлагаю Вам познакомиться с ещё одним алгоритмом — Soft Аctor-Critic (SAC). Данный алгоритм впервые был представлен в статье "Soft Actor-Critic: Off-Policy Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor" (январь 2018 г). Метод был представлен практически одновременно с TD3 и имеет некоторые схожие моменты, но есть и отличия в алгоритмах. Основной целью SAC является максимизация ожидаемой награды с учетом максимальной энтропии политики, что позволяет находить разнообразные оптимальные решения в стохастических средах.
Soft Actor-Critic использует Актера со стохастической политикой. Это означает, что Актер в состоянии S может выбрать некое действие A' из всего пространства действий с некой вероятностью Pa'. Иными словами, политика Актера в каждом конкретном состоянии позволяет выбрать не одно конкретное оптимальное действие, а любое из возможных действий (но с определенной долей вероятности). И в процессе обучения Актер учит это вероятностное распределения получения максимального вознаграждения.
Это свойство стохастической политики Актера позволяет исследовать различные стратегии и обнаруживать оптимальные решения, которые могут быть скрыты при использовании детерминированной политики. Кроме того, стохастическая политика Актера учитывает неопределенность в окружающей среде. При наличии шума или случайных факторов такая политика может быть более устойчивой и адаптивной, поскольку позволяет генерировать разнообразные действия для эффективного взаимодействия с окружающей средой.
Автор: Dmitriy Gizlyk