强化学习问题的牛顿演化策略方法

我们扩展了Salimans等人的进化策略,将其与牛顿方法相结合,用于训练强化学习问题。

给定一个具有相关奖励函数和策略神经网络(即代理)的环境,深度强化学习的目标是优化策略神经网络的权重(即隐藏参数),使其相对于奖励函数最大化当前和所有未来的回报(通过在每个给定状态下执行最优操作)。简单地说,强化学习是寻找一个智能体的过程,在给定的环境状态下,智能体执行的动作将导致最佳的当前回报和最大的未来回报。尽管这个想法相当简单,但难点在于训练策略神经网络。这是因为为了计算它的梯度,人们必须通过抽样来估计期望奖励的梯度,这不是一个简单的过程,因为人们在监督学习问题中发现。因此,文献中存在大量高度复杂的算法来解决这个问题(如AC3, AC2, DQN, DDPG, TD3等)。

解决这类问题的另一种算法是进化策略(ES)由Salimanset al。¹。作者表明,ES的性能可以与标准的强化学习算法相媲美,其中Atari和MuJoCo环境被用于基准模型。作者证明了ES实现起来更简单,因为不需要反向传播,它是高度并行的(观察到线性加速),它可以应用于标准强化学习算法不适用的应用程序(即不可微的网络),它不会在奖励稀疏的环境中受到影响,它具有一致的探索,并且它有更少的超参数。

通过使用蝾螈et al。在此基础上,将进化策略方法与牛顿方法(NES)相结合,对进化策略方法进行了扩展。在我们的阅读中,我们证明了使用我们的方法,可以实现与学习率无关的训练算法;因此,相对于标准ES方法,减少了超参数的数量。通过数值实验,我们观察到,只要选择适当的超参数,NES可以实现更快的收敛,并在标准ES之上达到极大值。

推导和主要结果

年代成为一个国家,w是权重张量,神经网络为一个策略神经网络,α为学习率和R是奖励函数。此外,定义Fw= R神经网络w,年代))。请注意,我们的目标是最大化奖励函数,R(即。F),因此,我们可以使用梯度同意,它可以定义为:

wwGw),

在那里,Gw) =∂Fw) /∂w.然而,G不能明确地计算,因此,它必须被估计,这对于现有的强化学习算法来说不是一个非常简单的任务。为了克服这一困难,萨尔曼et al。¹建议如下;让(X) =的意思是([X₁,X₂,⋅⋅⋅Xₘ])是一些分发的期望X,在那里是样本数量(即总体大小)。同时,设σ为某个超参数和ϵ是多维正态分布的随机样本(维数与w),其均值为0,方差为1,即ϵN(0,1),昏暗的ϵ) =昏暗的w)。因此,进化策略可以表示为:

ww+α(ϵFw+ϵσ))/σ。(1)

虽然式(1)比标准的强化学习算法简单得多,但我们仍然可以通过消除超参数α来降低其复杂性,这将是我们阅读的目标。

回忆牛顿法,当应用到我们的问题时,即找到的根G,可以表示为,

ww-Gw)/Hw), (2)

在哪里Hw) =∂Gw) /∂w.现在,扰动权重w通过ϵσ(即。w+ϵσ)F和使用泰勒展开为了得到以下结果,

Fw+ϵσ)≈Fw) + σϵGw+ 0.5σ²(ϵ⋅(ϵHw+⋅⋅⋅,

ϵFw+ϵσ)≈ϵFw) + σϵϵGw+⋅⋅⋅。

因此,根据上述展开的期望和一些简单的重新排列,我们会发现如下:

ϵϵGw))) = (ϵFw+ϵσ))/σ, (3)

ϵ⋅(ϵHw)) = 2((Fw+ϵσ))-Fw)) /σ²。(4)

现在,将式(3)(4)代入式(2)求牛顿演化策略法,我们定义为,

ww- 0.5σ(ϵFw+ϵσ))/ ((Fw+ϵσ))-Fw))。(5)

如读者所见,式(5)消除了学习率的必要性。NES相对于标准ES的另一个优势是,不需要事先知道应用程序需要梯度同意或梯度下降,因为NES可以收敛到任何最小点或最大值,而无需事先指定。

由式(5),进化策略牛顿方法的伪代码可表示为:

预置w集数:
= []
返回= []
样本数量:
(dim=dim(w))
返回= reward_function(policy_neural_network(w + sigma*epsilon))
epsilons.append(ε)
returns.append(返回)
返回= reward_function(policy_neural_network(w))
W = W - 0.5*sigma*mean(收益*epsilons)/(均值(收益)-收益)

正如读者可以从上面的伪代码中看到的那样,NES并没有向ES引入额外的复杂性返回返回(分母)都是用标准ES方法计算的。

作为一个简单的python示例,我们给出Karpathy et al.²的简单ES python示例,但针对NES进行了修改,

#简单的NES示例:最小化某个解决点周围的二次函数
将numpy导入为np
解= np.array([0.5, 0.1, -0.3])
Def f(w):返回-np。年代um((w - solution)**2)

Npop = 1000 #人口规模
Sigma = 0.1 #噪声标准差
W = np.random.randn(3) #初始猜测
对于范围(300)中的I:
N = np.random。randn (npop, 3)
R = np. 0 (npop)
对于range(npop)中的j:
w_try = w + sigma*N[j]
R[j] = f(w_try)
分母= np.mean(R) - f(w)
w = w - 0.5 * sigma * np.dot(N。T, R) / npop /分母

数值结果

作为一个简单的数值实验,我们比较了懒人程序员公司³的简单ES示例与我们的NES算法^(由于权重的随机初始化,每次运行的结果可能会有所不同)。

图(1):不同σ下的牛顿方法与标准演化策略,其中最大收益为0。

正如读者可以从图(1)中看到的,NES优于标准ES方法,通常收敛速度更快,并且总是获得更高的回报。

进一步的各种强化学习应用的数值结果表明,NES方法是高度不稳定的。我们经常需要剪辑更新项,单独处理分母等于零的情况(例如如果(Fw+ϵσ))=Fw),然后使用标准ES方法),并确定分母的符号,这取决于是否寻求最大值(即-∥(Fw+ϵσ))-Fw))∥)或极小值(即+∥(Fw+ϵσ))-Fw)∥)。事实上,我们在图(1)中给出的简单示例是分别处理裁剪和奇异情况计算的。此外,NES需要相对较大的样本量(即较大的总体规模)才能收敛,这使得它对于复杂的应用(即具有大量参数的策略网络,或具有模糊的极大值或极小点)不切实际。

尽管有上述突出的缺陷,当NES实现收敛时,与标准ES方法相比,我们观察到相对较大的σ收敛更快,相对较小的σ回报更高(假设样本量相对较大)。

请注意,我们的数值实验是针对定制应用(即不是基准应用)进行的,因此,我们的数值结果所暗示的任何结论都可能被视为推测性的。

结论

在我们的阅读中,我们结合了牛顿的方法和萨尔曼的方法et al。进化策略(ES)衍生出一种用于训练深度强化学习策略神经网络的替代方法。通过这种方法,我们获得了标准进化策略的所有优势,但少了一个超参数(即没有学习率),并且没有增加算法的复杂性。

我们的数值结果表明,具有进化策略(NES)的牛顿方法是高度不稳定的,并且需要仔细调整超参数和稳定方法:这意味着相对于标准ES(或任何其他强化学习算法),超参数数量的损失是以其余超参数的更高灵敏度为代价的。

在事件上,当我们的NES方法收敛时,与标准ES方法相比,它表现出更快的收敛和更高的回报(即具有更接近最优权重的策略神经网络)。

最后,我们提醒读者,我们的数值实验是为定制应用而进行的。我们把基准数值实验留作以后的工作。

(2017年9月7日)。进化策略作为强化学习的可扩展替代方案https://arxiv.org/abs/1703.03864

Andrej Karpathy, Tim Salimans, Jonathan Ho, Peter Chen, Ilya Sutskever, John Schulman, Greg Brockman, Szymon Sidor。(2017年3月24日)。进化策略作为强化学习的可扩展替代方案https://openai.com/blog/evolution-strategies/

[3]懒程序员公司,bob7783。(2019年5月8日)。es_simple.pyhttps://github.com/lazyprogrammer/machine_learning_examples/blob/master/rl3/es_simple.py

Kavinda Jayawardana。(2020年12月29日)。Newtons_Method_Evolution_Strategy_simple.pyhttps://github.com/kavjay/Newtons_Method_Evolution_Strategy_simple/blob/main/Newtons_Method_Evolution_Strategy_simple.py

数学博士(伦敦大学学院,2008-2017),深度学习工程师(Solentim Ltd, 2018-)

Baidu
map