文章目录
前言
菜鸡要写整个强化学习的资料啦,这个资料是适合需要动手敲代码的童鞋,欢迎大家评论区讨论哦,(文章不允许抄袭,因为是菜鸡一个字一个字总结的心血,可以转载,但必须指明出处,谢谢大家)
已经先录制了视频,大家可以前去给菜鸡一键三连哦,爱你们
链接:https://www.bilibili.com/video/BV1G64y1e7A4?from=search&seid=9088772980958467991&spm_id_from=333.337.0.0(可以直接从P5看!)
宝子们,可能bilibili看了很多的关于强化学习的课程,但上面的课程更偏向理论知识,因此菜鸡用大家更熟悉的语言和例子给大家分享强化学习和敲代码,可能有些关于公式和理论中比较深得知识点没有讲到,因为考虑到大家的实际可操作性,就把必须要了解的内容和大家分享,如果能够将菜鸡分享的知识点看完,然后再去哔哩哔哩看周博磊老师的强化学习课程的视频,会有一个更深得理解哒(悄咪咪说,我第一次看周老师的视频,就有点迷糊,哈哈哈,坚持学习哦,没有讲好的地方大家见谅,宝子们有问题可以评论区留言哦)
强化学习通用工作方式(敲重点!!)
这个图 超级 重要一定要清楚啊!!!!!
几个重要概念
Agent:神经网络 ,可以看成人的大脑
Evironment:Agent所处的环境,即要进行的任何学习任务,都从环境中学习
state:Agent对的环境的观察,主观性质的
action:Agent对环境观察后的状态会做出动作即action
reward:action会对环境产生影响,影响有好有坏,故环境会根据这个影响对Agent反馈回报(包含正回报或负回报)
工作流程
-
Agent先对环境有一个观察
-
根据观察到的状态思考后做出动作
-
动作会对环境产生影响,导致环境发生变化
-
环境对变化进行评估,好的变化就给agent正回报,坏的变化就给agent负回报
生活例子——司机学习红绿灯
agent: 司机, 环境:路况, 任务: 司机学会在红绿灯的环境中开车
强化学习流程描述:
司机处在十字路口,前面存在一个红绿灯,初始情况,司机对于红灯停绿灯行没有智商。第一次,司机观察到前面有个红绿灯,且为红灯状态,司机对于这个状态做出了个随机动作——继续前行,这个动作对于整个路况来说,造成了危险,故环境给司机负回报,第二次,司机观察到前面为绿灯状态,依旧选择了——继续前行,环境给司机正回报,这样不断的循环,最后司机逐渐有了一个对于红绿灯的智商
就和人一样呀,做错事受到惩罚,你就长记性了,不得犯了😁
如果想使用强化学习,就可以通过能否带入这个通用工作方式进行判断
模型通用设计要点(每个模型都需要注重的点)
强化学习的唯一目标:奖励最大化
设计要点:1、节点奖励;2、探索机制
举例1 : 如何设计节点奖励?
任务: 从N到M,如何设计奖励保证走的最短路径的同时,获得总奖励最大(一个红色的点表示一个走一步的节点)?
思路分析: “最短路径的同时,获得奖励最大”那就 保证中间那条路径总奖励最大 。假如是走一步给回报10,则中间路径不是奖励最大。假如采用走一步给回报-10,满足我们所需求的。
举例2 : 探索机制是什么?
小学的时候,第一次上学,从家到学校,选择了其中一条路径,你心里默认认为这条路就是最短的,至此你就一直走这条路,某一天你突发奇想,走了另一天路,发现这条路更短,你就认定这条路就是最短的了,这个就是一个探索的过程,强化学习为了避免出现一直选择目前最优解,不去尝试是否存在其他最优,增加了这种探索机制,按照某个频率,必须去探索其他的的选择方式
错误案例: 奖励设计错误,导致的奇怪结果
任务: 狼在最短的时间中抓到更多的羊,
错误奖励机制: 狼抓住羊 +1;狼撞石头 -1;时间消耗 -0.1/1min
训练结果: 狼一头撞在石头上
分析原因: 狼在抓羊的过程中,羊会进行乱跑,如果狼一直抓不到羊的话,那么随着时间的流逝负回报越来越大,超过了狼一头撞在石头上,还不如开始状态一头撞在石头上,所以最后狼都选择了一头撞在石头上
总结: 大家一定要设计好奖励,否则就和这个案例一样,得到这样稀奇古怪的结果
强化学习适用场景
场景:
- 规划(如下棋)
- 决策(如无人驾驶)
- 博弈(如玩斗地主)
场景之间可以交叉情况,如下棋这个问题既属于规划问题,又属于博弈问题
马尔科夫
马尔可夫链
状态:
一周有7天,
每天的天气就是状态。比如上图中的星期一是晴天状态;星期二是雷电雨状态;星期三是晴天状态……
每天的情绪就是状态。星期一是高兴;星期二是高兴;星期三是不高兴……
这些就属于状态
马尔可夫链概念:状态的转移 只与前一个状态有关,与其他状态无关
和正常思维方式不同: 今天的天气状态可能受前面几天天气状态影响
马尔科夫链: 今天的天气状态只和昨天有关
马尔可夫随机过程
马尔科夫随机过程概念: 状态之间按某个概率分布进行转移
举例: 昨天的天气状态是晴天,不能说今天的天气状态肯定是晴天,只能所今天是晴天的可能性更大。今天是晴天的状态可能为0.4,是雨天状态的可能性为0.3,是雷雨天的可能性为0.3
马尔可夫决策过程(敲重点!!)
马尔科夫决策过程概念: 状态之间的转移由动作导致,每执行一次动作,都有一个奖励来评价
当你放学回家后,先处于回到家中的状态,现在有两个动作可以选择,如果选择做作业的动作,那么现在的状态就是正在写作业;如果选择看电视的动作,那么现在的状态就是正在看电视。
执行动作,我们会给相应的奖励,学生放学回家第一时间,如果选择做作业,这个动作是一个好的动作,我们就给这个动作正奖励;如果选择看电视,这个动作对于学生来说是不好的动作,我们就给这个动作负奖励
随机过程和决策过程的联系
随机过程的关键是状态的转移是按照一定的概率进行转移,而状态的转移是由动作导致的,如上图例子所示,选择做作业这个动作的概率是0.6,选择看电视的这个动作概率是0.4,如果是让实现孩子爱学习这个任务,那就是提高做选择作业动作的概率
贝尔曼方程
了解贝尔曼方程之前,先要了解几个重要的概念,这些概念特别重要!!!关于贝尔曼方程的公式推导过程,目前不需要深入去了解哦
回报
符号: R或者r
在4.3中提到的给执行动作的奖励,这个奖励就是回报也是在2.1中reward,一句话概括:状态转移由动作导致,给好的动作正回报,给坏的动作负回报(好坏评定由动作对于你任务的影响)
总回报
符号: G
- 总回报针对于某个状态来说;
- 总回报等于当前状态(如上图)执行动作转移到下一个状态,得到的奖励R1,和后面所有的R之和
- γ是什么见下面
折扣系数——γ
在计算总回报中,出现γ折扣系数,是对相对于当前状态来说没有发生的状态进行打折,因为现在处于当前状态,未来的回报是没有真实得到的,故需要打折
- 取值范围:0~1 (越到后面的奖励,指数级的减小)
- 0←γ:后面的奖励趋近于0,即更加注重现在的奖励
- γ→1:更加注重后面的奖励,更加关注未来的奖励
价值
符号: V
产生原因: 对某个状态用总回报表示是不稳定的
解决办法: 在N节点(状态),有三条路径可以选择,那么即有3种总回报,该选择哪一个总回报来表示N这个状态呢?选择最大或者最小都是过于绝对了,前面提到状态之间转移是存在一定的概率的,故通过对每条路径在该状态的总回报进行加权平均,就能很好的解决这个问题,最后得到的这个就叫价值
用途: 在后面的部分常用模型中会使用到根据价值进行决策
贝尔曼方程
核心: 计算价值的公式
公式:
总回报计算公式(敲重点!!)
公式的推导过程大家不需要详细的了解,背住就可以了(感兴趣的可以自己去了解了解)
方法一: 蒙特卡洛法——MC
当前状态的总回报等于当即执行动作的奖励加上未来的奖励之和进行一个打折
特点:任务必须进行到终点或者人为的给定终点,因为计算某个状态的回报,必须加上未来的回报并打折,所以这个也是它的一个缺点
方法二: 时间差分法——TD
当前状态的总回报等于当即执行动作的奖励加上下一个状态的总回报并进行打折
TD与MC的对比:
MC | 偏差小 | 方差大 |
---|---|---|
TD | 偏差大 | 方差小 |
什么是偏差?什么是方差?(理解不了的,直接背下来就可以啦)
下面举一个例子理解,对一个真实点进行回归
偏差: 预测点的中间值和真实点的差距
MC要进行到终点才能计算总回报,故每个值都是真实的,故训练的时候预测的点和真实值差距更小,故偏差更小;TD计算总回报的时候,下一个状态的的总回报计算可能存在误差,故计算当前状态的总回报更会误差累积,在训练时更加会导致预测点和真实点之间差距更大
方差: 预测点内部的一个波动(抖动)
MC需要计算到终点,计算的步长很长,波动很大,而TD只需要计算到下一个状态