李宏毅强化学习个人笔记 - 基于策略的方法(学习actor)
基于策略的方法,也就是学习 actor。换言之,也就是学习一个策略函数

将神经网络作为 actor
- 神经网络擅长拟合函数
- 网络输入:机器的观测表示成向量或矩阵;
- 网络输出:每个动作对应输出层的一个神经元;

神经网络相较于查表的作为 actor 的好处
有“采样”的步骤,可以带来更多变的决策。譬如猜拳,会随机出锤子剪刀布。
譬如上面的打飞机,无法穷举所有的像素值,这种情况下建立表不现实。
神经网络泛化性好,可以举一反三。就算有些画面机器完全没有看过,也能够得到较好的结果(动作)。
决定 actor 的好坏
回顾监督学习:用 loss 来刻画所学到函数的质量。
- 求网络参数
使得能够最小化总误差 - 或者说,使得预测分布与目标(target)越近越好
给定具有网络参数
- 每一步可以记为三元组:(观测, 动作, 奖励)
- 总奖励:
- 不是要优化某一步的奖励,而是要优化总的奖励
- 就算用同样的参数
,得到的奖励也会不同- 由于 actor 的动作是通过采样得到的,所以具有一定随机性
- 环境本身也会具有随机性
- 故而,
为一个随机变量 - 记
为 的期望,该期望值衡量了 actor( )的好坏。希望该期望越大越好
- 一局游戏(episode)可被视为轨迹(trajectory)
- 此时可将总奖励记为
- 只选择一个 actor 来玩游戏的话,纵使可能的结果会有许多种,但是最后只会看到一种游戏结果(只被采样到一个)
- 每个轨迹可能被采样的概率由 actor 的参数
: (为什么这里用大写的 P?因为 注意到 是一个随机变量) - 有些游戏场景会较常出现,有些场景会较少出现。
- 此时累积奖励的期望可被写为
- 也就是对所有游戏的可能
求期望 - 当然穷举所有的
不可能,所以一般是用 actor 玩 次游戏,得到 个不同的轨迹 ,也就是说从 中采样 次(采样出的 次数与概率成正比) - 也就是说,
- 每个轨迹可能被采样的概率由 actor 的参数
选一个最好的函数(actor)
问题描述:
找参数
其中
方法:梯度上升(由于求的是最大化)
譬如,假设
梯度上升的实际计算
由于
那么
由此可见:累积奖励
再者,
继续,让
然后就能写成:
然后因为看到了求和号为
接下来的问题,就是如何计算梯度
- 游戏的开局状态
有可能不同 - 采取动作
取决于开局状态 和模型参数 - 采取动作
后,环境跳到状态 也有一个概率在这里,以及奖励 也会具有一定随机性 与 actor 没关系 与 actor 有关系
常用技巧:概率相乘→对数概率相加,这一点其实也因为我们恰好就需要算
又有因为我们求的是梯度
也就是说,累积奖励期望的梯度
上式就是大名鼎鼎的 策略梯度(policy gradient)。
上面公式的意义
- 和深度学习中的一样,这里我们习惯用下标表示 单个样本中某个值在序列中的标号,用上标表示 样本的标号
:在第 次游戏的轨迹中所得到的累积奖励 :看到 产生 的概率的对数梯度- 假设在第
次玩游戏的过程中产生了轨迹 ,看到状态 时采取动作 ,最后导致累积奖励 为正的,那么我们就会调 使得 变大; - 反之,如果最后导致累积奖励
为负的,那么我们就会调 使得 变小; - 上面考虑整个轨迹
的累积奖励 ,而非单步的立即奖励 ,这点十分重要(假设仅考虑单步的立即奖励的话,那么譬如像打飞机,只会调大打飞机这个动作,而不会调大挪位置的动作)
为什么要对概率取 log
假设能在某些轨迹
- 1 次采取 a 这个动作,得到奖励为 2;
- 3 次采取 b 这个动作,得到奖励为 1。
在更新参数的时候,我们训练出来的 actor 偏好出现次数比较多的,即使那个动作并没有比较好。
譬如去调高 b,actor 的表现也未必好到哪里去;而因为 a 出现得太罕见,所以要最大化的东西对目标的影响也小。
这个时候,除掉概率就能够消除采样频率不同而造成更新有偏好的影响。
为什么奖励不能都为正
打飞机里面确实有可能出现这种情况。
在理想情况下确实不会出现问题。出现概率大的和小的一起增加,最后由于概率要对预测取 softmax,所以大的会增加比较小,小的会增加比较大。
但是实际上,我们做的是采样,也就是只会采到部分动作。

譬如上例中,我们只采样到 b 和 c。
这个时候,我们只会去调高这部分动作的,而 a 的动作没有被采样到,不知道它的
所以希望
实操
给定 actor 的参数
然后利用策略梯度与梯度上升更新参数,然后继续用更新后的参数去玩游戏……
但是
回顾分类问题

这里分类标签都是 one-hot 的,除了一个是 1,其他都是 0。要最小化
所以实际上就是在最大化
所以更新的时候也就是在做
希望预测结果与目标越接近越好
回到策略梯度
式子就是
也就是说,现在采样出
而且,接近程度根据累积奖励
比较花时间:需要更新→采样→更新→采样→……