价值学习—笔记
Deep Q-Network(DQN)
Q*函数:
最优动作价值函数。无论策略函数pi 改变,结果在状态st下选择的动作最好的就是最优动作价值函数评价的动作,可以指导agent作出动作决策。
Q
π
∗
(
s
t
,
a
t
)
=
m
a
x
π
Q
π
(
s
t
,
a
t
)
Q^{*}_{\pi}(s_{t},a_{t}) = max_{\pi}Q_{\pi}(s_{t},a_{t})
Qπ∗(st,at)=maxπQπ(st,at)
O b v i o u s l y , t h e b e s t a c t i o n i s a ∗ = a r g m a x Q ∗ ( s , a ) . Q ∗ i s a n i n d i c a t i o n f o r h o w g o o d i t i s f o r a n a g e n t t o p i c k u p a c t i o n a w h i l e b e i n g i n s t a t e s . Obviously, the \ best \ action\ is\ a^{*}=argmaxQ^{*}(s,a). \\ Q^{*}\ is\ an \ indication\ for \ how\ good\ it\ is\ for\ an\ agent\ to\ pick\ up\ action\ a\ while\ being\ in\ state\ s. Obviously,the best action is a∗=argmaxQ∗(s,a).Q∗ is an indication for how good it is for an agent to pick up action a while being in state s.
DQN的基本概念
DQN(Deep Q-Network) 是一种结合了深度学习和强化学习的算法,用于解决在高维状态空间下的决策问题。DQN 是由 Google DeepMind 提出的,最早应用于在复杂环境(如 Atari 游戏)中训练智能体,使其能够在没有明确模型的情况下学习如何采取最优行动。
DQN 主要是基于 Q-learning 的思想,它通过学习一个 Q值函数 ( Q(s, a) ) 来估计在给定状态 ( s ) 下采取某个动作 ( a ) 所能获得的累计奖励。然后,智能体根据这个 Q 值函数选择行动,以期最大化累计奖励。然而,在高维度的状态空间中,传统的 Q-learning 由于存储和计算的限制难以直接应用。DQN 使用神经网络来近似 Q 值函数,从而解决这个问题。
DQN的参数为w, 输入为状态s,输出是动作的打分。
DQN网络的简单例子:
DQN网络的过程:
DQN的核心要素
-
经验回放(Experience Replay):
- 智能体在与环境交互时,会生成大量的经验样本(状态、动作、奖励、下一个状态)。这些样本被存储在一个回放缓冲区中。
- 在训练过程中,DQN 随机抽取小批量样本进行训练,而不是直接使用当前的样本。这种方式可以打破数据之间的相关性,稳定训练过程。
-
目标网络(Target Network):
- DQN 使用两个神经网络:一个是主网络(用于计算 Q 值),另一个是目标网络(用于计算目标 Q 值)。
- 目标网络的参数周期性地从主网络复制,以避免目标值频繁更新引起的震荡问题。
-
Q-learning的更新公式:
-
对于每个样本,DQN 使用贝尔曼方程来更新 Q 值。具体来说,Q-learning 的更新公式为:
Q ( s , a ) ← Q ( s , a ) + α [ r + γ max a ′ Q ( s ′ , a ′ ) − Q ( s , a ) ] Q(s, a) \leftarrow Q(s, a) + \alpha \left[ r + \gamma \max_{a'} Q(s', a') - Q(s, a) \right] Q(s,a)←Q(s,a)+α[r+γa′maxQ(s′,a′)−Q(s,a)] -
在 DQN 中,神经网络通过最小化以下损失函数来更新参数:
L ( θ ) = E [ ( r + γ max a ′ Q ( s ′ , a ′ ; θ − ) − Q ( s , a ; θ ) ) 2 ] L(\theta) = \mathbb{E} \left[ \left( r + \gamma \max_{a'} Q(s', a'; \theta^-) - Q(s, a; \theta) \right)^2 \right] L(θ)=E[(r+γa′maxQ(s′,a′;θ−)−Q(s,a;θ))2]
其中,θ是主网络的参数,θ- 是目标网络的参数。
-
-
ϵ-贪婪策略(ϵ-Greedy Policy):
- DQN 在训练过程中使用 ϵ-贪婪策略来选择动作,即以ϵ 的概率随机选择一个动作(探索),以 1 - ϵ 的概率选择当前 Q 值最大的动作(利用)。随着训练的进行, ϵ通常会逐渐减少。
DQN的改进与变种
由于 DQN 的成功,后续提出了许多改进和变种算法,以提高学习效率和稳定性,如:
-
Double DQN:
- Double DQN 通过分离动作选择和动作评估,减少了 Q-learning 中的过度估计问题。
-
Dueling DQN:
- Dueling DQN 将 Q 值函数分解为状态值函数和优势函数的组合,使得在某些状态下,即使没有实际执行动作,也可以对状态进行更好的评估。
-
Prioritized Experience Replay:
- 优先经验回放通过给重要的经验样本赋予更高的优先级来提高学习效率。
DQN的应用
DQN 在以下场景中具有广泛应用:
- 游戏人工智能:如 Atari 游戏中的智能体控制。
- 自动驾驶:用于车辆在模拟环境中的路径规划和决策。
- 机器人控制:在高维度状态下优化机器人的动作选择。
总结
DQN 是一种将深度学习与强化学习相结合的强大算法,能够在复杂的环境中学习最优策略。通过使用神经网络来近似 Q 值函数,以及引入经验回放和目标网络等技术,DQN 大大提高了在高维状态空间中学习的能力。
TD算法
TD算法(Temporal Difference Learning,时序差分学习)是一种用于强化学习中的重要算法,结合了蒙特卡罗方法和动态规划的优点。TD算法通过在学习过程中更新估计的价值函数,逐步逼近真实的价值函数,从而帮助智能体在未知环境中逐步学习最优策略。
TD算法的核心思想
TD算法的核心思想是使用时序差分误差(Temporal Difference Error)来更新价值估计,而不是等待整个序列结束再进行更新。这使得TD算法能够在线(即在每一步后)学习,并且能够在不完全的情境下进行学习。
TD算法的基本公式
TD算法用于估计状态价值函数 V(s) ,即在给定状态 s 下,遵循某策略 pi 所获得的预期累计奖励。
对于一个给定的状态 st,TD算法通过以下公式更新价值估计:
V
(
s
t
)
←
V
(
s
t
)
+
α
[
r
t
+
1
+
γ
V
(
s
t
+
1
)
−
V
(
s
t
)
]
V(s_t) \leftarrow V(s_t) + \alpha \left[ r_{t+1} + \gamma V(s_{t+1}) - V(s_t) \right]
V(st)←V(st)+α[rt+1+γV(st+1)−V(st)]
其中:
V
(
s
t
)
:状态
s
t
当前的价值估计。
α
:学习率,控制更新的步长。
r
t
+
1
:智能体在
t
时刻从状态
s
t
转移到
t
+
1
时刻的状态
s
t
+
1
所获得的即时奖励。
γ
:折现因子,权衡当前奖励和未来奖励的相对重要性。
V
(
s
t
+
1
)
:下一个状态
s
t
+
1
的价值估计。
[
r
t
+
1
+
γ
V
(
s
t
+
1
)
−
V
(
s
t
)
]
:时序差分误差,用于衡量当前价值估计与实际反馈之间的差异。
V(s_t) :状态 s_t 当前的价值估计。 \\ \alpha :学习率,控制更新的步长。 \\r_{t+1} :智能体在 t 时刻从状态 s_t 转移到 t+1 时刻的状态 s_{t+1} 所获得的即时奖励。 \\ \gamma :折现因子,权衡当前奖励和未来奖励的相对重要性。 \\ V(s_{t+1}) :下一个状态 s_{t+1} 的价值估计。 \\ \left[ r_{t+1} + \gamma V(s_{t+1}) - V(s_t) \right]:时序差分误差,用于衡量当前价值估计与实际反馈之间的差异。
V(st):状态st当前的价值估计。α:学习率,控制更新的步长。rt+1:智能体在t时刻从状态st转移到t+1时刻的状态st+1所获得的即时奖励。γ:折现因子,权衡当前奖励和未来奖励的相对重要性。V(st+1):下一个状态st+1的价值估计。[rt+1+γV(st+1)−V(st)]:时序差分误差,用于衡量当前价值估计与实际反馈之间的差异。
TD算法的特点
-
在线学习:
- TD算法可以在智能体与环境的交互过程中逐步学习价值函数,不需要等到整个序列结束。它通过每一步的反馈来调整价值估计,适合于动态或长期的任务。
-
结合蒙特卡罗和动态规划的优点:
- TD算法像动态规划一样使用贝尔曼方程进行递归更新,但又像蒙特卡罗方法一样从实际经验中学习,而不是依赖完整的模型。
-
无偏估计:
- TD算法能够在策略评估时提供无偏估计,在策略改进时逐步逼近最优策略。
TD算法的变种
-
TD(0):
- 最简单的TD算法,每一步都根据当前状态和下一个状态进行更新。
-
TD(λ):
- TD(λ) 是TD算法的一种推广,通过引入一个参数 λ将TD(0)和蒙特卡罗方法统一起来。TD(λ) 在每次更新时考虑多个时间步的回报,从而在TD(0)和蒙特卡罗方法之间找到一个平衡点。
-
SARSA:
- SARSA 是基于TD算法的一个策略迭代算法,用于求解马尔科夫决策过程中的最优策略。它在更新过程中考虑了当前策略选择的动作。
-
Q-learning:
- Q-learning 也是基于TD算法的,但它是一个无模型的强化学习算法,用于求解最优策略。Q-learning 与SARSA 的不同在于,它使用最大化未来奖励的动作来更新价值函数,而不是当前策略下的动作。
TD算法的应用
TD算法被广泛应用于各种强化学习任务中,例如:
- 游戏AI:用于训练智能体在复杂游戏环境中的决策能力。
- 机器人控制:用于实时更新机器人的路径规划和动作选择。
- 金融市场预测:在复杂的市场环境中预测价格走势并进行投资决策。
总结
TD算法通过结合蒙特卡罗方法和动态规划的优点,为强化学习提供了一种强大的工具,能够在不完全的环境信息下在线学习和优化决策。它的灵活性和有效性使其成为强化学习中的基础算法之一。