一、实验目的与要求
实验目的:
1.熟悉强化学习相关概念;
2.了解表格解决算法;
3.了解探索与利用的平衡策略,运用强化学习解决问题;
二、实验内容与方法
实验内容(三选一):
1. 使用贪心算法和ϵ-贪心算法解决多臂老虎机问题;
2. 使用价值迭代算法完成网格世界问题;
3. 自选其它强化学习案例并实现;
三、实验步骤与过程
1、首先是多臂老虎机形式化表达
多臂老虎机问题可以表示为一个元组{A,R},A为动作集合,其中一个动作表示拉动一个拉杆。若多臂老虎机一共有K根拉杆,那动作空间就是集合{a1,...,ak};R为奖励概率分布,拉动每一根拉杆的动作a都对应一个奖励概率分布R(r|a),不同拉杆的奖励分布通常是不同的。假设每个时间步只能拉动一个拉杆,多臂老虎机的目标为最大化一段时间步T内累积的奖励。
2、ϵ-贪心算法
ϵ-贪婪算法在贪婪算法的基础上选择以往经验中期望奖励估值最大的那根拉杆(利用),以概率 随机选择一根拉杆(探索)。在ϵ-贪婪算法的具体实现中,我们可以令ϵ随时间衰减,即探索的概率将会不断降低。但是ϵ不会在有限的步数内衰减至0,因为基于有限步数观测的完全贪婪算法仍然是一个局部信息的贪婪算法。具体代码实现:
首先初始化拉动所有拉杆的期望奖励估值
然后定义每一步动作,如果比ϵ小则随机,不然就选择期望奖励最大的,得到本次奖励
3、累计懊悔计算与绘制
累积懊悔即操作 T 次拉杆后累积的懊悔总量,同时可以把每一时间步的累积函数绘制出来。生成累积懊悔随时间变化的图像。输入solvers是一个列表,列表中的每个元素是一种特定的策略。solver_names也是一个列表,存储每个策略的名称。如下:
4、整体框架
将根据策略选择动作、根据动作获取奖励和更新期望奖励估值放在 run_one_step() 函数中,由每个继承 Solver 类的策略具体实现。而更新累积懊悔和计数则直接放在主循环 run() 中。
四、实验结论或体会
本次以随机生成了一个6臂老虎机,获奖概率最大的拉杆设置为1号为例,然后可以当ϵ为0.01时的5000次后其累计懊悔图像,通过图像可以发现,在经历了开始的一小段时间后,ϵ-贪婪算法的累积懊悔几乎是线性增长的。最终得到其累计懊悔约为28.04
最后本次实验测试了ϵ为0.0001,0.01,0.1,0.25,0.5的五种情景,通过实验结果可以发现,基本上无论 ϵ 取值多少,在5000次累积懊悔都是线性增长的。在这个例子中,随着 ϵ 的增大,累积懊悔增长的速率也会增大。
总结与体会:
本次实验使用ϵ-贪心算法解决多臂老虎机问题,去思考了其表现方式,累积懊悔分析等等,深度学习了强化学习相关概念,了解探索与利用的平衡策略,运用强化学习解决问题,总体感觉还是不错的。