文章 "神经网络变得轻松(第四十五部分):训练状态探索技能"

 

新文章 神经网络变得轻松(第四十五部分):训练状态探索技能已发布:

在没有明确奖励函数的情况下,实用的训练技能就是分层强化学习的主要挑战之一。 以前,我们已领略了解决此问题的两种算法。 但环境研究的完整性问题仍然悬而未决。 本文演示了一种不同的技能训练方式,其可取决于系统的当前状态直接使用。

最初的结果比我们预期的要差。 包含的正面结果则是,测试样本中所用的技能分布相当均匀。 这就是最终我们的测试正面结果所在。 在对自动编码器和代理者进行了多次迭代训练后,我们仍然无法获得能够在训练集上产生盈利的模型。 显然,问题在于自动编码器无法足够准确地预测状态。 结果就是,余额曲线与预期结果相去甚远。

为了验证我们的假设,创建了一个替代的代理者训练 EA “EDL\StudyActor2.mq5”。 替代选项与之前研究的选项之间的唯一区别就是生成奖励的算法。 我们依旧用该循环来预测帐户状态的变化。 这一次,我们取相对余额变化指标作为奖励。

      ActorResult = vector<float>::Zeros(NActions);
      for(action = 0; action < NActions; action++)
        {
         reward = GetNewState(Buffer[tr].States[i].account, action, prof_1l);
         ActorResult[action] = reward[0]/PrevBalance-1.0f;
        }

贯穿测试区间,使用修改后的奖励函数进行训练的代理者显示出相当平缓的盈利增长能力。 

基于测试样本的余额曲线图
测试结果

作者:Dmitriy Gizlyk