深入浅出强化学习编程实战——第一章笔记

深入浅出强化学习编程实战(第一章) 一个极其简单的强化学习案例

1、图1.3中算法的理解:

        前文提到,每个手臂对应了一个金币的分布概率,有概率就会有均值,这个算法的核心在于找到一个均值最大的手臂,所以我们只需要通过采样得到每个手臂的均值,然后每次通过\varepsilon -greedy策略以1-\varepsilon的概率挑均值大的手笔,以\varepsilon的概率挑选剩下的动作。随着采样的进行,对每个手臂的均值的估计逐渐逼近真实均值,最后返回总的奖励R(a)。

        当训练足够多的次数之后,三条手臂的均值约等于真实的均值,此时训练的最终结果就是以较大概率摇动均值最大的手臂,以较小概率摇动均值较小的手臂。(我认为最优策略到最后应该没有探索的功能,因为到最后已经找到了最优手臂,这其实也是后面RL算法中涉及到的off-policy,这里不做展开讨论)

        这里的难点在与求解均值的时候采用了增量式求解方法,如下面公式所述。

2、\varepsilon -greedy策略将除去最优动作之外的其他动作看作是相等的动作,没有好坏之分,所以其他动作被选择的概率都是\frac{\varepsilon }{|A|},而最优动作的概率为1-\varepsilon +\frac{\varepsilon }{|A|}

怎么得到的?因为动作总数是|A|,所以其他动作的个数是|A|-1,所以1-\varepsilon +\frac{\varepsilon }{|A|}+\frac{\varepsilon }{|A|}*\left ( |A|-1 \right )=1-\varepsilon +\frac{\varepsilon }{|A|}+\varepsilon -\frac{\varepsilon }{|A|}=1,这就是各个动作概率的来历。

3、玻尔兹曼策略将除去最优动作之外的其他动作看成有好坏之分,所以其他动作的概率不一样,详见课本公式(1.2)

4、UCB策略,略

5、强化学习问题的代码实现主要涉及两部分:

第一部分是学习环境的搭建,因为强化学习的数据来自于Agent与环境的交互过程,所以正确合理的环境才可以得到正确的样本;

第二部分是强化学习的算法主体,根据与环境交互产生的数据,Agent进行不断的学习,最后找到最优策略。

6、编程思路

(1) 创建环境的类,首先定义一些属性,def __init__ 必须有,里面的变量在整个类里面可以看成是全局变量

(2)一个环境必须要有的是step()函数和reset()函数

(3)choose_action()函数和train()函数是RL算法的主体

(4)最后创建主函数,运行整个代码。

tips:创建主函数时,尝试使用 if __name__ == '__main__':的形式,规范化代码

(5)整体流程:主函数->训练->选择动作->进入环境,获得奖励->返回到训练函数主体->训练完毕,返回主函数输出

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值