免费量化交易软件:策略神经网络变得轻松(第二十九部分)优势扮演者-评价者算法

概述

赫兹量化交易软件将继续探索强化学习方法。 在之前的文章中,赫兹量化交易软件讨论了若干种方法,诸如近似 Q-学习奖励函数,和政策梯度函数学习。 每种方法都有自己的优点和缺点。 在构建和训练模型时,最大限度地利用它们的优势肯定会很棒。 当试图查找所用算法缺点最小化的方法时,赫兹量化交易软件经常尝试从各种已知的算法和方法中构建某些聚合体。 在本文中,赫兹量化交易软件将讨论一种将上述两种算法合并成单一模型训练方法的方式,称为优势扮演者-评价者算法
 

1. 以前讨论过的强化学习方法的优点

但在赫兹量化交易软件继续合并算法之前,赫兹量化交易软件先回到它们的独特特征、优势和劣势。

环境交互时,代理者会执行一些影响环境的动作。 外部因素和代理者动作的影响结果,环境状态会发生变化。 每次状态变化后,环境都会通过提供一些奖励来通知代理者 这种奖励既可以是积极的,也可以是消极的。 奖励的规模和符号表示新状态对代理者的实用性。 代理者不知道奖励是如何形成的。 代理者的目的是学习执行此类动作,以便在与环境交互的过程中能够获得尽可能高额的奖励。

赫兹量化交易软件首先研究了近似奖励函数 Q-学习的算法。 赫兹量化交易软件训练模型来学习:如何预测环境处于特定状态下,并执行特定动作后,即将到来的奖励。 此后,根据预测的奖励和代理者的行为政策,代理者执行相应动作。 根据规则,此处会用到贪婪ɛ-贪婪策略。 根据贪婪策略,赫兹量化交易软件选择预测奖励最高的动作。 它最常用于代理者的实际操作之中。

第二种 ɛ-贪婪策略不仅在名称上与贪婪策略相似。 它还涉及选择具有最高预测奖励的动作。 但它允许概率为 ɛ 的随机动作。 它用于模型训练阶段,可更好地研究环境。 否则,一旦获得正奖励,模型将持续重复相同的动作,而不再探索其它选项。 在这种情况下,它永远不会明白主动去优化动作,或者是否有其它任何动作可带来更丰厚的奖励。 但赫兹量化交易软件希望代理者尽可能多地探索环境,并充分利用它。较小方差 - 大乖离率

Q-学习方法的优势是显而易见的。 训练模型以便预测奖励。 这是赫兹量化交易软件从环境中得到的奖励。 好了,赫兹量化交易软件已有了模型操作结果值与从环境中接收的参考值之间存在直接关系。 以这种解释,学习类似于监督学习方法。 在训练模型时,赫兹量化交易软件采用了标准误差作为损失函数。

在此,您应该注意以下几点。 已训练模型将返回场次结束之前的平均累积奖励,同时考虑到代理者在训练模型时,在类似环境状态下执行特定动作后从环境获得的折扣因子。 但环境会针对每次转移到新状态时特意返回奖励。 此处,赫兹量化交易软件看到了间隙,应在代理者完成剧集后被修补。

该算法的缺点包括模型训练的复杂性。 以前赫兹量化交易软件必须运用一些技巧来训练模型。 首先,环境的连续状态彼此密切相关。 大多数情况下,它们仅在次要细节上有所不同。 使用此类数据进行直接训练将导致不断重新训练模型,以便适应当前状态。 故此,该模型失去了泛化数据的能力。 由此,赫兹量化交易软件必须创建一个历史数据的缓冲区,保存模型的训练数据。 在训练模型时,赫兹量化交易软件从历史数据缓冲区中随机选择状态,这样可以减少连续使用训练数据导致的两个状态之间的相关性。

依据从环境获得的实际奖励数据训练模型,赫兹量化交易软件得到了一个低数据方差的模型。 该模型针对每个状态返回的数值差值处于可接受的较小程度。 这是一个积极因素。 但环境会针对每个特定的转移返回奖励。 然而,赫兹量化交易软件希望在整个期间实现盈利最大化。 为了计算它,代理者必须完成整个场次。 若是利用历史数据缓冲区,并添加预测未来奖励的模型,赫兹量化交易软件就能设法构建一种算法,可在实际使用过程中额外训练模型。 如此,学习过程以在线模式运行。 但赫兹量化交易软件不得不为预测奖励时的误差付出代价。

在使用第二个模型预测未来奖励时,赫兹量化交易软件充分意识到此类预测中的误差,并接受风险。 但在训练模型时会考虑到每个误差,并影响所有后续预测。 因此,赫兹量化交易软件获得了一个方差很小却能够预测结果的模型,但乖离率较大。 当使用贪婪策略时,这可以忽略不计。 在此期间,为了选择最大化奖励,赫兹量化交易软件仅拿它与其它奖励比较。 在这种情况下,值的乖离率或缩放不会影响动作选择的最终结果。

当使用 Q-学习时,训练模型仅为了预测奖励。 为了选择动作,赫兹量化交易软件需要在模型创建阶段指定代理者的动作政策(策略)。 但采用贪婪策略可以令您在检测确定性环境中成功工作。 这在构建随机策略时完全不适用。

与之对比,使用策略梯度不需要在模型创建阶段确定代理者的动作政策(策略)。 此方法令代理者能够构建其行为政策。 它既可以是贪婪的,也可以是随机的。

策略梯度方法训练过的模型,返回环境在每个特定状态下,选择一个或多个动作时,实现所需结果的概率分布。

在训练模型时,赫兹量化交易软件还要用到从环境中获得的奖励。 为了在环境的每种状态下选择最佳策略,要用到一直累积到场次结束的奖励。 显然,为了更新模型的权重,代理者需要经历整个场次。 也许这就是该方法的主要缺点。 赫兹量化交易软件无法建立在线训练模型,因为赫兹量化交易软件不知道未来的奖励。

与此同时,使用实际累积奖励可以最小化预测数据与来自真实数值间的乖离率持续误差。 这是 Q-学习的问题,因为用到了未来奖励的预测值。

然而,在政策梯度中,赫兹量化交易软件训练模型来预测并非针对预期奖励,而是当代理者在环境的某种状态下执行某种动作时,达成预期结果的概率分布。 作为损失函数,赫兹量化交易软件采用了对数函数。

为了分析判断误差最小化方向,赫兹量化交易软件采用损失函数的导数。 在这种情况下,对数导数的性质显示出极大便利性。

将损失函数的导数乘以积极奖励,赫兹量化交易软件提升了选择该动作的概率。 且当将损失函数的导数乘以消极奖励时,赫兹量化交易软件在相反的方向上调整权重。 这会降低选择该动作的概率。 奖励值模数将决定调整权重的步长。

如您所见,在更新模型的权重矩阵时,奖励是间接使用的。 因此,赫兹量化交易软件得到一个模型,其结果相对于真实数据拥有较小的乖离率,但数值的方差相当大。

该方法的积极层面包括其探索环境的能力。 当使用 Q-学习和 ɛ-贪婪策略时,赫兹量化交易软件要判断利用 ɛ 剥削的研究平衡,而政策梯度使用来自给定分布的动作采样。

在训练开始时,执行所有动作的概率大体相等。 并且该模型研究环境的最大化,按照相等的概率选择代理者其一或另一个动作。 在模型训练过程中,动作的概率分布发生变化。 选择可盈利动作的概率增加,对于无利可图的动作,选择概率降低。 这降低了模型的探索倾向。 天平朝剥削平移。

注意还有一点。 使用累积奖励,赫兹量化交易软件专注于在场次结束时取得的成果。 且赫兹量化交易软件不会评估每个特定步骤的影响。 诸如此种方式,例如,可以训练代理者在无盈利时捂仓,等待趋势反转。 或者代理者可以学习执行大量亏损交易,而这些亏损将由其中罕有的产生高盈利的盈利交易所弥补。 因为模型将在场次结束时获得最终盈利,并会认定这是一次正面结果,如此该操作的概率就会增加。 当然,大量的迭代应能把这个因素最小化,因为该方法探索环境的能力应该有助于模型找到最优策略。 但这会导致一个漫长的模型训练过程。

赫兹量化交易软件来总结一下。 Q-学习模型具有低方差但高乖离率。 与之对比,政策梯度则以较小乖离率和较大方差训练模型。 而赫兹量化交易软件需要的是能够以最小的方差和乖离率训练模型。

政策梯度构建了一个整体策略,而不考虑每个步骤的影响。 赫兹量化交易软件需要在每一步都获得最大的盈利,而 Q-学习有这可能。 考虑一下贝尔曼(Bellman)函数。 它假定在每个步骤中选择最优动作。

使用 Q-函数近似方法需要在模型创建阶段定义代理者的行为政策。 但赫兹量化交易软件希望模型根据与环境交互的经验自行确定策略。 且当然,赫兹量化交易软件不希望局限于确定性行为策略。 可以通过政策训练方法来实现。

显然,解决方案是将两种训练方法结合起来,从而达到最佳效果。


 

2. 优势扮演者-评价者算法

奖励函数近似与政策学习方法相结合的最成功的尝试是扮演者-评价者(Actor-Critic)家族的方法。 今天赫兹量化交易软件来熟悉一下被称为优势扮演者-评价者的算法。

扮演者-评价者家族方法涉及两种模型的运用。 其中一个模型,即扮演者(Actor),负责选择代理者的动作,并利用政策函数近似方法进行训练。 第二个模型,评价者(Critic),经由 Q-学习方法进行训练,并评估扮演者选择的动作。

首先要做的是减少政策模型中的数据差异。 赫兹量化交易软件再来看一下赫兹量化交易软件的政策模型的损失函数。 每次赫兹量化交易软件将所选动作的预测概率的对数乘以累积奖励的大小时,都要考虑到折扣。 预测概率的数值在范围 [0 1] 内归一化。

https://c.mql5.com/2/48/4273536457562.png

为了减少方差,赫兹量化交易软件可以减少累积奖励的值。 但它不应干扰动作对总体结果的影响。 且与此同时,有必要观察不同代理者训练场次的数据可比性。 例如,赫兹量化交易软件总是可以减去一些固定常数,或整个场次的平均奖励。

https://c.mql5.com/2/48/6209569441781.png

接下来,赫兹量化交易软件可以训练模型来评估每次单独动作的贡献。 删除累积奖励,并仅使用当前转移奖励进行训练,这一看似简单的想法可能会产生令人不愉快的效果。 首先,在当前步骤中获得丰厚的奖励,并不能保证赫兹量化交易软件在未来获得同样的大额奖励。 赫兹量化交易软件可以因为转移到不利状态而获得丰厚的奖励。 它可以比作捕鼠器里的奶酪

另一方面,奖励并不总是取决于行动。 大多数情况下,奖励更多地取决于环境状态,大于代理者评估这种状态的能力。 例如,当依据全局趋势的方向进行交易时,代理者可以期待逆势修正,并等待价格向正确的方向移动。 为此,代理者不需要仔细分析当前状态来辨别趋势。 正确判断全局趋势就足够了。 在这种情况下,入场建仓时价格大概率并非最佳。 经由详细分析,它可以等待调整,并在更好的价位入场。 但如果调整演变成趋势,亏损的风险要高得多。 这种情况下,持仓将产生巨大的亏损,因为逆转遥遥无期。

因此,将累积奖励与某个基准结果进行比较会很有用。 但是如何访问此值? 这就是赫兹量化交易软件使用评价者的地方。 赫兹量化交易软件将用它来评估扮演者的工作。

这个思路是训练评价者模型来评估环境的当前状态。 这是扮演者在场次结束前可从当前状态获得的潜在奖励。 与此同时,扮演者学习选择潜在的、可能产生高于先前训练场次平均奖励的动作。 因此,赫兹量化交易软件将上述损失函数公式中的常数替换为状态评估值。

https://c.mql5.com/2/48/3790395093325.png

其中 V(s) 是环境状态评估函数。

为了训练状态评估函数,赫兹量化交易软件再次采用均方根误差。

https://c.mql5.com/2/48/1691522025564.png

实际上,有多种方式可构建选用此算法模型。 赫兹量化交易软件选用两个独立的神经网络:一个用于扮演者,另一个用于评价者。 但通常采用的架构是一个拥有两个输出的神经网络。 这就是所谓的双头神经网络。 该网络中的一部分神经层是共享的它们负责处理初始数据。 若干个决策层划分到多个方向。 它们当中的一些负责模型政策(扮演者)。 其它负责评估状态(评价者)。 扮演者和评价者都基于相同的环境状态工作。 因此,它们可以拥有相同的状态识别函数。

还有优势扮演者-评论者模型的在线训练的实现。 Q-学习类似,其中的累积奖励被最后一次转移时收到的奖励总和所取代,并在考虑折扣因子的情况下评估后续状态。 在这种情况下,损失函数如下所示:

https://c.mql5.com/2/48/1639568630844.png

其中 ɣ 是折扣系数。

但在线训练有其成本。 此种模型误差更大,更难训练。

3. 实现

现在赫兹量化交易软件已经研究了该方法的理论层面,赫兹量化交易软件可以继续阅读本文的实践部分,并利用 MQL5 工具构建模型训练过程。 为了实现所述算法,赫兹量化交易软件不需要对模型的架构进行任何底层更改。 赫兹量化交易软件不会建立一个双头模型。 赫兹量化交易软件将使用现有手段构建两个神经网络,扮演者和评价者。

此外,赫兹量化交易软件不会针对新模型进行完整的训练。 取而代之,赫兹量化交易软件将采用最后两篇文章中的两个模型。 来自有关 Q-学习文章中的模型将作为评价者。 而来自政策梯度文章中的模型将作为扮演者。

请注意与上述理论材料的细微偏差。扮演者模型完全符合所研究算法的需求。 但赫兹量化交易软件所用的评价者模型与来自上述的环境状态评估函数略有不同。 环境状态的评估不依赖于代理者执行的动作。 状态的值是赫兹量化交易软件的代理者可以从该状态中获得的最大收益。 根据赫兹量化交易软件之前训练的 Q-函数,状态的成本将等于该函数结果向量的最大值。 然而,为了正确的进行模型训练,赫兹量化交易软件必须考虑代理者在分析状态下执行的动作。

现在赫兹量化交易软件来看一下方法的实现代码。 为了训练模型,赫兹量化交易软件来创建一个名为 Actor_Critic.mq5 EA EA 利用之前文章中的模板。 如此,赫兹量化交易软件就能用两个预先训练的模型。 这些模型是分别训练的,并保存在不同的文件之中。 因此,首先赫兹量化交易软件要定义加载模型的文件。 它们的名称反映出对早期文章的引用。

#define ACTOR           Symb.Name()+"_"+EnumToString((ENUM_TIMEFRAMES)Period())+"_REINFORCE"
#define CRITIC          Symb.Name()+"_"+EnumToString((ENUM_TIMEFRAMES)Period())+"_Q-learning"

针对这两个模型,赫兹量化交易软件需要神经网络类的两个实例。 为了保持代码清晰,赫兹量化交易软件在算法中采用的名称对应于模型角色。

猜你喜欢

转载自blog.csdn.net/herzqthz/article/details/131791926