Policy Gradient 是一种强化学习的优化方法
Policy gradient 是 RL 中另外一个大家族, 他不像 Value-based 方法 (Q learning, Sarsa), 但他也要接受环境信息 (observation), 不同的是他要输出不是 action 的 value, 而是具体的那一个 action, 这样 policy gradient 就跳过了 value 这个阶段. 而且个人认为 Policy gradient 最大的一个优势是: 输出的这个 action 可以是一个连续的值, 之前我们说到的 value-based 方法输出的都是不连续的值, 然后再选择值最大的 action. 而 policy gradient 可以在一个连续分布上选取 action.
而value-based的方法,比如Q-learning, 它如果在无穷多个动作中计算价值从而选择行为的话,它可吃不消
强化学习的基本结构是一个由Agent(相当于我们的模型)和Environment(所处状态)组成的结构。
Env表示环境,Actor即为Agent:
上面实际上就是对一系列操作进行了抽象描述。如果以玩游戏为例说明,我们(Agent)通过观察游戏(Environment)的运行情况(State),选择接下来要执行的操作(Action),游戏往往还会反馈给我们我们的得分(Rewards)。
在不同的状态(State)采取的动作 Action 也就是我们所说的策略 Policy 。常用符号 Π 来表示策略。
现在,我们大概能够猜测到了,Policy Gradient就是基于我们的策略Policy来做梯度下降从而优化我们的模型。
我们会希望Agent能够尽量能够执行较好的动作。那么我们会使用执行了该动作后得到的反馈reward来判定本次的策略好坏。
如图所示的马里奥,在这个游戏运行状态下(state),假设我们可以选择的操作(policy)有继续向前走和跳起两种。 假设我们执行的操作为继续向前走,然后会碰到敌人,此时马里奥让自己变小或死亡,这个时候系统会得到比较不好的结果,返回的reward值会较小甚至是负的。而假如我们选择起跳,那么我们会获得金币,并且还会将敌人踩死或是跳过,此时得到的结果则是较好的,返回的reward值会是较大的正数。
我们会希望Agent所做的Policy所做出来的反馈reward一直都会比较高。也就是说我们想要训练我们的Agent倾向于做出那些reward较高的动作。
举例来说
policy gradient是没有误差的,但是它的确是在进行某种反向传递。这种反向传递的目的是让这次被选中的行为更有可能的在下一次被发生。那么怎么判断一个行为是不是应该增加被选中的概率呢——通过reward
观测的信息通过神经网络分析选出了左边的行为
我们直接进行反向传递,使下一次被选中的几率增加
但是奖惩信息告诉我们
这次的行为不是好的,那我们动作可能性增加的幅度随之要减小(但是还是增加,注意)
这样就能靠奖励来左右神经网络的反向传递
假如第二次的观测信息让神经网络选择了右边的行为
随之要进行反向传递,使右边的行为下次能够被多选一点
这时奖励信息来了,告诉我们这个行为是好的
而我们就让这次反向传递的时候加大力度,让它下一次被多选的幅度更加猛烈
这就是policy gradient的核心思想了