天天看点

强化学习2-动作价值函数&DQN

回顾动作价值函数

之前的笔记强化学习1-基础概念(state,action,reward,policy)[1]介绍了强化学习的基础概念以及动作价值函数,这里再回顾一下:

  • Discounted return:
  • 策略 的动作价值函数:
  • 最优动作价值函数:

如果我们知道 ,我们就能知道任意时刻 应该执行的操作

但是我们是不知道 的,所以一种解决办法是使用Deep Q-Netwrok (DQN),即使用一个神经网络 去近似 ,下面介绍DQN原理。

Deep Q-Netwrok (DQN)

强化学习2-动作价值函数&DQN

DQN

DQN的示意图如上,state 作为DQN的输入,其输出是对每个action的价值预测,比如left, right和up的价值分别预测2000,1000和3000。

强化学习2-动作价值函数&DQN

上图展示了DQN的执行过程,可以看到每次都是选择价值最大的动作,之后再下一个状态继续预测并执行价值最大的动作。

这个执行逻辑很好理解,但是这与传统的监督任务不同,我们没有真实的label,那DQN该如何更新呢?为了解决这个问题,我们需要用到 Temporal Difference (TD)。为方便理解,我们首先看一个例子来帮助理解TD。

Temporal Difference (TD)

强化学习2-动作价值函数&DQN

Temporal Difference

假设我们现在需要从纽约(NYC)开车到亚特兰大(Atlanta),我们想用DQN来预测这个路程要花的时间。

  • 假设一开始模型预测要花费 分钟。(这个值很可能只是模型瞎猜的,后面我们需要更新模型参数来使模型预测更精准)
  • 假设我们真实地从NYC开车到Atlanta后,实测时间是 分钟。
  • 这个实测时间860分钟其实就可以当做是真实的label,所以我们可以求出
  • 通过上面的loss我们就可以进一步更新DQN

上面的例子中如果要更新DQN需要我们真实地开车从NYC到Atlanta,但是也许我们并不能真的开车到Atlanta,很可能开到华盛顿的时候就没法继续前进了(比如车坏了,路被封了等),那这个时候岂不是就没法更新DQN了?但是我们要相信,只要不放弃,方法总比困难多,即使中途停止,我们也可以利用这个信息来更新DQN。

强化学习2-动作价值函数&DQN

TD learning

如上图示,假如我们开车到了DC后就没法继续前进了,但是NYC到DC之间实际消耗时间我们知道是300分钟,并且我们继续利用DQN预测DC到Atlanta的时间是600分钟。此时可以知道,这个时候预测的NYC到Atlanta的时间变成了300+600=900,这和最开始预测的1000分钟有了出入。

尽管预测的600也不一定准确,但是300是真实的数据,那300+600我们认为要比最开始预测的1000肯定要准确一些,所以我们可以把300+600看作是真实的label,即TD target:y=300+600=900。

综上,我们可以通过TD target y和最开始的预测值 计算得到 ,同样通过梯度下降更新DQN。

类似于TD target,还有一个概念是TD error。什么意思呢?还是前面的例子,DQN一开始预测NYC到Atlanta的时间是1000分钟,然后从NYC到了DC又预测 DC到Atlanta的时间是600分钟,那么换句话说,他预测NYC到DC的时间是400分钟,而真实的时间是300分钟,那么TD error =400-300=100

强化学习2-动作价值函数&DQN

TD error

将TD learning应用到DQN

强化学习2-动作价值函数&DQN

Apply TD to DQN

在上面的开车时间预测例子中,我们是希望下面等式两边能尽可能地接近,方法是通过二者之间组成的loss来更新DQN的权重

那么对应到深度强化学习,就是如下等式

强化学习2-动作价值函数&DQN

你可能会问为什么上面式子右边要乘上一个因子 呢?这里我们就需要再次回顾一下价值函数 的定义了。

首先我们可以得到下式

强化学习2-动作价值函数&DQN

进而知道

而 ,所以

强化学习2-动作价值函数&DQN
  • 预测的value是:
  • TD target:
  • 那么loss就是
  • 最后更新梯度

总结

强化学习2-动作价值函数&DQN

Value-based RL

强化学习2-动作价值函数&DQN

TD

强化学习2-动作价值函数&DQN

MARSGGBO♥原创