DQN
Q-learning
RL的最终目标,是让整个Agent在行动中,最终拿到的奖励最大。划分到每一步上,Agent要学会在每一步上,根据当前的观测决定如何行动。这个行动也是我们唯一能干预的。把好坏直接定义在A(s)能大大降低问题的复杂度。而反应(s,a) 好坏的,就是Q函数。Q-learning就是在学习这个。
基本的定义
假设我们的环境是一个MDP:
从一个时刻t开始,通过
定义策略状态价值
如果在这个基础上,根据策略,采取某个行动a,就可以定义动作价值,也就是Q函数
固定期望的贝尔曼方程
动作价值里面的
对动作价值进一步推导:
其中,如果按照某个策略,在
代回去:
优化的目标
可以定义两个最优的价值:
$$
V^(s)=\max_{\pi} V^{\pi}(s), \quad Q^(s,a)=\max_{\pi} Q^{\pi}(s,a)
$$
在所有的策略中,总有一个策略比其他策略在一个状态下的状态好,或者不差于那个策略。而我们能干预的,是行动。如果知道最优的价值函数
在状态s下,选择让Q最大的动作就可以。
因此最优价值函数就是:
这个公式就是贝尔曼最优方程给出的
y 是最优策略期望在给定s时得到的一个采样。这个采样可以近似的理解为符合最优的Q:
用这个样本,构建一个基本的单步目标
$$
y_t = r_t + \gamma \max_{a}Q(s, a`)
$$
一次样本当然不能代表整个期望,但是反复采样,根据大数定律,这个增量就会逼近最优的Q的期望。
basic Q-learning
最基本的,如果
整个算法流程:
- 初始化
- for 序列
do: - 得到初始状态
- for 时间步
do: - 用
-greedy 策略根据 选择当前状态 下的动作 - 得到环境反馈的
- 用
- end for
- 得到初始状态
- end for
其中
DQN
如果状态空间是连续的,比如速度,位置等等,就不能用一张表来表达。Q可以看成是一个函数,而神经网络强大的拟合功能刚好适合做这个工作。
同样是拟合,对于${(s_i, a_i, r_i, s`i)}
\omega^*=\arg\min{\omega};\frac{1}{2N}\sum_{i=1}^{N}
\left[
Q_{\omega}(s_i,a_i)-\left(r_i+\gamma \max_{a’} Q_{\omega}(s’_i,a’)\right)
\right]^2
$$
DQN 的区别在于拥有一个经验回放,和目标网络
经验回放
维护一个缓冲区,将每次从环境中采样得到的四元组
目标网络。
在DQN的损失函数里面,可以发现存在两个跟Q网络有关的项。从有监督的视角出发,ground truth 跟网络有关, 优化的目标时网络,两段都有Q,会导致网络不稳定。
引入目标网路的概念。训练网络正常更新,目标网络使用较旧的参数。
- 用随机的网络参数
初始化当前网络 - 复制相同的参数
来初始化目标网络 - 初始化经验回放池
- for 序列
do - 获取环境初始状态
- for 时间步
do - 根据当前网络
以 -贪婪策略选择动作 - 执行动作
,获得回报 ,环境状态变为 - 将
存储进回放池 中 - 若
中数据足够,从 中采样 个数据 - 对每个数据,用目标网络计算目标值
- 最小化损失
以此更新当前网络 - 更新目标网络(硬更新或软更新)
- 根据当前网络
- end for
- 获取环境初始状态
- end for
- Title: DQN
- Author: GelerCAT
- Created at : 2025-12-19 23:59:31
- Updated at : 2025-12-22 12:17:16
- Link: https://redefine.ohevan.com/2025/12/19/DQN/
- License: This work is licensed under CC BY-NC-SA 4.0.