ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

强化学习总结

2021-12-30 13:58:40  阅读:187  来源: 互联网

标签:总结 状态 动作 一个 学习 智能 强化


简介

强化学习(Reinforcement Learning),属于一种机器学习架构(范式)

强化学习是通过让智能体(Agent)不断地对所处环境(Environment)进行探索和开发并根据反馈的回报(Reward)进行的一种经验学习

其中agent是我们要学习的对象,环境则是对agent的一种外在的约束,agent可以在这个环境内进行探索和开发,而回报则是环境对agent最直接的反馈

例子

我们先看一个简单的例子:
在这里插入图片描述
整个决策的状态转移如上图所示
一个回收机器人是一个智能体,其只有两个状态,high表示电量高low表示电量低


其可选择的动作有三个,分别是等待wait充电recharge以及搜索垃圾search。


当电量high时,其可以选择动作wait,此时电量有1的概率保持不变,当选择搜索时,会有一定概率1 − α电量下降到low状态,因为高电量不需要充电,因此没有充电的动作。


当状态为low时,其有三种选择,继续搜索可能会有1 -β的概率导致没有电,此时强制充电到高电量,但会获得**-3的收益,当选择wait时,则有1的概率保持不变**,当选择充电时,则会有1的概率到达高电量状态。

分类

强化学习大体分为 policy base的强化学习 和 value base的强化学习,其他分类如下:

模型:一个可选的要素,是对环境反应模式的模拟:有模型动态规划/无模型(一般)


策略:同轨/离轨 用于生成采样数据的策略和用于实际决策的待评估和改进策略是否相同

学习目标:Value-based:状态St条件下,选出能够让状态动作价值最大的动作At Policy-based:基于策略的强化学习,例如策略梯度、基于函数逼近的强化学习等

概念

通过上面垃圾回收机器人的例子我们能大概的理解强化学习的整个过程,但对于初学者来说可能还是有点懵懵的,这到底在说什么呢,那么再通过一个抽象的模型介绍强化学习中涉及到的概念:


在这里插入图片描述
强化学习的本质是让智能体通过尝试执行相应的决策学习某个状态下的经验,其目标则是
最大化累计价值
最大化累计价值
最大化累计价值
(重要的事情说三遍)


我们来看看图中所涉及的概念:

环境:客观存在的一个约束,与环境依附的一个概念是状态s,一个环境拥有若干个状态,每个状态st是环境的一个具体表现。

例如围棋中,棋盘就是一个环境,每次下棋只能在这个约束范围内完成。与环境依附的一个概念是状态(State),一个环境拥有若干个状态,每个状态时环境的一个具体表现。例如标准围棋棋盘是一个环境,而17*17个格子则会反应不同的状态,所谓的棋局就是对应一个状态。状态记做 s,某一个时刻形成的状态记做 st

Agent:智能体是强化学习的对象,可以是人、动物,机器人

以围棋为例,每当一个人落子后,则会形成一个新的棋局(状态),这个局面会影响智能体对接下来落子的地方

Episode/ Discount:幕/折扣

例如在围棋中,从游戏开始,一直到可以分出胜负时(例如已经无子可下等情况),这个下棋的过程(落子序列)被称为一幕,再例如智能体在玩一个游戏时 ,每一局可以被认为一个幕。而这种可以以幕为单位的任务被称为分幕式任务

折扣:在有些任务中,对时间要求非常高,其认为时间拖得越长,获得的局部收益就会越少,这种设定比较符合现实生活,例如走迷宫游戏,我们希望尽可能的最早能够走出来,而不是一直在里面转悠

策略:策略则是智能体在当前状态下所作出的一个动作a π(at|st) 条件概率

通常意义上讲,策略是基于当前状态所作出的动作,比如下五子棋时,当对方黑子出现三连时,基于这个状态,白子所作出的策略应该是堵住黑子

状态转移:衡量基于状态st及做出的动作at 之后,下一个状态是st+1的概率分布

一般来说,做出一个动作后并非能够达到目标状态,例如在棋盘中随机游走,在每个格子均可以上下左右,而当在边缘或角落时,总会有的动作执行后便出了棋盘,因此在执行这些动作后反应应为保持不动

回报:当状态转移到新的状态st时,环境会回馈智能体一个奖励rt,这个奖励即为单步回报


了解完这些基本概念,我们再次回顾一下
强化学习的本质是让智能体通过尝试执行相应的决策学习某个状态下的经验,其目标则是最大化累计价值

那么这个价值具体指的是什么呢?

在这里插入图片描述
这两个价值至关重要就是强化学习的核心

开发与探索/ϵ-贪心

我们回顾这张图,其中的策略分为开发和探索,具体是什么而具体如何衡量选择开发与探索的策略呢?

在这里插入图片描述

开发:在强化学习中,开发指智能体在已知的所有(状态-动作)二元组分布中,本着“最大化动作价值”的原则选择最优的动作。换句话说,当智能体从已知的动作中进行选择时,我们称此为开发(或利用)

探索:指智能体在已知的(状态-动作)二元组分布之外,选择其他未知的动作

开发对于最大化当前时刻期望收益是正确的做法,而探索则是从长远角度讲可能带来最大化总收益。然而不幸的是,在某一个状态下,智能体只能执行一个动作,要么开发,要么探索,二者无法同时进行,因此这就是强化学习重点突出的矛盾——权衡开发与探索


其中选择开发与探索的其中一种算法就是ϵ-贪心,具体公式如下:
在这里插入图片描述
ϵ概率选择非贪心的动作 ;另外还有1−ϵ的概率选择一个贪心策略 。

在某一个时刻,总会有一个动作是智能体认为的最优动作

因此这个动作本身有ϵ /|A|的概率探索阶段被选择,还有1 − ϵ概率开发阶段被选择

值函数近似

State过多时求每一个Q会很慢,所以用一个函数来估计值函数,w表示引入的参数


现在让我们来假设我们在下围棋,每下一个子就是一种状态,那么这些状态就非常多了,如果在程序中要用一个表格来表另外,当状态不是离散的时候,就无法用表格来表示了。所以,我们需要另外的方法来表示状态与状态对应的值函数示状态与状态对应的值函数的话,那么内存就远远不够用了。


s和a的形式是什么,一个向量吗?如果是监督学习来学习出参数w,那么我们需要label,也就是真正的v值,但是我们如何得到真正的v值呢?
在这里插入图片描述

DQN

在这里插入图片描述

DQN使用神经网络来近似值函数,即神经网络的输入是state s 输出是Q(s , a),通过神经网络计算出值函数后,DQN使用ϵ−greedy策略来输出action
在这里插入图片描述
强化学习是一个反复迭代的过程,每一次迭代要解决两个问题:给定一个策略求值函数,和根据值函数来更新策略
在这里插入图片描述
在值函数近似中,我们都是使用target来替代真实的值函数,即Loss中的真实值。
在这里插入图片描述
在这里插入图片描述
一个agent常常会在环境的同一个区域内停留一段时间,因此它的经验在这段时间内会非常相似。这会给学习算法引入一些偏差(bias)。它会为了环境中的这个区域调整策略,但是当agent不在这个区域之后效果就不好了。为了解决这个问题,可以用replay memory;不是用最近的经验来学习,而是用过去的经验(最近的但不是那么近的,recent and not so recent)
在这里插入图片描述

采样

蒙特卡罗采样
算法的基本思路就是首先生成一系列采样序列,遍历每一个采样序列,从最后一时刻向后遍历状态,并将首次访问的状态统计起来,最后将所有采样序列的状态价值计算均值。
在这里插入图片描述
时序差分方法采样
在这里插入图片描述

时序差分法是结合了动态规划和蒙特卡洛两者思想,使用蒙特卡洛的采样方法,在经验中学习。但在每一步执行过程中,并不是等待完整的序列,而是边采样边学习。本文描述的是TD(0)单步法,其自举的范围只有一步,其实只自举一步未免显得智能体的眼光很短钱,事实上,蒙特卡洛也是一种特殊的时序差分,只不过其自举的是整个序列,虽然眼光最长远,但很耗时间。那有没有介于两个极端之间的呢?有!它就是TD(n),叫做n步自举法,也叫做多步引导法,其描述的则是多个步之后的价值作为当前时刻的估计值,简单的理解则是估计的范围不长也不短,眼光恰当正好,在一般情况下,我们也比较推荐使用TD(0)和TD(n)。
在这里插入图片描述

时序差分法中,我们有同轨和离轨两种策略,在值函数近似中,我们都是使用target来替代真实的值函数,即Loss中的真实值

例子

在这里插入图片描述
在这里插入图片描述
每一个状态下的预测时间,与实际时间的对比,虚线为实际时间,实线为预测时间。左图是蒙特卡洛的预测过程,其只有回到家之后才知道之前每个状态下的时间(相当于价值),右图则是根据下一个状态的时间预测当前状态的时间

总结

这张图可以很清晰的描述我们学过的几种方法。左上角表示的是时序差分法,时序差分法表示的是在某一个时刻的状态,通过观察执行某一个动作后转移到下一个时刻的状态所得到的即时收益与下一时刻状态的带折扣价值函数作为当前状态的估计值,也就是所谓的两次近似。值得注意的是,时序差分在这里通常表示为单步的,因此呈现出的就是一条单步的直线。在之前的学习中我们也知道,单步时序差分可能会造成最大化误差问题。当单步延长时,便是我们所说的多步引导(n步自举),如果n是整个一幕的长度,则表示的是蒙特卡洛,对应图中则是由左上到左下。蒙特卡洛则是从某一时刻开始,一直到结束时刻才能获得该时刻状态的实际收益。我们也知道一般对于非分幕式任务,或超长幕的任务来讲,蒙特卡洛也不一定实用。当时序差分中,增加宽度时,也就是说每次回溯不仅只是某一个动作,而是所有动作,则便是动态规划,仔细分析可知,动态规划就是对当前状态所有可能执行的动作以及下一时刻转移的状态的描述。动态规划是一种特殊的单步时序差分,在于其对每一个动作都进行了一次估计,如果是多步的话,就变成了深度搜索(穷举)。事实上,强化学习就是一个试错的过程,而穷举未免不是一种将所有经验都经历一遍的笨方法,强化学习只是使用策略机制来用少量的步骤近似真实的结果。
在这里插入图片描述

标签:总结,状态,动作,一个,学习,智能,强化
来源: https://blog.csdn.net/lulu_Tang/article/details/122234476

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有