笔记:强化学习 策略梯度算法

Q Learning ,SARSA,DQN 本质上都是学习一个价值函数 Q函数。

在环境决策时 需要首先确定当前的状态,然后根据Q(s,a)选择一个价值较高的动作去执行

策略梯度算法

策略梯度算法和他们都不同。

他不再去学习价值函数 Q函数 ,而是直接通过模型 比如神经网络 输入需要采取的动作

以Cartpole游戏为例,平台上面有一个直立的杆,我们不断左右移动平台,每一个时刻都可以获得奖励reward。

终止条件为木杆倒下(倾斜一定角度这里假如是15度)

 

笔记:强化学习 策略梯度算法

 使用策略梯度算法,在策略网络(Policy Network)中输入的是当前的状态,这里输入的是可以代表平台和杆坐标的4维向量。

而输出是当前应采取的动作。

输出的动作有两种表示方式:

1输出动作的本身

2输出采取某个动作的概率

如果用s表示当前状态,π表示策略网络  那么输出的动作可以表示为a=π(s),采取某个动作的概率可以表示为p(a|s)= π(s)

在Cartpole问题中 采取后一种表示方法 用π(s) 表示向右移动的概率,如果在某个状态s0 网络输出π(s0)=0.9 那么有90%向右移动 有10概率向左移动。

训练策略网络

1原理

如果我们知道在si状态下,采取 正确的动作ai,那么策略网络输出的π(si) 即 p(ai| si)应该很大。

我们使用优化算法 是这个 p(ai| si) 概率的值 极大化 这就是我们的目标 就是 输出动作的准确度 肯定性更大 

我们一般使用交叉熵损失 

笔记:强化学习 策略梯度算法

通过极小化这个损失L的值来训练网络

2存在的问题

我们并不知道s1状态对应的正确动作,只知道在s1状态下采取了a1的动作(网络输出的动作,但不一定就是正确的动作)

并获得了ri奖励。在训练网络时。需要为每一个ai指定一个值Ai 这个Ai一般被称为Advantage,当Ai>0时,表示动作ai是一个正确的动作,相反,Ai<0表示动作ai是一个错误的动作

A的理解:

A越大表示对应的动作越正确,带来的价值越大,A越小说明带来的负面效果越多 就是用A的大小来衡量采取动作的正确性

A可以正也可以负 A>0 正面的程度  A=100 的正确价值>A =10 的正确价值

A<0 负面程度 A = -100 的负面价值 > A =-10 的负面价值 越小负面效果越多。

引入A之后的优化:

我们优化算法的目标变成

 笔记:强化学习 策略梯度算法

当A>0 时 相当于调正网络使P(ai|si)的更大 那么下次si状态下 采取ai概率会更大。

当A<0时  相当于调正网络使P(ai|si)的更小 那么下次si状态下 采取ai概率会更小。

怎么为动作分配Ai?

这里采取的是期望奖励的方法来标记Ai 即笔记:强化学习 策略梯度算法

其中γ 为‘折扣因子 ’  在Cartpole 游戏中 由于每一时刻的奖励都为1 这里期望奖励就变成了 笔记:强化学习 策略梯度算法

其中T为游戏进行的总时间 如果游戏结束的很快 那么会得到很低的Ai 如果游戏进行的时间比较长那么Ai的值 会比较大。