增强学习(Reinforcement Learning)

本文介绍了增强学习的基础概念,包括激励方程、价值方程和环境模型,并深入探讨了Q-learning。接着,文章重点讨论了深度Q网络(DQN)如何解决Q-learning在处理复杂问题时的局限性,详细阐述了DQN的结构、损失函数、经验回放等关键特性。此外,还提到了DQN的改进方法,如Double DQN和Dueling DQN。最后,通过自动游戏机器人的实例展示了DQN在实践中的应用。

增强学习(Reinforcement Learning)

1. 增强学习基础

什么是增强学习

通过训练学到最优的state -action映射关系的过程,使得agent得到最好的value/reward。

这里写图片描述

  • Agent:要学习的智能程序;
  • Policy:程序知道所处某状态后采取行为的策略(复杂情况DL,简单情况lookup table)
  • Environment:智能程序交互外界环境,接受action产生状态变化,返回reward,可以是真实世界,游戏模拟器,棋牌等。
激励方程 – reward function

某次行为结果产生的激励,如分数的增加;
定义增强学习的目的。

价值方程 – value function

agent 能够带来的长期累计回报,如累计的时间转换为价值;
激励方程短期,价值方程长期。

环境模型 – Model of the environment

环境模拟模型,模拟action作用之后环境返回的价值、激励以及状态的变化,模拟器中不需要,真实世界中有知道训练意义。

增强学习中的问题

  • 策略学习policy learning
    policy梯度学习
    (每一个策略的概率不同,好的策略概率大)
  • 价值、回报迭代学习
    确定方法:Q-learning;DQN,DQN扩展。
    (确定策略执行后得到回报的概率)
  • 环境模型学习
    知道此刻的状态以及行为(s,a)预测下一刻的状态以及回报,模拟真实的环境反馈。

Q-learning

  • 下一状态最大回报作为价值
    Q(st,at)=maxRt+1
  • 能够达到价值最大的行为作为策略
    π(s)=argmaxaQ(s,a)
  • 目标价值由当前回报和t+1时刻的价值
    Q(s,a)=r+γmaxaQ(s,a)

算法:

initialize Q[num_states, num_actions] arbitrarily
observe initial state s 
repeat
    select and carry out an action a 
    ovserve reward R and new state s'
    Q(s,a) = R(s,a)+r*max(Q(s',ai))
until terminated

Q-learning 实例

假设我们在建筑物中连接了5个房间,如下图所示。 我们将每个房间的号码从0到4编号。建筑物的外部可以被认为是一个大的房间(5)。 注意,门1和4可以从5室(外部)进入建筑物。

这里写图片描述

我们可以在图表上表示房间,每个房间作为一个节点,每个门作为一个链接。

这里写图片描述

对于这个例子,我们想把智能体放在任何房间里,从那个房间里到外面去(这将是我们的目标房间)。 换句话说,目标房间是第5号。为了将这个房间设定为目标,我们将把每个门的奖励值(即节点之间的链接)相关联。 直接导向目标的门立刻得到100,其他没有直接连接到目标房间的门没有奖励。 因为门是双向的(0可以到4,4也可以到0),每个房间分配两个箭头。 每个箭头包含即时奖励值,如下所示:

这里写图片描述

Q-Learning中包括术语“state”和“action”。

我们会称每个房间为“state”,智能体从一个房间到另一个房间的运动将是一个“action”。 在我们的图中,“state”被描绘为一个节点,而“action”由箭头表示。

我们可以将状态图和即时奖励值构成奖励表矩阵R,如下所示:

这里写图片描述

我们将首先设置学习参数 γ=0.8 的值,将初始状态设置为Room 1。
将矩阵Q初始化为零矩阵:

这里写图片描述

  • 假设:当前状态s:1,下一步随机到s:5。
    Q(1,5)=R(1,5)+0.8max[Q(5,1),Q(5,4),Q(5,5)]=100+0.80=100

    下一个状态5,现在变成当前状态。 因为5是目标状态,所以我们完成了一步。 智能体的大脑现在包含一个更新的矩阵Q:
    这里写图片描述
  • 假设:当前状态s:3,下一步随机到s:1。
    Q(3,1)=R(3,1)+0.8max[Q(1,2),Q(1,5)]=0+0.8max(0,100)=80

    更新的Q矩阵变为:
    这里写图片描述
  • 每次保持不变,policy,Q具有可累积。
    多次迭代计算后Q趋于稳定,变为:
    这里写图片描述

一旦矩阵Q接近到收敛状态,我们知道智能体已经学到了目标状态的最佳路径。 可以直接用于求最优解。

这里写图片描述

Q-learning总结

  • 直接用表格查询形式确定回报,适应简单任务;
  • 回报矩阵R不变,价值矩阵不断更新,价值矩阵描述了从某状态出发的action的不同选择的回报信息;
  • 理论上如果信息能够可以用查询表格(lookup table)表示,Q-learning能够学到最优的Policy。

2. DQN 深度增强学习

  • DQN,2015年 Nature,用于Atari 2600游戏的自动学习;
  • 同Q-learning的过程类似,迭代优化;
  • Action-Reward 不是简单的table,是深度模型要学习的目标;
  • 添加了经验回放(experience reply),用于模型的训练。

DQN和Q-learning的比较

  • Q matrix无法描述复杂问题;
  • 神经网络作为Q函数;
  • 优化输入输出直接生成Q+a。
    这里写图片描述

DQN的基本结构

这里写图片描述

没有pooling层:位置信息很重要,不希望被弱化。

DQN loss以及优化

  • Loss
    L=12[R+maxaQ(s,a)targetQ(s,a)prediction]2
  • 训练过程:给定一个 transition<s,a,r,s>
    • 1.前向计算当前状态s,得到action-value列表;
    • 2.前向计算下一状态s’,得到 maxa(s,a) ;
    • 3.设置target值,2中action对应Q更新,其他同Q(s,a)一致;
    • 4.反向计算梯度。

DQN经验回放

  • <s,a,r,s> 进行存储;
  • 只用最近变化的话,数据较少,容易收敛到局部极值,所以要把以前的信息存储起来;
  • 使得训练更像监督学习;
  • 中间过程可反复使用,进而帮助训练过程;
  • 很像针对性的练习。

DQN 深度探索-随机尝试

  • 深度探索(exploration)
    一直在优化自己最初的方向,但有可能是错的,类似贪婪算法;
  • 随机尝试(exploitation)
    按照一点概率允许尝试不同的可能性

DQN算法

initialize replay memory D
initialize action-value function Q with random weights
observe initial state s
repeat
    select an action a
        with probability e select a random action
        otherwise select a = argmaxQ(s,a')
    carry out action a
    ovserve reward r and new state s'
    store experience <s,a,r,s'> in replay memory D

    sample random transitions <ss,aa,rr,ss'> from replay memory D
    calculate target for each minibatch transition
        if ss' is terminal state then tt = rr
        otherwise tt = rr + gamma*maxQ(ss',aa')
    train the Q network using (tt - Q(ss, aa))^2 as loss

    s = s'
until terminated

3. DQN 该进模型

DQN可能存在的问题:
在目标 max(Q(s,a;)) 确定过程中,选用的方法是直接找到value-action列表的最大值,由于模型的不稳定性,最大值不一定是最优值。

改进方法

  • Double DQN
    训练两个独立的模型 Q1,Q2

    Q1(s,a)>r+γQ2(s,argmaxaQ1(s,a))Q2(s,a)>r+γQ1(s,argmaxaQ2(s,a))

    tatget与prediction分别用不同的模型生成。

  • 优先回放PER
    训练过程中,每个batch的reply对训练的贡献并不相同,target和prediction预测差别大的有更大的贡献。
    误差: error=|Q(s,a)T(S)|
    比例: p=(error+ε)α
    概率: Pi=pikpk

Double DQN改进的效果

这里写图片描述

经过Double DQN的改进以后,loss的大小会减小,效果得到改进。

Dueling DQN

原理:
对loss function进行改造。
* 最终的一个value loss没有学习过程的某些中间量没有引导作用;
* 中间层分出value,advantage层Q(s,a)=V(s)+A;
* 最终输出均为action-value。

这里写图片描述

结构特点:
训练中侧重于有用信息。

4. A3C 模型

Asynchronous Advantage Actor-Critic

Asynchronous 异步

属于分布式训练,不仅仅在一个模型中训练。

DQN:单个agent,单个神经网络,一个环境。
A3C:一个全局神经网络,多个worker agent,每个agent复制一份神经网络,一个环境,单独进行优化;通过独立的进行多个worker agent训练,增加训练的多样性。

Advantage

不仅考虑模型的回报,还要考虑某一个具体行为带来的贡献有多大。
A = R -V(s);

  • A:advantage;
  • R:reward;
  • V(s):Vaule方程,

advantage用于value loss的形成。

Actor-Critic 演员-评论

  • 演员:policy,根据神经网络推出state下应有的行为的概率分布;
  • 评论:value,不同行为能够得到的回报;
  • value和policy结合,通过fc layer 生成。

这里写图片描述

5. 实例:自动游戏机器人

DQN +GYM+Tensorflow

这里写图片描述

fork代码请参见:https://github.com/KoalaTree/dqn

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值