前言
本文内容来自于南京大学郭宪老师在博文视点学院录制的视频,课程仅9元地址,配套书籍为深入浅出强化学习 编程实战 郭宪地址。
正文
我们发现多臂赌博机执行一个动作之后,无论是选择摇臂1,摇臂2,还是摇臂3之后都会返回原来的状态,也就是说它的状态并没有改变,而右边的寻金币游戏,从1到2,智能体执行动作之后位置(状态)发生了变化,而强化学习就是寻找当前状态下最优的动作,或者说不同状态下最优动作合集(策略)。

从下图右可以看出,P和R都和s,a有关系,无模型就是因为缺P和R。

实际应用中,对于游戏一般用截取的图像信息作为s,但通常不能只用一帧图像作为s,比如说在大小球的游戏中,一帧图像,无法判断小球移动方向和球速,最起码要两帧,在实际应用中,为了提高精确度,一般用四帧图像作为s。AlphaGo中用过去八手双方棋局作为状态。


动作的定义

策略的定义:策略就是给定状态s时,动作集上的分布,比方说,找金币,智能体在状态5时,采用确定性策略,此时向西走概率为1,向其他方向为0,为改状态下的动作概率分布。

值函数定义:就是在策略Π下,智能体从状态s出发,用采用策略Π的累计回报的期望,简单理解,从状态s出发,不同的选择函数(策略,该策略是动作选择策略),会选择不同的动作,转移到不同的状态,最后会找到很多条路径(s,a),选则累计回报最大的路径。

值函数和行为值函数的区别:值函数只和s有关,行为值函数和s,a相关。但两者都是对策略Π的度量。

我们看一下寻找梦中的他游戏的环境设置,
状态空间:对下图进行10×10的网格划分也就是说会有100个不同的状态空间,所以最多会遍历100步,
动作空间:有上下左右四个选择
状态转移概率:此处主要说一下,鸳鸯在碰到障碍物时,不会移动到障碍物位置,而是继续保持原本状态,同样在即将出界时,也是保持原本状态。比方说,向东连续走两个格,第三个格有障碍物,不会移动到障碍物位置,而是保持原本位置不变。

立即回报:碰到障碍物时回报为-1,找到他时回报为1,正常移动回报为0
策略表示:使用了词典函数(待理解)
值函数:设置了10×10的矩阵,对应一百个表格(属于表格型强化学习)

环境渲染用到了pygame包,使用时共三个步骤
1.获取当前图片所在目录
2.获取图片文件名
3.下载图片,并转换成surface对象

最后要继续使用pygame绘制窗口
1.display.set_mode:绘制窗口幕布
2.blit:图片显示在窗口中
3.display.update:幕布更新函数

代码可从视频链接自取