您当前的位置:首页 > IT编程 > TensorFlow
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch |

自学教程:强化学习:策略梯度算法(Policy Gradient)

51自学网 2020-01-11 23:19:40
  TensorFlow
这篇教程强化学习:策略梯度算法(Policy Gradient)写得很实用,希望能帮到您。

强化学习:策略梯度算法(Policy Gradient)

 

强化学习:策略梯度算法

策略梯度的公式推导

​ 学习参数化表示的策略(Parameterized policy), 输入环境状态[公式]来选择动作[公式],这里使用[公式]来表示策略的参数向量,因此策略函数表示为

[公式]

其中时刻[公式],环境状态为[公式],参数为[公式],输出动作[公式]的概率为[公式]

因此生成马尔可夫决策过程的一个轨迹(trajectory)[公式]的概率为

[公式]

更一般地,将策略[公式]下生成轨迹[公式]的概率表示为

[公式]

​ 策略梯度方法的目标就是找到一组最佳的参数[公式]来表示策略函数使得累计奖励的期望最大,即

[公式]

​ 令累积奖励为[公式],设定优化目标[公式]优化策略参数使得奖励的期望值最大

[公式]

[公式]求梯度可得策略梯度[公式],公式 (6) 的推导过程请参见链接

[公式]

将策略 (1) 两边取 log 对数,然后带入梯度表达式 (6) ,推导策略梯度的公式请参考下图

根据策略[公式]生成[公式]条轨迹如图所示

利用上图[公式]条轨迹的经验平均对策略梯度进行逼近,有公式 (7) (8)

[公式]

[公式]

其中[公式]为轨迹的数量,[公式]为一条轨迹的长度,假设已知策略[公式],那么就可以计算出策略的梯度[公式]。另一方面,根据策略[公式],在仿真环境[公式]中生成[公式]条轨迹的数据,即可计算出 (8),根据梯度上升 对参数[公式]进行一步更新,如公式 (9)

[公式]

总结下来就是:

  • 增加带来正激励的概率
  • 减少带来负激励的概率

策略梯度蒙特卡罗 REINFORCE 算法

根据公式 (7) (8) (9) 可得蒙特卡罗 REINFORCE 算法流程

写成伪代码形式

Example: 高斯策略梯度算法

策略属于概率分布,可以用神经网络来表示这种概率分布,输入状态[公式],神经网络将[公式]映射成向量[公式],然后网络输出概率[公式]和动作采样值[公式],令[公式]为 log 标准差。

[公式]

其中[公式]

在连续的运动空间中,通常使用高斯策略,假设方差为[公式],策略是高斯的,输入状态[公式]输出动作[公式]服从[公式],那么 log 策略梯度为

[公式]

在实际使用高斯策略时,用神经网络来表示,即令[公式],那么策略[公式]

[公式]

策略的梯度

[公式]

然后反向传播,更新网络参数

[公式]

参考链接


一文看懂各种神经网络优化算法:从梯度下降到Adam方法
常见的关于momentum的误解(上)
51自学网,即我要自学网,自学EXCEL、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。
京ICP备13026421号-1