三步

image.png

  • function with unknown(Policy Network,输出应采取的行动)
    • 网络输出的是采取各个行动的几率,一般会采用sample而不是直接采取输出概率最大的行动

image.png

  • Define Loss
    • Loss其实上就可以取负的reward总和
  • Optimization
    • 定义迹RL&Policy Gradient - 图3,即一连串环境-行为的序列
    • 定义一个function名叫Reward,输入为RL&Policy Gradient - 图4,输出为RL&Policy Gradient - 图5,即得分
    • RL&Policy Gradient - 图6,即total reward总得分
    • 训练的难点在于,Env(如沙盒游戏)、Reward(评分机制)不是一个网络,相当于黑盒,且可能具有随机性;actor可由网络实现,但实际执行的动作是由输出结果概率sample得到的,具有随机性
    • 它的思想实际上与gan有异曲同工之妙,actor其实就类似于生成器,env和reward就类似于判别器。但区别在于判别器是一个网络,它是可以被训练的,但env和reward是固定的

image.png

Policy Gradient

引入

  • 给定一个场景,我们需要把actor的输出与ground truth做比较,计算cross entropy损失,随后进行优化

image.png

  • 可以引入负采样技术,对于正样本,我们希望交叉熵损失越小越好;对于负样本,我们希望交叉熵损失越大越好。

image.png

  • 可以为训练资料中每个行为加上权重,这样一来,权重越大就表示我们越希望才去这样的行为;权重越小就表示我们越不希望这种出现这种行为

image.png

错误范例

  • 直接把Reward的输出RL&Policy Gradient - 图11作为RL&Policy Gradient - 图12进行训练
  • 这样的策略是急功近利的,因为模型仅仅会学习到当前情况下应当采取的操作,而不是考虑整个序列,有时需要作出牺牲来获得更长远的利益

image.png

V1

  • RL&Policy Gradient - 图14
    • 也就是说现在我们需要把做出行动之后的所有得分之和作为最后的score,这样就解决了之前过于短视的问题

image.png

V2

  • RL&Policy Gradient - 图16
    • 之前的方案存在一个问题,那就是一个动作之后每一个接下来的动作得到的reward对它的reward影响都是相同的
    • 那么现实情况显然不是的,距离当前动作越远的reward对当前reward的贡献应当越小才对。因此我们需要为之后的每一个reward乘上一个系数的乘方,该系数小于0

image.png

V3

  • 加入标准化操作,引入baseline,目的是为了让RL&Policy Gradient - 图18有正有负

image.png

总结

  • 重点在于,每当进行一次梯度下降,就要重新收集一次资料,非常耗时间

image.png