乐趣区

关于人工智能:强化学习从基础到进阶常见问题和面试必知必答5梯度策略添加基线优势函数动作分配合适的分数

强化学习从根底到进阶 - 常见问题和面试必知必答[5]::梯度策略、增加基线(baseline)、劣势函数、动作调配适合的分数(credit)

1. 外围词汇

  • 策略(policy):在每一个演员中会有对应的策略,这个策略决定了演员的后续动作。具体来说,策略就是对于外界的输出,输入演员当初应该要执行的动作。个别地,咱们将策略写成 $\pi$。
  • 回报(return):一个回合(episode)或者试验(trial)失去的所有处分的总和,也被人们称为总处分(total reward)。个别地,咱们用 $R$ 来示意它。
  • 轨迹(trajectory):一个试验中咱们将环境输入的状态 $s$ 与演员输入的动作 $a$ 全副组合起来造成的汇合称为轨迹,即 $\tau=\left\{s_{1}, a_{1}, s_{2}, a_{2}, \cdots, s_{t}, a_{t}\right\}$。
  • 处分函数(reward function):用于反映在某一个状态采取某一个动作能够失去的处分分数,这是一个函数。即给定一个状态 - 动作对 ($s_1$,$a_1$),处分函数能够输入 $r_1$。给定 ($s_2$,$a_2$),它能够输入 $r_2$。把所有的 $r$ 都加起来,咱们就失去了 $R(\tau)$,它代表某一个轨迹 $\tau$ 的处分。
  • 冀望处分(expected reward):$\bar{R}_{\theta}=\sum_{\tau} R(\tau) p_{\theta}(\tau)=E_{\tau \sim p_{\theta}(\tau)}[R(\tau)]$。
  • REINFORCE:基于策略梯度的强化学习的经典算法,其采纳回合更新的模式。

2. 常见问题汇总

2.1 如果咱们想让机器人本人玩视频游戏,那么强化学习中的 3 个组成部分(演员、环境、处分函数)具体别离代表什么?

演员做的事件就是操控游戏的摇杆,比方向左、向右、停火等操作;环境就是游戏的主机,负责管制游戏的画面、管制怪物如何挪动等;处分函数就是当执行什么动作、产生什么情况的时候,咱们能够失去多少分数,比方击杀一只怪兽失去 20 分、被对手暴击扣除 10 分、实现工作失去 10 分等。

2.2 在一个过程中,一个具体的轨迹 {$s_1 , a_1 , s_2 , a_2$} 呈现的概率取决于什么?

(1)一部分是环境的行为,即环境的函数外部的参数或外部的规定是什么模式的。$p(s_{t+1}|s_t,a_t)$ 这一项代表的是环境,环境这一项通常是无法控制的,因为它是曾经客观存在的,或者其模式是提前制订好的。

(2)另一部分是智能体的行为,咱们能管制的是 $p_\theta(a_t|s_t)$,即给定一个状态 $s_t$,演员要采取什么样的动作 $a_t$ 取决于演员的参数 $\theta$,所以这部分是咱们能够管制的。随着演员动作的不同,每个同样的轨迹,它会因为不同的概率从而体现出不同的行为。

2.3 当咱们最大化冀望处分时,应该应用什么办法?

应该应用梯度回升法,因为要让冀望处分越大越好,所以是梯度回升法。梯度回升法在更新参数的时候要增加梯度信息。要进行梯度回升,咱们先要计算冀望处分 $\bar{R}$ 的梯度。咱们对 $\bar{R}$ 取一个梯度,这里只有 $p_{\theta}(\tau)$ 是与 $\theta$ 无关的,所以 $p_{\theta}(\tau)$ 为梯度的局部。

2.4 咱们应该如何了解策略梯度的公式呢?

策略梯度的公式如下:

$$
\begin{aligned}
E_{\tau \sim p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right] &\approx \frac{1}{N} \sum_{n=1}^{N} R\left(\tau^{n}\right) \nabla \log p_{\theta}\left(\tau^{n}\right) \\
&=\frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} R\left(\tau^{n}\right) \nabla \log p_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right)
\end{aligned}
$$

$p_{\theta}(\tau)$ 外面有两项,$p(s_{t+1}|s_t,a_t)$ 来自环境,$p_\theta(a_t|s_t)$ 来自智能体。$p(s_{t+1}|s_t,a_t)$ 由环境决定,从而与 $\theta$ 无关,因而 $\nabla \log p(s_{t+1}|s_t,a_t) =0$,$\nabla p_{\theta}(\tau)=\nabla \log p_{\theta}\left(a_{t}^{n} | s_{t}^{n}\right)$。

具体来说:

(1)假如在状态 $s_t$ 时执行动作 $a_t$,最初发现轨迹 $\tau$ 的处分是正的,那咱们就要增大这一项的概率,即增大在状态 $s_t$ 时执行动作 $a_t$ 的概率;

(2)反之,在状态 $s_t$ 时执行动作 $a_t$ 会导致轨迹 $\tau$ 的处分变成负的,咱们就要减小这一项的概率。

2.5 咱们能够应用哪些办法来进行梯度晋升的计算?

用梯度晋升来更新参数,对于原来的参数 $\theta$,能够将原始的 $\theta$ 加上更新梯度,再乘一个学习率。通常学习率也须要调整,与神经网络一样,咱们能够应用 Adam、RMSProp、SGD 等优化器对其进行调整

2.6 进行基于策略梯度的优化的技巧有哪些?

(1)减少基线:为了避免所有处分都为正,从而导致每一个状态和动作的变换,都会使得每一项变换的概率回升,咱们把处分减去一项 $b$,称之为基线。当减去 $b$ 后,就能够让处分 $R(\tau^n)-b$ 有正有负。所以如果失去的总处分 $R(\tau^n)$ 大于 $b$,就让它的概率增大。如果总处分小于 $b$,就算它是正的,值很小也是不好的,就须要让这一项的概率减小。如果处分 $R(\tau^n)$ 小于 $b$,就要让采取这个动作的处分降落,这样也合乎常理。然而应用基线会让原本处分很大的“动作”的处分变小,从而升高更新速率。

(2)指派适合的分数:首先,原始权重是整个回合的总处分。当初改成从某个工夫点 $t$ 开始,假如动作是在工夫点 $t$ 被执行的,从工夫点 $t$,始终到游戏完结所有处分的总和大小,才真正代表这个动作是好的还是不好的;接下来咱们再进一步,把将来的处分打一个折扣,咱们称由此失去的处分的和为折扣回报。

(3)综合以上两种技巧,咱们将其统称为劣势函数,用 $A$ 来代表劣势函数。劣势函数取决于状态和动作,即咱们需计算的是在某一个状态 $s$ 采取某一个动作 $a$ 的时候,劣势函数有多大。

(4)劣势函数的意义在于掂量假如咱们在某一个状态 $s_t$ 执行某一个动作 $a_t$,相较于其余可能动作的劣势。它在意的不是相对的好,而是绝对的好,即绝对劣势,因为会减去一个基线 $b$。$A_{\theta}\left(s_{t}, a_{t}\right)$ 通常能够由一个网络预估进去,这个网络叫作评论员。

2.7 对于策略梯度的两种办法,蒙特卡洛强化学习和时序差分强化学习两种办法有什么分割和区别?

(1)两者的更新频率不同。蒙特卡洛强化学习办法是每一个回合更新一次,即须要经验残缺的状态序列后再更新,比方贪吃蛇游戏,贪吃蛇“死了”即游戏完结后再更新。而时序差分强化学习办法是每一步就更新一次,比方贪吃蛇游戏,贪吃蛇每挪动一次(或几次)就进行更新。相对来说,时序差分强化学习办法比蒙特卡洛强化学习办法更新的频率更高。

(2)时序差分强化学习办法可能在晓得一个小步后就进行学习,相比于蒙特卡洛强化学习办法,其更加疾速和灵便。

(3)具体例如:如果咱们要优化开车去公司的通勤工夫。对于此问题,每一次通勤,咱们将达到不同的路口。对于时序差分强化学习办法,其会对每一个通过的路口计算工夫,例如在路口 A 就开始更新预计达到路口 B、路口 C $\cdots \cdots$,以及达到公司的工夫;对于蒙特卡洛强化学习办法,其不会每通过一个路口就更新工夫,而是达到最终的目的地后,再批改达到每一个路口和达到公司对应的工夫。

2.8 请详细描述 REINFORCE 算法的计算过程。

首先咱们须要依据一个确定好的策略模型来输入每一个可能动作的概率,对于所有动作的概率,咱们应用采样办法(或者是随机的办法)抉择一个动作与环境进行交互,同时环境会给咱们反馈整个回合的数据。将此回合数据输出学习函数中,并依据回合数据进行损失函数的结构,通过 Adam 等优化器的优化,再更新咱们的策略模型。

3. 面试必知必答

3.1 友善的面试官:同学来吧,给我手动推导一下策略梯度公式的计算过程。

首先咱们的目标是最大化处分函数,即调整 $\theta$,使得冀望回报最大,能够用公式示意如下:

$$
J(\theta)=E_{\tau \sim p_{\theta(\tau)}}\left[\sum_tr(s_t,a_t)\right]
$$

其中 $\tau$ 示意从开始到完结的一条残缺轨迹。通常对于最大化问题,咱们能够应用梯度回升算法找到最大值,即

$$
\theta^* = \theta + \alpha\nabla J({\theta})
$$

所以咱们仅仅须要计算并更新 $\nabla J({\theta})$,也就是计算处分函数 $J({\theta})$ 对于 $\theta$ 的梯度,也就是策略梯度,计算方法如下:

$$
\nabla_{\theta}J(\theta) = \int {\nabla}_{\theta}p_{\theta}(\tau)r(\tau) \mathrm{d}{\tau}=\int p_{\theta}{\nabla}_{\theta} \mathrm{log}p_{\theta}(\tau)r(\tau)\mathrm{d}{\tau}=E_{\tau \sim p_{\theta}(\tau)}[{\nabla}_{\theta}\mathrm{log}p_{\theta}(\tau)r(\tau)]
$$

接着咱们持续开展,对于 $p_{\theta}(\tau)$,即 $p_{\theta}(\tau|{\theta})$:

$$
p_{\theta}(\tau|{\theta}) = p(s_1)\prod_{t=1}^T \pi_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t)
$$

取对数后为:

$$
\mathrm{log}p_{\theta}(\tau|{\theta}) = \mathrm{log}p(s_1)+\sum_{t=1}^T \mathrm{log}\pi_{\theta}(a_t|s_t)p(s_{t+1}|s_t,a_t)
$$

持续求导:

$$
\nabla \mathrm{log}p_{\theta}(\tau|{\theta}) = \sum_{t=1}^T \nabla_{\theta}\mathrm{log} \pi_{\theta}(a_t|s_t)
$$

代入第 3 个式子,能够将其化简为:

$$
\begin{aligned}
\nabla_{\theta}J(\theta)
&= E_{\tau \sim p_{\theta}(\tau)}[{\nabla}_{\theta}\mathrm{log}p_{\theta}(\tau)r(\tau)] \\
&= E_{\tau \sim p_{\theta}}[(\nabla_{\theta}\mathrm{log}\pi_{\theta}(a_t|s_t))(\sum_{t=1}^Tr(s_t,a_t))] \\
&= \frac{1}{N}\sum_{i=1}^N[(\sum_{t=1}^T\nabla_{\theta}\mathrm{log} \pi_{\theta}(a_{i,t}|s_{i,t}))(\sum_{t=1}^Nr(s_{i,t},a_{i,t}))]
\end{aligned}
$$

3.2 友善的面试官:能够说一下你所理解的基于策略梯度优化的技巧吗?

(1)减少基线:为了避免所有处分都为正,从而导致每一个状态和动作的变换,都会使得每一个变换的概率回升,咱们把处分减去一项 $b$,称 $b$ 为基线。当减去 $b$ 当前,就能够让处分 $R(\tau^n)-b$ 有正有负。如果失去的总处分 $R(\tau^n)$ 大于 $b$,就让它的概率回升。如果总处分小于 $b$,就算它是正的,值很小也是不好的,就须要让它的概率降落。如果总处分小于 $b$,就要让采取这个动作的处分降落,这样也合乎常理。然而应用基线会让原本处分很大的“动作”的处分变小,升高更新速率。

(2)指派适合的分数:首先,原始权重是整个回合的总处分。当初改成从某个工夫点 $t$ 开始,假如这个动作是在工夫点 $t$ 被执行的,那么从工夫点 $t$,始终到游戏完结所有处分的总和,才真的代表这个动作是好的还是不好的;接下来咱们再进一步,把将来的处分打一个折扣,这里咱们称由此失去的处分的和为折扣回报。

(3)综合以上两种技巧,咱们将其统称为劣势函数,用 $A$ 来代表劣势函数。劣势函数取决于状态和动作,即咱们需计算的是在某一个状态 $s$ 采取某一个动作 $a$ 的时候,劣势函数有多大。

更多优质内容请关注公号:汀丶人工智能

退出移动版