本港台开奖现场直播 j2开奖直播报码现场
当前位置: 新闻频道 > IT新闻 >

码报:【j2开奖】OpenAI详解进化策略方法:可替代强化学习(2)

时间:2017-03-26 02:43来源:报码现场 作者:118KJ 点击:
通过在这些动作中注入噪声来进行探索。我们在强化学习中通常使用的策略是随机的,它们仅计算采取任何动作的概率。通过这种方法,代理可能会在训练

通过在这些动作中注入噪声来进行探索。我们在强化学习中通常使用的策略是随机的,它们仅计算采取任何动作的概率。通过这种方法,代理可能会在训练过程中发现自己在不同时间处在同一个特定状态,而且由于采样的情况,它也将在不同的时间采取不同的动作。这能提供学习所需的信号:这些动作中有一些会导致好的结果,这些动作就会得到鼓励;另一些则不会奏效,就会被抑制。因此我们可以说,我们通过向代理的动作注入噪声而为其学习过程引入了探索(exploration)——我们可以通过在每个时间步骤从动作分布中采样来做到这一点。这与进化策略不同。

进化策略

关于「进化(Evolution)」。在我们探讨进化策略(ES)之前,有必要强调一下尽管这种方法名字中有「进化」这个词,但进化策略和生物进化关系不大。也许这项技术的早期版本从生物进化上获得了一些启发——在一定的抽象程度上,这种方法可被视为这样一个过程:从个体构成的群体中采样并让其中成功的个体引导未来后代的分布。但是,其数学细节在生物进化方法的基础上实现了很大的抽象,我们最好将进化策略看作是一类黑箱的随机优化技术。

黑箱优化。在进化策略中,让我们完全忘记代理、环境、涉及的神经网络和其中的交互吧。进化策略的整个设置就是一大堆数字输入(假设和前面提到的策略网络的参数数量一样,有 1,000,000 个数字),然后输出 1 个数字(对应总奖励),我们需要找到这 1,000,000 个数字的最好配置。在数学上,我们可以说是根据输入向量 w(该网络的参数/权重)来优化一个函数 f(w),但我们不对 f 的结构做出任何假设,我们只能对其进行评估(因此被称为「黑箱」)。

进化策略算法。直观上来讲,这种优化就是一种「猜测然后检测」的过程,即我们从一些随机参数开始,然后重复执行以下过程:1)随机对该猜测进行一点调整,2)让我们的猜测向效果更好的方向移动一点。具体而言,就是在每个步骤输入一个参数向量 w,然后通过高斯噪声对 w 进行抖动来生成一群(比如 100 个)有稍微改变的参数向量 w1, w2……w100。然后我们在环境中分别运行这 100 个候选项所对应的策略网络,从而独立地对这 100 候选项分别进行评估,然后将每个案例中的奖励加起来。然后其更新后的参数就变成了这 100 个向量的加权和,其中每个权重都正比于其总奖励。(即,我们想让更成功的候选项有更高的权重。)在数学上,你也会注意到这就相当于使用有限差分法(finite difference)来估计参数空间中预期奖励的梯度,只是我们是沿着 100 个随机方向来做的。

我们要看的另一种方法是仍然使用强化学习(策略梯度,具体来说是 REINFORCE),其中的代理的动作是使用高斯策略得出整个参数向量。

码报:【j2开奖】OpenAI详解进化策略方法:可替代强化学习

上图:进化策略优化过程,这个环境中只有两个参数和一个奖励函数(红色=高、蓝色=低)。在每次迭代,我们都会展示当前参数值(白色)、一群经过抖动的样本(黑色)和估计的梯度(白色箭头)。我们不断将该参数移动到该箭头的顶点,直到我们收敛到了一个局部最优值。你可以使用本文的代重现这些图。

示例。为了得到具体的核心算法并突出其简洁性,这里给出了一段使用进化策略优化二次函数的短代码实例(更长的版本见文末链接)。

  # simple example: minimize a quadratic around some solution pointimport numpy as np solution = np.array([0.5, 0.1, -0.3]) def f(w): return -np.sum((w - solution)**2)npop = 50 # population size sigma = 0.1 # noise standard deviation alpha = 0.001 # learning rate w = np.random.randn(3) # initial guess for i in range(300): N = np.random.randn(npop, 3) R = np.zeros(npop) for j in range(npop): w_try = w + sigma*N[j] R[j] = f(w_try) A = (R - np.mean(R)) / np.std(R) w = w + alpha/(npop*sigma) * np.dot(N.T, A)

向参数中注入噪声。注意这里的目标与强化学习优化的目标是一样的:预期的奖励。但是,强化学习是将噪声注入动作空间并使用反向传播来计算参数更新,而进化策略则是直接向参数空间注入噪声。换个说话,强化学习是在「猜测然后检验」动作,而进化策略则是在「猜测然后检验」参数。因为我们是在向参数注入噪声,所以就有可能使用确定性的策略(而且我们在实验中也确实是这么做的)。也有可能同时将噪声注入到动作和参数中,这样就有可能实现两种方法的结合。

进化策略和强化学习间的权衡

相比于强化学习算法,进化策略有多个优势(一些优势有些技术性):

(责任编辑:本港台直播)

顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
栏目列表
推荐内容