Life may be hard.Don't leave regrets.|

climerecho

园龄:4年4个月粉丝:177关注:22

强化学习-学习笔记2 | 价值学习

Value-Based Reinforcement Learning : 价值学习

2. 价值学习

2.1 Deep Q-Network DQN

其实就是用一个神经网络来近似 Q 函数。

agent 的目标是打赢游戏,如果用强化学习的语言来讲,就是在游戏结束的时候拿到的奖励总和 Rewards 越大越好。

a. Q-star Function

问题:假设知道了 Q(s,a) 函数,哪个是最好的动作?

显然,最好的动作是a=argmaxaQ(s,a)

Q(s,a)可以给每个动作打分,就像一个先知,能告诉你每个动作带来的平均回报,选平均回报最高的那个动作。

但事实是,每个人都无法预测未来,我们并不知道Q(s,a)。而价值学习就在于学习出一个函数来近似Q(s,a) 作决策。

  • 解决:Deep Q-network(DQN),即用一个神经网络 Q(s,a;w)来近似 Q(s,a) 函数。
  • 神经网络参数是 w ,输入是状态 s,输出是对所有可能动作的打分,每一个动作对应一个分数。
  • 通过奖励来学习这个神经网络,这个网络给动作的打分就会逐渐改进,越来越精准
  • 玩上几百万次超级玛丽,就能训练出一个先知。

b. Example

对于不同的案例,DQN 的结构会不一样。

如果是玩超级玛丽

  • 屏幕画面作为输入
  • 用一个卷积层把图片变成特征向量
  • 最后用几个全连接层把特征映射到一个输出的向量
  • 输出的向量就是对动作的打分,向量每一个元素对应一个动作的分值,agent 会选择分值最大的方向进行动作。

c. 用 DQN 打游戏

DQN 的具体执行过程如下:

分步解释:

  • stat:当前观测到状态 st,用公式 at=argmaxaQ(s,a)st 作为输入,给所有动作打分,选出分数最高的动作 at
  • agent 执行 at 这个动作后,环境会改变状态,用状态转移函数 p(|st,at) 随机抽样得出一个新状态 st+1
  • 环境还会告诉这一步的奖励 rt奖励就是强化学习中的监督信号,DQN靠这些奖励来训练。
  • 有了新的状态 st+1,DQN 继续对所有动作打分,agent 选择分数最高动作 at+1
  • 执行 at+1 后,环境会再更新一个状态 st+2,给出一个奖励 rt+1
  • 然后不断循环往复,直到游戏结束

2.2 TD 学习

如何训练 DQN ?最常使用的是 Temporal Difference Learning。TD学习的原理可以用下面这个例子来展示:

a. 案例分析

要开车从纽约到亚特兰大,有一个模型Q(w)预测出开车出行的开销是1000分钟。这个预测可能不准,需要更多的人提供数据来训练模型使得预测更准。

  1. 问题:需要怎样的数据?如何更新模型。
  • 出发之前让模型做一个预测,记作qq=Q(w),比如q=1000。到了目的地,发现其实只用了860分钟,获取真实值 y=860

  • 实际值y与预测值q有偏差,这就造成了 loss 损失

  • loss 定义为实际值与预测值的平方差L=12(qy)2

  • 对损失 L关于参数w求导并用链式法则展开:

    Lw=qwLq=(qy)Q(w)w

  • 梯度求出来了,可以用梯度下降来更新模型参数 w :wt+1=wtαLw|w=wt

缺点:这种算法比较 naive,因为要完成整个旅程才能完成对模型做一次更新。

那么问题来了:假如不完成整个旅行,能否完成对模型的更新?

可以用 TD 的思想来考虑这件事情。比如我们中途路过 DC 不走了,没去亚特兰大,可以用 TD 算法完成对模型的更新,即

  • 出发前预测:NYC -> Atlanta 要花1000分钟,这是预测值

    到了 DC 时,发现用了 300 分钟,这是真实观测值,尽管它是针对于部分的。

  • 模型这时候又告知,DC -> Atlanta 要花 600 分钟。

  • 模型原本预测:Q(w)=1000,而到 DC 的新预测:300 + 600 = 900,这个新的 900 估值就叫 TD target

    这些名词要记住,后面会反复使用,TD target 是使用了 TD算法的道德整体预测值。

  • TD target y=900虽然也是个估计预测值,但是比最初的 1000 分钟更可靠,因为有事实成分。

  • 把 TD target y当作真实值:L=12(Q(w)y)2, 其中Q(w)y称为TD error。

  • 求导:Lw=(1000900)Q(w)w

  • 梯度下降更新模型参数 w :wt+1=wtαLw|w=wt

b. 算法原理

换个角度来想,TD 的过程就是这样子的:

模型预测 NYC -> Atlanta = 1000, DC -> Atlanta = 600,两者差为400,也就是NYC -> DC = 400,但实际只花了300分钟预计时间与真实时间之间的差就是TD error:δ=400300=100

TD 算法目标在于让 TD error 尽量接近 0 。

即我们用部分的真实 修改 部分的预测,而使得整体的预测更加接近真实。我们可以通过反复校准 可知的这部分真实 来接近我们的理想情况。

c. 用于 DQN

(1) 公式引入

上述例子中有这样一个公式:TNYCATLTNYCDC+TDCATL

想要用 TD 算法,就必须要用类似这样的公式,等式左边有一项,右边有两项,其中有一项是真实观测到的。

而在此之前,在深度强化学习中也有一个这样的公式:Q(st,at;w)=rt+γQ(st+1,at+1;w)

公式解释:

  1. 左边是 DQN 在 t 时刻做的估计,这是未来奖励总和的期望,相当于 NYC 到 ATL 的预估总时间。
  2. 右边 rt是真实观测到的奖励,相当于 NYC 到 DC 。
  3. Q(st+1,at+1;w) 是 DQN 在 t+1 时刻做的估计,相当于 DC 到 ATL 的预估时间。
(2) 公式推导

为什么会有一个这样的公式?

回顾 Discounted return: Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+

提出 γ 就得到 =Rt+γ(Rt+1+γRt+2+γ2Rt+3+)

后面这些项就可以写成Ut+1,即 =Rt+γUt+1

这样就得到:Ut=Rt+γUt+1

直观上讲,这就是相邻两个折扣算法的数学关系。

(3) 应用过程

现在要把 TD 算法用到 DQN 上

  • t 时刻 DQN 输出的值 Q(st,at;w) 是对 Ut 作出的估计 E[Ut],类似于 NYC 到 ATL 的预估总时间。
  • 下一时刻 DQN 输出的值 Q(st+1,at+1;w) 是对 Ut+1 作出的估计 E[Ut+1],类似于 DC 到 ATL 的第二段预估时间。
  • 由于 Ut=Rt+γUt+1
  • 所以 Q(st,at;w)E[Ut]E[Rt+γQ(st+1,at+1;w)E[Ut+1]]
  • Q(st,at;w)prediction=rt+γQ(st+1,at+1;w)TD  target

有了 prediction 和 TD target ,就可以更新 DQN 的模型参数了。

  • t 时刻模型做出预测 Q(st,at;wt)

  • 到了 t+1时刻,观测到了真实奖励 rt 以及新的状态 st+1,然后算出新的动作 at+1

  • 这时候可以计算 TD target 记作 yt,其中yt=rt+γQ(st+1,at+1;w

  • t+1 时刻的动作 at+1怎么算的?DQN 要对每个动作打分,取分最高的,所以等于Q 函数关于a求最大化:yt=rt+γmaxaQ(st+1,a;wt

  • 我们希望预测Q(st,at;w)尽可能接近 TD target yt ,所以我们把两者之差作为 Loss :

    Lt=12[Q(st,at;w)yt]2

  • 做梯度下降:wt+1=wtαLw|w=wt更新模型参数 w,来让 Loss 更小

2.3 总结

  1. 价值学习(本讲是DQN)基于最优动作价值函数 Q-star :

    Q(st,at)=E[Ut|St=st,At=at]

    Ut 求期望,能对每个动作打分,反映每个动作好坏程度,用这个函数来控制agent。

  2. DQN 就是用一个神经网络Q(s,a;w)来近似Q(s,a)

    1. 神经网络参数是 w ,输入是 agent 的状态 s
    2. 输出是对所有可能动作 aA 的打分
  3. TD 算法过程

    1. 观测当前状态 St=st 和已经执行的动作 At=at

    2. 用 DQN 做一次计算,输入是状态 st,输出是对动作 at 的打分

      记作qtqt=Q(st,at;w)

    3. 反向传播对 DQN 求导:dt=Q(st,at;w)w|w=wt

    4. 由于执行了动作 at,环境会更新状态为 st+1,并给出奖励rt

    5. 求出TD target:yt=rt+γmaxaQ(st+1,at;w

    6. 做一次梯度下降更新参数 w , wt+1=wtα(qtyt)dt

    7. 更新迭代...

x. 参考教程

本文作者:climerecho

本文链接:https://www.cnblogs.com/Roboduster/p/16444062.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   climerecho  阅读(1045)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 尚好的青春 孙燕姿
  2. 2 孙燕姿
  3. 3 克卜勒 孙燕姿
克卜勒 - 孙燕姿
00:00 / 00:00
An audio error has occurred, player will skip forward in 2 seconds.