[RL1]深度强化学习基础

一、强化学习

        强化学习(reinforce learning, RL)的本质是互动学习,即让智能体与其外界环境进行交互。智能体根据自己每次感知到的外界环境状态来选择相应的动作,以对环境进行响应,然后观测该动作所造成的结果,并根据结果来调整自身动作选择机制,最终让智能体可以对外界环境达到最优的响应,从而获得最好的结果(智能体针对外界环境采取一系列动作后获得的最大奖赏值,也称为累计奖赏值、预期回报)。

RL模型中最关键的三个部分:

  1. 状态(state):智能体所处的外界环境信息。环境状态的具体表现形式可以有很多种,包括多维数组、图像和视频等。外界环境的状态需要能够准确地描述外界环境,尽可能将有效信息包括在内,通常越充分的信息越有利于算法的学习。
  2. 动作(action):智能体在感知到外界环境状态后所要采取的行为,是对外界环境的一种反馈响应。动作的表现形式可以是离散的,也可以是连续的。
  3. 奖励(reward):智能体感知到外界环境并采取动作后所获得的奖赏值,源于根据实际场景定义的某种奖励机制,包括正向奖励和负向奖励。

[注]:深度学习擅长对事物的感知和表达,强化学习擅长学习解决问题的策略。

        深度强化学习(Deep reinforce learning, DRL)是深度学习领域中迅猛发展起来的一个分支,目的是解决计算机从感知到决策控制的问题,从而实现通用人工智能。对于DRL来说,目前的算法都可以包含在actor-critic框架下。actor-critic属于时间差分学习方法,其用独立的内存结构明确地表示独立于值函数的策略。策略结构被称为actor,因为它用于选择动作;而估计值函数被称为critci,因为他评价actor所做的动作。

        把DRL的算法视为智能体的大脑,那么这个大脑包含2个部分:actor行动模块和critic评判模块,这两个模块都是由深度神经网络构成的,这也是DRL中“深度”一词的由来。

  1. actor行动模块:大脑的动作执行机构,输入外部的环境状态,输出相应动作;
  2. critic评判模块:大脑的价值观,根据历史信息及回馈进行自我调整,然后对整个actor行动模块进行相关的更新指导。

深度强化学习的分类:

  1. 基于值函数的DRL
  2. 基于策略的DRL
  3. 基于模型的DRL
  4. 基于分层的DRL

二、马尔可夫属性和决策过程

马尔可夫属性:只有当前状态影响下一个状态,即在给定当前状态的情况下,未来在条件上独立于过去。

马尔可夫决策过程(Markov Decision Process, MDP):满足马尔可夫属性的RL任务称为MDP。

有限马尔可夫决策过程(Finite Markov Decision Process, FMDP):如果状态空间和动作空间有限,则被称为有限MDP。

形式上,RL可以被描述为MDP,其中包括:

  • 一系列状态S,加上初始状态p(s_{0})的分布;
  • 一系列动作A;
  • 动态转换T(s_{t+1}|s_{t},a_{t}),其将时间t处的状态-动作映射到时间t+1处的状态分布;
  • 一个即时奖励函数r(s_{t},a_{t},s_{t+1})
  • 折扣因子r \in [0,1],其中较低的r值更强调即时性奖励。

        通常,策略\Pi是从状态到动作概率分布的映射,\Pi :S\rightarrow p(A=a|S),如果马尔可夫过程是情节性的(episodic)(每经过T个episode之后重置状态),那么一个episode的状态、动作和奖励序列就构成了策略的轨迹或推出。策略的每次推出都会累积来自环境的回报,从而返回结果R=\sum_{t=0}^{T-1} r^{t}r_{t+1},RL的目标是找到一个最优策略\Pi ^{*},它可以得到所有状态的最大预期回报。

        对于非情节性的MDP,即T为无穷大时,让r小于1可以防止无限累积奖励。此时,依赖于完整轨迹的方法不再适用,但那些使用有限过渡的方法仍然可以很好地发挥作用。

三、强化学习核心概念

3.1 值函数

3.2 动态规划

        经典DP算法在RL的用途有限,因为DP通常假设一个完美的模型,并且计算代价很高,但是在理论上它仍然很重要。虽然DP思想可以应用于连续状态和动作空间的问题,但只有在特殊情况下才能实现精确的解决方案,然后应用有限状态DP方法。

  • 状态-动作-奖励-状态-动作(state-action-reward-state-action, SARSA)算法:是一种on-policy的算法,通过使用行为策略(Q^{\prod }的一种派生策略)生成的转换来改进Q^{\prod }的估计。
  • Q-learning算法:是一种off-policy的算法,因为Q^{\prod }不是由派生策略生成的转换来更新的,直接近似Q^{*}

3.3 时间(序)差分

        TD(时间差分),DP(动态规划)和蒙特卡罗方法方法之间的关系是RL理论中反复出现的主题。        

        TD学习是蒙特卡洛思想和DP思想的结合。与蒙特卡罗方法类型,TD方法可以直接从原始经验中学习,而无须环境动态模型与DP一样,TD方法部分基于其他学习的估计来更新其估计,无需等待最终结果来进行引导

3.4 策略梯度

3.5 actor-critic方法

四、Q-learning方法

4.1 Q-learning方法简介

        Q-learning是一种无模型RL的形式,它可以被视为异步DP的方法。学习过程类似于TD方法:智能体在特定状态下尝试行动,并根据其收到的即时奖励或处罚以及对其所处状态的值的估计来评估其后果。通过反复尝试所有状态的所有行动,它可以通过长期折扣奖励来判断总体上最好的行为

        Q-learning的训练过程:首先把Q-learning状态表的动作初始化为0,然后通过训练更新每个单元。在学习开始之前,Q被初始化为任意可能的固定值。然后在每个时间t智能体选择动作a_{t},观察奖励r_{t},进入新状态s_{t+1},并对Q进行更新。该算法的核心是一个简单的值迭代更新过程,即使用旧值和新信息的加权平均值:

Q^{new}(s_t,a_t)\leftarrow (1-\alpha )Q(s_t,a_t)+\alpha (r_{t}+rmax_{a}Q(s_{t+1},a))

其中,r_t是从状态s_t移动到状态s_{t+1}时收到的奖励,\alpha (0<\alpha <1)是学习率,Q(s_t,a_t)是旧值,max_{a}Q(s_{t+1},a))为新信息。当状态s_{t+1}是最终状态时,算法的一个episode结束当然,Q-learning也可以在非episode任务中学习。

4.2 相关变量

  • 学习率/步长\alpha:确定了新获取的信息在多大程度上覆盖旧信息。0使得智能体什么都不学习,即只利用先验知识;1使得智能体只考虑最新信息,忽略先验知识以探索可能性。在实践中,通常使用恒定的学习率,如0.1
  • 折扣因子r:决定了未来奖励的重要性。0将仅考虑当前奖励使得智能体变得“短视”,接近1将使智能体努力获得长期高奖励。对于1来说,没有终止状态,或者智能体从未到达过,那么所有环境历史就变得无限次,这时使用加法通常导致未折扣奖励的值变得无限大。即时折扣因子仅仅略低于1,当使用人工神经网络近似值函数时,Q函数学习也会导致误差和不稳定性的传播。在这种情况下,从较低的折扣因子开始并将其增加至最终值会加速学习。

4.3 实现方法

最简单的Q-learning在表格中存储数据,但当状态和行动的数量非常多时,查询表的时间会非常久。以下展示2种改进的方法:

  1. 函数近似:使用人工神经网络作为函数逼近器,使得即使在状态空间连续时也可以将算法应用于更大的问题上;
  2. 量化可能的值:当状态空间连续时,为存储桶分配多个值,缩小有效操作的可能空间。

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,MATLAB深度学习工具箱提供了各种深度学习网络和算法,但是并没有提供深度强化学习算法。不过,MATLAB提供了强化学习工具箱,可以用于实现强化学习算法,包括深度强化学习强化学习工具箱提供了各种强化学习算法,包括Q学习深度Q学习、策略梯度等。此外,MATLAB还提供了各种示例和函数,可以帮助用户快速入门和实现强化学习算法。 以下是一个使用MATLAB实现深度强化学习的简单示例: ```matlab % 导入强化学习工具箱 addpath('toolbox_rl'); % 创建环境 env = rlPredefinedEnv('CartPole-Discrete'); % 创建深度神经网络 obsInfo = getObservationInfo(env); actInfo = getActionInfo(env); numObs = obsInfo.Dimension(1); numAct = actInfo.Dimension(1); layers = [ imageInputLayer([numObs 1 1],'Normalization','none','Name','state') fullyConnectedLayer(24,'Name','CriticStateFC1') reluLayer('Name','CriticRelu1') fullyConnectedLayer(24,'Name','CriticStateFC2') reluLayer('Name','CriticCommonRelu') fullyConnectedLayer(numAct,Name','output')]; criticOpts = rlRepresentationOptions('LearnRate',1e-3,'GradientThreshold',1); critic = rlQValueRepresentation(layers,obsInfo,actInfo,'Observation',{'state'},criticOpts); % 创建深度Q学习代理 agentOpts = rlDQNAgentOptions(... 'SampleTime',env.Ts,... 'TargetUpdateFrequency',1e-2,... 'ExperienceBufferLength',1e6,... 'DiscountFactor',0.99,... 'MiniBatchSize',64); agent = rlDQNAgent(critic,agentOpts); % 训练代理 trainOpts = rlTrainingOptions(... 'MaxEpisodes',500,... 'MaxStepsPerEpisode',500,... 'Verbose',false,... 'Plots','training-progress'); trainingStats = train(agent,env,trainOpts); % 测试代理 simOpts = rlSimulationOptions('MaxSteps',500); experience = sim(env,agent,simOpts); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值