写在前面
本次课程是参加百度飞桨7日打卡营活动的第四天笔记。
课程链接:https://aistudio.baidu.com/aistudio/education/group/info/1335
主要内容:策路近似、策路梯度
实践:Policy Gradient
一、Value-based 与 Policy-based 区别
Value-based | Policy-based | |
---|---|---|
区别1 | 间接方式求action | 直接一步到位求action |
区别2 | 确定性策略:优化到最优后,参数就固定下来了。那么输入一样的状态会输出一样的action | 随机策略:根据概率来采样,概率越大,动作越容易被采样到 |
智能体的选择是我们可以去优化的策略,但是环境随机性的概率我们是不能控制的。
为了使reward上升,我们引入梯度上升概念。
二、蒙特卡洛MC与时序差分TD
1.蒙特卡洛MC与时序差分TD区别
蒙特卡洛MC:算法完成一个episode之后,再那这个episode 的数据来去做一次 learn() 更新。注意这里的G_t(外加上标n) 是指当前步开始,我往后能拿到的收益之和。
时序差分TD:每个step都会进行learn() 更新,使用Q(外加上标n)来近似G_t(外加上标n)
2.Gt的计算
三、类比监督学习来理解Policy Gradient
手写数字识别,差不多算是神经网络里面的 “hello world”
用交叉熵来计算两个概率之间的差值。因为我们希望这两个动作概率分布之间的差距,所以计算得到的距离就可以作为 loss 传给神经网络里面的优化器进行优化。
四、REINFORCE 算法
1.REINFORCE 算法原理
2.REINFORCE 流程图
3.REINFORCE 程序实现
五、总结
课后作业
最后附上一部分的公式推导过程:
课后作业
请按照notebook中说明,完成4处代码的补充和调试。预期效果:分数从-21开始逐渐上涨收敛,Test reward的分数可以收敛到0分以上(说明打败对方了),越高越好。
1.课后作业AI Studio运行效果
参照课上老师讲解和 PARL/examples/tutorials 里面的内容,填写完整 Notebook,并运行代码。(自己运行没有能训练到reward的分数 > 0)
2.课后作业本地运行效果
(本地运行,自己也没有能训练到reward的分数 > 0,可能自己的CPU太菜了 -_- )
pip install paddlepaddle==1.6.3
pip install parl==1.3.1
pip install gym
git clone --depth=1 https://gitee.com/PaddlePaddle/PARL.git # 下载PARL代码库
dir PARL # 查看代码库根目录
cd PARL #进入到 PARL 文件夹
## Step3 运行QuickStart
python examples/tutorials/lesson4/policy_gradient_pong/train.py