DQN
DQN(Deep Q-network),基于深度学习的Q-learning算法,其结合了 Value Function Approximation(价值函数近似)与神经网络技术,并采用了目标网络(Target Network)和经验回放(Experience Replay)等方法进行网络的训练。
- 传统的强化学习算法会使用表格的形式存储状态值函数V(s)或状态动作值函数 Q(s,a),但是这样的方法存在很大的局限性。
- 例如:现实中的强化学习任务所面临的状态空间往往是连续的,存在无穷多个状态,在这种情况下,就不能再使用表格对值函数进行存储。
- 值函数近似利用函数直接拟合状态值函数或状态动作值函数,减少了对存储空间的要求,有效地解决了这个问题。
链接: EasyRL
一、价值函数近似(Value Function Approximation)
即:利用函数直接拟合状态值函数或状态动作值函数,这里的函数形式依赖于现实问题的复杂度。
为了便于接下来的模型表述,这里引入书中的三个元素:
- 评论家(critic),是我们的学习目标,比如:state value function(状态价值函数)、state-action value function(状态-动作价值函数)。
- 环境,具体的学习场景或学习过程,比如书中的 Atari 游戏。
- 演员(actor),就是agent,基于环境状态产生策略进而输出动作。
- 这边需要强调的一个点是说,评论家都是绑一个演员的,评论家没有办法去凭空去评价一个状态的好坏,它所评价的东西是在给定某一个状态的时候, 假设接下来互动的演员是 π,那我会得到多少奖励。
- 因为就算是给同样的状态,你接下来的 π 不一样,你得到的奖励也是不一样的。
即:评论家是基于演员与环境的交互过程(演员的策略V.S.环境的状态)进行评价的。
二、两种评估方法
下面分别讨论不同评论家的评估方法:
1. State Value Function Estimation(状态价值函数)
已知初始条件只有一个:状态(state)。
这类评论家又是如何去做评估的呢?有两种不同的做法:
- Monte-Carlo(MC)-based 的方法,Monte-Carlo(MC)-based基于(演员与环境的)完整(交互)过程的抽样。最大的问题:学习周期长;抽样数据方差大(环境状态本身的随机性和学习过程的随机性)。
- TD-based 的方法,Temporal-difference(时序差分),逐步的、逐个状态的或者逐个画面的学习过程,有点“各个击破”的意思。
TD-based 的学习过程是基于下面这个式子:
V π ( s t ) = V π ( s t + 1 ) + r t V^{\pi}(s_t) = V^{\pi}(s_{t+1}) + r_t Vπ(st)=Vπ(st+1)+rt
变化一下:
V π ( s t ) − V π ( s t + 1 ) = r t V^{\pi}(s_t) - V^{\pi}(s_{t+1}) = r_t Vπ(st)−Vπ(st+1)=rt
- 学习目标,即: V π ( s t ) V^π(s_t) Vπ(st) (t时刻状态价值)与 V π ( s t + 1 ) V^π(s_{t+1}) Vπ(st+1) (t+1时刻状态价值)的差值尽量逼近于 r t r_t rt(t时刻奖励)。
- 个人理解,即达到一种收敛状态(相较于t时刻,t+1时刻状态价值不再有很大提升),只不过这里的收敛条件是 r t r_t rt(t时刻奖励)。
- 最后把 V 函数学习出来。
图片来自 蘑菇书EasyRL
所以不同的方法考虑了不同的假设,运算结果不同。
2. State-action Value Function(状态价值函数) or Q-function
相较于第一种(state value function),这类评论家的已知条件多了一个动作,是一个状态、动作对。
图片来自 蘑菇书EasyRL
即:这类评论家是基于<状态,动作>对,对Qπ(s,a)进行学习,以此来完成对演员π的评估,进而对演员(策略)进行调整,这样一直循环下去,policy 就会越来越好。
那如何保证你的策略是越来越好的呢?用下面的公式去驱动策略的改进:
π ′ ( s ) = a r g max a Q π ( s , a ) π^′ (s)=arg\max_{a} Q^π(s,a) π′(s)=argamaxQπ(s,a)
可以把 Q-learning 理解成一种持续进行(状态不断变换)的过程,当达到某一条件(收敛条件),这一条件下的策略才是 π ′ π^′ π′ 。
三、DQN使用总的两个Tips
1. 目标网络(target network)
图片来自 蘑菇书EasyRL
2. 探索(Exploration)
图片来自 蘑菇书EasyRL
探索-利用窘境(Exploration-Exploitation dilemma)
解决方法:
(1) Epsilon Greedy。Epsilon Greedy( ϵ \epsilon ϵ-greedy) 的意思是说,我们有 1 − ϵ 1-\epsilon 1−ϵ 的概率会按照 Q-function 来决定 动作; 有 ϵ \epsilon ϵ 的机率是随机的。
- 通常在实现上 ϵ \epsilon ϵ 会随着时间递减。
即:
在探索初期,随机探索的几率较大,以此获取比较好的策略。
随着探索次数的增加,训练的次数也越来越多,这时已经有可能获取一个比较的价值函数Q。这种情况下,就可以相对降低随机探索的几率,用已经习得的Q-function 来决定下一个动作。
Epsilon Greedy其实也揭示了一种面对新事物或新环境的学习策略,或者说是学习轨迹。
由相对的“不确定”到相对的“确定”,是一个在行进中不断学习的过程,也是一个“熵增”到“熵减”的过程。
(2) Boltzmann Exploration。
基本思想就是:根据 Q 值去定一个概率分布,再根据概率分布去做采样。
- Q: 我们有时候也要尝试那些 Q 值比较差的动作,怎么做呢?
- A:因为 Q 值是有正有负的,所以可以它弄成一个概率,你先取指数,再做归一化。然后把 \exp(Q(s,a))exp(Q(s,a)) 做归一化的这个概率当作是你在决定动作的时候采样的概率。
3. Experience Replay(经验回放)
Experience Replay 会构建一个 Replay Buffer,Replay Buffer 又被称为 Replay Memory。
图片来自 蘑菇书EasyRL
图片来自 蘑菇书EasyRL
Replay Buffer:
- 强化学习中, 最花时间的步骤是跟环境做互动,互动后的训练网络反而是比较快的。而在replay buffer中,一些历史习得的经验可以被再利用,一定程度上提高了采样效率。
- 在对网络进行训练时,单就数据多样性这一点来说,数据越多样,模型的泛化能力越强。无论是对有监督学习还是对强化学习来说,都是这样。只不过在强化学习中,我们不说泛化能力,而且要看(经过策略学习后的)模型的表现(得分、奖励)。
- 数据的多样性有助于网络在面对新环境时,有更多或更优的策略可以选择。
四、DQN
图片来自 蘑菇书EasyRL
Q: DQN 和 Q-learning 有什么不同?
A: 整体来说,DQN 与 Q-learning 的目标价值以及价值的更新方式都非常相似,主要的不同点在于:
- DQN 将 Q-learning 与深度学习结合,用深度网络来近似动作价值函数,而 Q-learning 则是采用表格存储;
- DQN 采用了经验回放的训练方法,从历史数据中随机采样,而 Q-learning 直接采用下一个状态的数据进行学习。