期货量化交易软件:神经网络变得轻松(第四十五部分):训练状态探索技能

概述

分层强化学习算法可以成功解决相当复杂的问题。 这是通过将问题切分为更小的子任务来达成的。 在这种境况下,主要问题之一是正确选择和训练技能,令代理者能够有效地采取行动,并在可能的情况下尽可能多地管理环境以达成目标。

之前,我们赫兹量化软件已领略了 DIAYN 和 DADS 技能训练算法。 在第一种情况下,我们所教导的是拥有最大多样性行为的技能,从而确保对环境的最大探索。 与此同时,我们赫兹量化软件也乐于训练对我们当前任务无用的技能。

在第二种算法(DADS)中,我们从技能对环境的影响这一角度来学习技能。 在此,我们旨在预测环境动态,并使用能令我们从变化中获得最大收益的技能。

在这两种情况下,先前分派的技能都被用作针对代理者的输入,并在训练过程中进行探索。 这种方式的实际应用表现出对状态空间的覆盖不足。 有因于此,已训练技能无法有效地与所有可能的环境状态进行交互。

在本文中,我建议去领略一些教导技能的替代方法 探索、发现和学习(EDL)。 EDL 从不同的角度对待该问题,这令其能够克服状态覆盖有限的问题,并提供更灵活、和适应性更强的代理者行为。

1. “探索、发现和学习”算法

探索、发现和学习(EDL)方法于 2020 年 8 月发表的科学性文章 “探索、发现和学习:状态覆盖技能的无监督发现”中提出。 它提出了一种方式,允许代理者在没有任何状态和技能先验知识的情况下,发现和学习能在环境中使用不同的技能。 它还允许训练跨越不同状态的各种技能,从而可在未知环境中代理者的探索和学习更有效。

EDL 方法具有固定的结构,由三个主要阶段组成:探索、发现、和技能训练。

我们在没有任何环境和所需技能的先验知识的情况下开始探索。 在这个阶段,我们必须创建一个初始状态的训练集,最大程度地覆盖与所有可能环境行为相对应的各种状态。 在我们的工作中,我们将在训练期间使用统一采样的系统状态。 不过,其它方式也是可能的,尤其是在训练特殊的代理者行为模式时。 应该注意的是,EDL 不需要访问由智能策略造就的轨迹或操作。 但它也不排除会用到它们。

在第二阶段,我们搜素隐藏在特定环境条件下的技能。 这种方法的基本思想是,环境的状态(或状态空间)与代理者应该使用的特定技能之间存在某种联系。 我们必须判定这种依赖关系。

应该指出的是,在这个阶段,我们对环境条件一无所知。 只有这种状态的样本。 甚至,我们缺乏有关必要技能的知识。 与此同时,我们之前曾注意到,EDL方法涉及在没有教导员的情况下发现技能。 该算法使用变分自动编码器来搜索指定的依赖项。 在模型输入和输出中都存在环境状态。 在自动编码器的潜在状态下,我们期望从环境的当前状态中获得潜在技能的识别。 在这种方式中,我们的自动编码器构建了一个函数,即技能如何依赖于环境的当前状态。 模型解码器执行逆函数,并依据所用技能构建状态的依赖性。 使用变分自动编码器可以令我们从清晰的“状态-技能”对应关系,转移至某种概率分布。 这通常会提高模型在复杂随机环境中的稳定性。

因此,在缺乏有关状态和技能的附加知识的情况下,使用 EDL 方法中的变分自动编码器为我们提供了探索和发现与不同环境状态相关的隐藏技能的机会。 建立环境状态与所需技能之间关系的函数,令我们能够把环境的新状态解释成在未来的一组最相关技能。

请注意,在前面讨论的方法中,我们首先训练了技能。 然后,调度器查找一个策略来使用备用的技能来达成目标。 EDL 方法采用相反的方式。 我们首先构建状态和技能之间的依赖关系。 之后,我们教导技能。这令我们能够更准确地将技能与特定的环境条件匹配,并判定哪些技能在某些情况下最有效。

算法的最后阶段是训练技能模型(代理者)。 在此,代理者学到了一个策略,该策略最大化状态和隐藏变量之间的互动信息。 运用强化学习方法对代理者进行训练。 形成奖励的结构与 DADS 方法相似,但该方法的作者略微简化了方程式。 也许如您所记,DADS 中的代理者内部奖励是根据以下方程式形成的:

从数学课程中,我们知道

因此:

正如您所见,减数是所有用到技能的常数。 因此,我们只能用被减数来优化策略。 这种方式令我们能够在不损失模型训练品质的情况下降低计算量。

这最后一步可被认为是在训练一个策略模仿解码器,处于马尔可夫(Markov)决策过程当中,也就是说,该策略将参与解码器为每个隐藏技能生成状态。 需要注意的是,奖励函数是固定的,这与以前的方法不同,它根据策略行为不断变化。 这令训练更加稳定,并增加了模型的收敛性。

2. 利用 MQL5 实现

在研究过探索、发现和学习(EDL)方法的理论方面之后,我们转入本文的实施部分。 在利用 MQL5 实现该方法之前,我们需要看看实现特征。

在上一篇文章的 测试 章节中,我们演示了当辨别代理者源数据中所用技能时,使用独热向量和全部分布的 结果相似性。 这允许我们能够根据拥有的数据,使用一种或另一种方法来减少数学运算。 通常来说,这令我们能够减少所执行操作的数量。 与此同时,我们能够提高模型训练和操作的速度。

我们需要注意的第二点是,我们将相同的初始数据提交给调度器和代理者的输入(价格走势、参数值和余额状态的历史数据)。 在代理者输入数据中也会添加技能 ID。

另一方面,在研究自动编码器时,我们提到自动编码器的潜在状态是其原始数据的压缩表示。 换言之,通过将源数据的向量,与变分自动编码器的潜在数据向量连接起来,我们以完整和压缩的表示形式分两次传递相同的数据。

如果使用类似的初步源数据处理模块,则此方式也许有点多余。 故此,在该实现中,我们只会将自动编码器的潜在状态发送到代理者输入,其已包含所有必要的信息。 这将令我们能够显著减少执行的操作量,以及训练模型的总时间。

当然,只有在调度器和代理者输入中使用类似的初始数据时,这种方式才可行。 其它选项也是可能的。 例如,自动编码器只能在历史数据和技能之间建立依赖关系,而不考虑帐户的状态。 在代理者输入中,它能够连接自动编码器潜在状态向量,和计数状态的描述向量。 使用全部数据并不是一个错误,就像我们在实现前面讨论的方法时所做的那样。 您可以在实现中尝试不同的方式。

所有这些决策都必须反映在 CreateDescriptions 函数中我们指定的模型架构当中。 在方法参数中,我们传递指向 2 个动态数组的指针,其中定义了调度器和代理者模型。 请注意,在实现 EDL 方法时,我们不会创建鉴别器,因为它的作用是由自动编码器(调度器)解码器来扮演的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫兹量化软件

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值