强化学习建立在与环境互动过程时从环境中获得的最大奖励之上。显然,学习过程需要与环境不断互动。不过,状况有所不同。在解决某些任务时,我们与环境交互时可能会遇到各种限制。对于这种状况,一个可能的解决方案是使用离线强化学习算法。它们允许您依据与环境初步交互期间收集的有限轨迹存档(当它可用时)上训练模型。当然,赫兹量化软件离线强化学习也有一些瑕疵。特别是,当我们与有限的训练样本打交道时,研究环境的问题变得更加尖锐,它无法适应环境的所有多变性。在复杂的随机环境中尤其如此。在上一篇文章中,我们讨论过解决该任务的选项之一(ExORL 方法)。不过,有时与环境的交互限制可能至关重要。环境探索的过程可以伴随着积极和消极的回报。负面奖励可能是高度不受待见,且可能伴随着经济损失、或其它一些您无法接受的不必要损失。但任务很少是“凭空诞生的”。大多数情况下,我们会优化现有流程。在我们这个信息技术时代,我们几乎总能从以往解决类似上述任务的过程中,找到正在探索环境的互动经验。可以使用来自实际的与环境交互的数据,这些数据可在某种程度上覆盖所需的动作和状态空间。在《依据真实数据源的真实世界离线强化学习》一文中讲述了使用此类经验解决真实机器人应对新任务的实验。该论文的作者提出了一个训练模型的新框架:真实-ORL。
1. 真实-ORL框架离线强化学习(ORL)针对马尔可夫(Markov)决策环境进行建模。假定访问提前生成的数据集,其形式是使用单个或混合行为政策收集的轨迹。ORL 的目标是利用离线数据集来训练一个几乎最优的政策 π。一般来说,由于探索不足和训练数据集有限,学习不可能得到最优政策 π*。在这种情况下,我们的目标是基于可用数据集进行训练,找到最优政策。大多数离线强化学习算法都包含某种形式的正则化或保守主义。可以采取以下形式,但不限于:
政策梯度的正则化
近似动态规划
利用环境模型进行学习
真实-ORL 框架的作者没有提供新的模型训练算法。在它们的工作中,它们会探索以前代表性 ORL 算法的范围,并在实际用例中评估它们在物理机器人上的性能。该框架的作者提请注意,本文中分析的学习算法主要把模拟作为重点,使用理想的数据集、独立且同期的数据集。然而,这种方式在真实的随机世界中并不正确,这在于动作会伴随着操作延迟。这就在物理机器人上限制了使用经过训练的政策。目前尚不清楚来自模拟基准测试、或有限设备评估的结果是否能够普适真实世界的过程。论文《依据真实数据源的真实世界离线强化学习》旨在填补这一空白。它阐述了应用于真实世界学习任务的几种离线强化学习算法的实证研究,强调训练集区域之外的普适性。下一个,模仿学习是机器人学习控制政策的另一种方式。与通过优化奖励来训练政策的 RL 不同,模拟学习旨在复制专家的示范。在大多数情况下,它使用监督学习方法,将奖励函数排除在学习过程之外。强化学习和模仿学习的结合同样有趣。在他们的论文中,真实-ORL 框架的作者使用了一个离线数据集,由来自启发式手工政策的轨迹组成。这些轨迹是在专家的监督下收集的,代表了一个高品质的数据集。该方法的作者在实证研究中将离线模仿学习(特别是行为克隆)作为基本算法。为了最大限度地提高估测学习方法的客观性,本文研究了四个经典的操纵任务,它们代表了一组常见的操纵挑战。每个任务的建模,都作为具有唯一奖励函数的 MDP。每种所分析学习方法都用于解决所有 4 个任务,这把所有算法置于绝对相等的条件下。如上所述,训练数据是采用专家监督下开发的政策收集的。基本上,收集了所有四个任务的成功轨迹。该框架的作者认为,收集含有各种噪声的次优轨迹、或扭曲专家轨迹对于机器人技术来说是不可接受的,因为扭曲或随机行为是不安全的,且有损于设备的技术条件。同时,使用从各种任务中收集的数据,为在真实机器人上应用离线强化学习提供了更真实的环境,原因有三:
自主收集真实机器人的“随机/探索性”数据,需要广泛的安全限制、监督和专家指导。
使用智能系统大量记录此类随机数据,比用它来收集真实世界的重大轨迹更有意义。
基于如此强大的数据集开发特定任务的策略,并对 ORL 能力进行压力测试,比使用受损数据集更切实。
真实-ORL 框架的作者为了避免任务(或算法)的偏见带来的乖离,提前冻结了数据集。
为了在所有任务中训练智能体的政策,真实-ORL 的作者将每个任务分解为更简单的阶段,并标记为子目标。智能体朝子目标迈出一小步,直到满足某些特定任务的准则。由于控制器的噪声和跟踪误差,以这种方式训练的政策并未达成理论上的最大可能结果。不过,它们以很高的成功率完成任务,且其性能可与人类示范相比。真实-ORL 的作者进行的实验包括 3000 多个训练轨迹、3500 多个估测轨迹、以及 270 多个人工时。通过广泛的研究,他们发现:
对于区域内任务,强化学习算法可以普适至数据稀缺问题区域、以及动态问题。
使用异构数据之后,ORL 性能的变化往往会因智能体、任务设计、和数据特征而异。
某些异构的、与任务无关的轨迹可以提供重叠的数据支持,并能更好的学习,从而令 ORL 智能体提高其性能。
每个任务的最佳智能体即可以是 ORL 算法,亦或 ORL 和 BC 之间的等同物。论文中提出的估测表明,即使在区域外数据模式下,对于真实世界来说,离线强化学习也是一种更现实有效的方式。
以下是作者提供的真实-ORL 框架的可视化。
添加图片注释,不超过 140 字(可选)
2. 利用 MQL5 实现论文《依据真实数据源的真实世界离线强化学习》实证确认了离线强化学习方法在解决真实世界任务方面的有效性。但引起我注意的是,利用解决类似任务的数据来构建智能体政策。此处数据的唯一准则是环境。也就是说,收集的数据集必须来自我们正在分析的环境交互的结果。我们如何从中受益?至少,我们收到了有关环境探索的广泛信息,而在我们的案例中是金融市场。我们已经多次讨论过强化学习的主要任务之一,即环境探索。同时,我们总有大量并没有用到的信息。我说的是信号。在下面的屏幕截图中,我特意删除了作者和信号名称。在我们的实验中,信号的唯一准则是所选金融工具在训练区间的历史段是否存在交易。
添加图片注释,不超过 140 字(可选)我们依据 EURUSD 金融产品 2023 年前 7 个月的时间区间训练模型。这些准则将用于选择信号。这些信号既可以是付费信号,也可以是免费信号。请注意,在付费信号中,部分历史被隐藏了。不过,通常只有最后的成交是隐藏的。但我们对开仓历史感兴趣。在“帐户”选项卡上,我们检查感兴趣区间的操作。
添加图片注释,不超过 140 字(可选)
在“统计”选项卡上,我们检查金融产品的操作。但我们并非正在寻找只针对感兴趣的金融产品有效的信号。我们稍后将排除不必要的成交。
我同意这是一个相当近似且间接的分析。它不保证在所需的历史区间内,所分析的金融产品存在成交。但有成交的可能性相当高。这种分析非常简单、且易于执行。当我们找到合适的信号时,我们转到信号的“交易历史”选项卡,并下载包含操作历史的 csv 文件。
添加图片注释,不超过 140 字(可选)
请注意,下载的文件必须保存在 赫兹量化软件的公共文件夹 “...\AppData\Roaming\MetaQuotes\Terminal\Common\Files\” 当中。为了便于使用,我创建了一个子目录 “Signals”,并将所有信号的文件重命名为 “SignalX.csv”,其中 X 是保存的信号历史的序列号。此处应当注意的是,正在研究的 “真实-ORL” 框架涉及使用选定轨迹,作为与环境交互的经验。这并不意味着它承诺完全克隆轨迹。因此,在选择轨迹时,我们不会检查成交与我们所用指标的相关性(或任何其它统计分析)。出于同样的原因,您不应当指望一个经过训练的模型完全重复最有利可图的动作、或任何其它所用的信号。使用这种方法,我选择了 20 个信号。不过,我们不能使用结果的 csv 文件来训练我们的模型。我们需要把成交映射到成交时刻的历史价格走势数据和指标读数,并收集每个用到的信号轨迹。我们将在 EA “...\RealORL\ResearchRealORL.mq5” 中执行此功能,但首先我们将做一点准备工作。为了记录信号交易历史中的每笔交易业务,我们将创建一个 CDeal 类。该类仅供内部使用。为了剔除不必要的操作,我们将省略访问类变量的包装器。所有变量都声明为公开。
1. 真实-ORL框架离线强化学习(ORL)针对马尔可夫(Markov)决策环境进行建模。假定访问提前生成的数据集,其形式是使用单个或混合行为政策收集的轨迹。ORL 的目标是利用离线数据集来训练一个几乎最优的政策 π。一般来说,由于探索不足和训练数据集有限,学习不可能得到最优政策 π*。在这种情况下,我们的目标是基于可用数据集进行训练,找到最优政策。大多数离线强化学习算法都包含某种形式的正则化或保守主义。可以采取以下形式,但不限于:
政策梯度的正则化
近似动态规划
利用环境模型进行学习
真实-ORL 框架的作者没有提供新的模型训练算法。在它们的工作中,它们会探索以前代表性 ORL 算法的范围,并在实际用例中评估它们在物理机器人上的性能。该框架的作者提请注意,本文中分析的学习算法主要把模拟作为重点,使用理想的数据集、独立且同期的数据集。然而,这种方式在真实的随机世界中并不正确,这在于动作会伴随着操作延迟。这就在物理机器人上限制了使用经过训练的政策。目前尚不清楚来自模拟基准测试、或有限设备评估的结果是否能够普适真实世界的过程。论文《依据真实数据源的真实世界离线强化学习》旨在填补这一空白。它阐述了应用于真实世界学习任务的几种离线强化学习算法的实证研究,强调训练集区域之外的普适性。下一个,模仿学习是机器人学习控制政策的另一种方式。与通过优化奖励来训练政策的 RL 不同,模拟学习旨在复制专家的示范。在大多数情况下,它使用监督学习方法,将奖励函数排除在学习过程之外。强化学习和模仿学习的结合同样有趣。在他们的论文中,真实-ORL 框架的作者使用了一个离线数据集,由来自启发式手工政策的轨迹组成。这些轨迹是在专家的监督下收集的,代表了一个高品质的数据集。该方法的作者在实证研究中将离线模仿学习(特别是行为克隆)作为基本算法。为了最大限度地提高估测学习方法的客观性,本文研究了四个经典的操纵任务,它们代表了一组常见的操纵挑战。每个任务的建模,都作为具有唯一奖励函数的 MDP。每种所分析学习方法都用于解决所有 4 个任务,这把所有算法置于绝对相等的条件下。如上所述,训练数据是采用专家监督下开发的政策收集的。基本上,收集了所有四个任务的成功轨迹。该框架的作者认为,收集含有各种噪声的次优轨迹、或扭曲专家轨迹对于机器人技术来说是不可接受的,因为扭曲或随机行为是不安全的,且有损于设备的技术条件。同时,使用从各种任务中收集的数据,为在真实机器人上应用离线强化学习提供了更真实的环境,原因有三:
自主收集真实机器人的“随机/探索性”数据,需要广泛的安全限制、监督和专家指导。
使用智能系统大量记录此类随机数据,比用它来收集真实世界的重大轨迹更有意义。
基于如此强大的数据集开发特定任务的策略,并对 ORL 能力进行压力测试,比使用受损数据集更切实。
真实-ORL 框架的作者为了避免任务(或算法)的偏见带来的乖离,提前冻结了数据集。
为了在所有任务中训练智能体的政策,真实-ORL 的作者将每个任务分解为更简单的阶段,并标记为子目标。智能体朝子目标迈出一小步,直到满足某些特定任务的准则。由于控制器的噪声和跟踪误差,以这种方式训练的政策并未达成理论上的最大可能结果。不过,它们以很高的成功率完成任务,且其性能可与人类示范相比。真实-ORL 的作者进行的实验包括 3000 多个训练轨迹、3500 多个估测轨迹、以及 270 多个人工时。通过广泛的研究,他们发现:
对于区域内任务,强化学习算法可以普适至数据稀缺问题区域、以及动态问题。
使用异构数据之后,ORL 性能的变化往往会因智能体、任务设计、和数据特征而异。
某些异构的、与任务无关的轨迹可以提供重叠的数据支持,并能更好的学习,从而令 ORL 智能体提高其性能。
每个任务的最佳智能体即可以是 ORL 算法,亦或 ORL 和 BC 之间的等同物。论文中提出的估测表明,即使在区域外数据模式下,对于真实世界来说,离线强化学习也是一种更现实有效的方式。
以下是作者提供的真实-ORL 框架的可视化。

2. 利用 MQL5 实现论文《依据真实数据源的真实世界离线强化学习》实证确认了离线强化学习方法在解决真实世界任务方面的有效性。但引起我注意的是,利用解决类似任务的数据来构建智能体政策。此处数据的唯一准则是环境。也就是说,收集的数据集必须来自我们正在分析的环境交互的结果。我们如何从中受益?至少,我们收到了有关环境探索的广泛信息,而在我们的案例中是金融市场。我们已经多次讨论过强化学习的主要任务之一,即环境探索。同时,我们总有大量并没有用到的信息。我说的是信号。在下面的屏幕截图中,我特意删除了作者和信号名称。在我们的实验中,信号的唯一准则是所选金融工具在训练区间的历史段是否存在交易。


在“统计”选项卡上,我们检查金融产品的操作。但我们并非正在寻找只针对感兴趣的金融产品有效的信号。我们稍后将排除不必要的成交。
我同意这是一个相当近似且间接的分析。它不保证在所需的历史区间内,所分析的金融产品存在成交。但有成交的可能性相当高。这种分析非常简单、且易于执行。当我们找到合适的信号时,我们转到信号的“交易历史”选项卡,并下载包含操作历史的 csv 文件。

请注意,下载的文件必须保存在 赫兹量化软件的公共文件夹 “...\AppData\Roaming\MetaQuotes\Terminal\Common\Files\” 当中。为了便于使用,我创建了一个子目录 “Signals”,并将所有信号的文件重命名为 “SignalX.csv”,其中 X 是保存的信号历史的序列号。此处应当注意的是,正在研究的 “真实-ORL” 框架涉及使用选定轨迹,作为与环境交互的经验。这并不意味着它承诺完全克隆轨迹。因此,在选择轨迹时,我们不会检查成交与我们所用指标的相关性(或任何其它统计分析)。出于同样的原因,您不应当指望一个经过训练的模型完全重复最有利可图的动作、或任何其它所用的信号。使用这种方法,我选择了 20 个信号。不过,我们不能使用结果的 csv 文件来训练我们的模型。我们需要把成交映射到成交时刻的历史价格走势数据和指标读数,并收集每个用到的信号轨迹。我们将在 EA “...\RealORL\ResearchRealORL.mq5” 中执行此功能,但首先我们将做一点准备工作。为了记录信号交易历史中的每笔交易业务,我们将创建一个 CDeal 类。该类仅供内部使用。为了剔除不必要的操作,我们将省略访问类变量的包装器。所有变量都声明为公开。