五. Deep Q-network(DQN)
现实中强化学习面临的状态空间往往是连续的,存在无穷多个状态。这种情况下,就不能再使用表格对价值函数进行存储,采用价值函数近似(Value Function Approximation)的方式进行逼近
在连续的状态和动作空间中,可以用函数来表示近似计算:
其中函数通常是一个参数为的函数,比如神经网络
5.1 状态价值函数(State Value Function)
衡量这个状态价值函数,有两种不同的做法:MC-based
的方法和TD-based
的方法:
5.1.1 蒙特卡洛法
-
方法:
- 输入一个状态,输出接下来的累计奖励。是一个回归问题。网络的输出就是一个值,你希望在输入的时候,输出的值跟 越近越好,输入的时候,输出的值跟越近越好,把网络训练下去就是
MC-based
的方法
- 输入一个状态,输出接下来的累计奖励。是一个回归问题。网络的输出就是一个值,你希望在输入的时候,输出的值跟 越近越好,输入的时候,输出的值跟越近越好,把网络训练下去就是
-
问题:
- 由于每次都要计算累积奖励,所以必须等待游戏结束才能更新网络,这样花的时间太长
-
方差很大。本身具有随机性,累积奖励可以看成是一个随机变量
5.1.2 时序差分法
-
方法:
- 假设在某一个状态,采取动作得到奖励 ,跳到状态 ,则有:
- 希望和相减的损失跟相似,并以此更新V的参数
5.2 动作价值函数(State-action Value Function)
动作价值函数的输入是状态、动作对。表示在某一个状态采取某一个动作,都是用演员,得到的累计奖励期望值
Q函数的两种写法:
- 输入是状态和动作,输出是一个标量
- 输入是状态,输出是多个值(只有离散动作才能使用)
方法:
- 假设有一个
Q函数
和某一个策略,根据策略学习出的Q函数,保证可以找到一个好的新的策略,在用相同方法找它的Q函数
以及新的更好的策略
证明:为什么用决定出来的一定比好
- max
由1、2式可得:
综合3、4可得:
即证毕,对于估计某一个策略的Q-function
,接下来就可以找到另外一个策略比原来的策略还要更好
5.3 目标网络(target network)
在学习Q-function
的时候,会用到TD
的概念。那怎么用TD?在状态,采取动作以后,得到奖励,然后跳到状态。根据这个Q-function
:
但是实际上这样的一个输入并不好学习,因为假设这是一个回归问题,是网络的输出,是目标,实际上目标是可变的。在做反向传播的时候,的参数会被更新,并会把两个更新的结果加在一起,这样会导致训练变得不太稳定
所以可以把其中一个Q网络
,通常是会把右边这个Q网络
固定住。在训练的时候只更新左边的Q网络
的参数,而右边的Q网络的参数会被固定住。因为右边的**Q网络
负责产生目标,所以叫目标网络**
。因为目标网络是固定的,所以得到的目标的值也是固定的。只调左边网络的参数,它就变成是一个回归问题。希望模型的输出的值跟目标越接近越好,可以最小化它的均方误差(mean square error)
在实现的时候,把目标网络固定,只调模型输出的网络。在把输出的网络更新几次以后,再去用更新的网络替换目标网络
5.4 探索(Exploration)
这个问题其实就是
探索-利用窘境(Exploration-Exploitation dilemma)
问题
当使用Q函数
时,策略完全取决于Q函数
。在采取动作的时候,会采取Q值最大的动作。这样可能会一直采取相同的动作,所以需要探索机制,避免一直采取相同的动作
5.4.1 ε-贪心(ε-greedy)
-
定义:
有1-ε的概率会按照
Q函数
决定动作,主要根据Q函数
决定动作,比较少随机决定动作:
通常ε会随时间递减。随着训练次数的增多可以减少探索
-
对象:
- 无法尝试Q值比较差的动作,可能的动作有:
- 最大Q值对应动作
- 随机动作
- 无法尝试Q值比较差的动作,可能的动作有:
5.4.2 玻尔兹曼探索(Bolzman Exploration)
-
定义:
- 输出动作空间上的概率分布,根据概率分布采样选择动作(取指数 --> 归一化)
- 输出动作空间上的概率分布,根据概率分布采样选择动作(取指数 --> 归一化)
-
对象:
- 根据Q值确定了动作空间的概率分布,可以通过采样选择任意动作
5.5 经验回放(Experience Replay)
思想:构建一个回访缓冲区
(replay buffer)
,会将策略与环境互动收集的数据(状态-动作-奖励...)放到缓冲区中。循环迭代训练Q函数时,会从数据缓冲区随机挑一个批量(batch)出来更新Q函数。
迭代地去训练这个Q-function
,在每次迭代里面,从这个buffer里面随机挑一个batch出来,根据这把经验去更新Q-function
,就跟TD learning要有一个目标网络是一样的
特点:
- 回访缓冲区内的经验可能来自不同策略
异策略(off-policy)
- 减少了跟环境做互动的次数,数据利用高效
- 多样化的训练数据
5.6 DQN原理
DQN使用深度卷积神经网络近似拟合状态动作值函数,其网络结构如上图所示。DQN模型的输入是距离当前时刻最近的4帧图像,该输入经过3个卷积层和2个全连接层的非线性变化后,最终在输出层输出每个动作对应的Q值
算法:
- 初始化两个网络,,开始目标网络等于
- 基于
Q函数
和探索机制
:(ε,玻尔兹曼)选择动作,获得奖励,状态从跳到 - 将数据经验塞到数据缓冲区中
- 从缓冲区中采样一批量的数据,根据数据计算目标:
- 更新Q的参数使得尽可能接近于(回归)
- 每C步更新目标网络