note
一、马尔科夫过程
- 递归结构形式的贝尔曼方程计算给定状态下的预期回报,这样的方式使得用逐步迭代的方法就能逼近真实的状态/行动值。
有了Bellman equation就可以计算价值函数了 - 马尔科夫过程描述了一个具有无记忆性质的随机过程,未来状态只依赖于当前状态,与过去状态无关,类似于一个人在空间中的随机游走。
二、动态规划
动态规划:多阶段决策问题的方法,它将问题分解为一系列的子问题,并通过保存子问题的解来构建整体问题的解。
\qquad 类比于回报公式 G t = R t + 1 + γ G t + 1 G_{t} = R_{t+1}+\gamma G_{t+1} Gt=Rt+1+γGt+1,也可以对状态价值函数和动作价值函数做一个类似的推导,如下:
V π ( s ) = E π [ G t ∣ S t = s ] = E π [ R t + 1 + γ R t + 2 + γ 2 R t + 3 + ⋯ ∣ S t = s ] = E [ R t + 1 ∣ s t = s ] + γ E [ R t + 2 + γ R t + 3 + γ 2 R t + 4 + ⋯ ∣ S t = s ] = R ( s ) + γ E [ G t + 1 ∣ S t = s ] = R ( s ) + γ E [ V π ( s t + 1 ) ∣ S t = s ] = R ( s ) + γ ∑ s ′ ∈ S P ( S t + 1 = s ′ ∣ S t = s ) V π ( s ′ ) = R ( s ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s ) V π ( s ′ ) Vπ(s)=Eπ[Gt∣St=s]=Eπ[Rt+1+γRt+2+γ2Rt+3+⋯∣St=s]=E[Rt+1∣st=s]+γE[Rt+2+γRt+3+γ2Rt+4+⋯∣St=s]=R(s)+γE[Gt+1∣St=s]=R(s)+γE[Vπ(st+1)∣St=s]=R(s)+γ∑s′∈SP(St+1=s′∣St=s)Vπ(s′)=R(s)+γ∑s′∈Sp(s′∣s)Vπ(s′) Vπ(s)=Eπ[Gt∣St=s]=Eπ[Rt+1+γRt+2+γ2Rt+3+⋯∣St=s]=E[Rt+1∣st=s]+γE[Rt+2+γRt+3+γ2Rt+4+⋯∣St=s]=R(s)+γE[Gt+1∣St=s]=R(s)+γE[Vπ(st+1)∣St=s]=R(s)+γs′∈S∑P(St+1=s′∣St=s)Vπ(s′)=R(s)+γs′∈S∑p(s′∣s)Vπ(s′)
\qquad 其中 R ( s ) R(s) R(s) 表示奖励函数, P ( S t + 1 = s ′ ∣ S t = s ) P(S_{t+1}=s^{\prime} \mid S_{t}=s) P(St+1=s′∣St=s)就是前面讲的状态转移概率,习惯简写成 p ( s ′ ∣ s ) p\left(s^{\prime} \mid s\right) p(s′∣s),这就是贝尔曼方程(Bellman Equation)。贝尔曼方程的重要意义就在于前面所说的满足动态规划的最优化原理,即将前后两个状态之间联系起来,以便于递归地解决问题。
\qquad 类似地,动作价值函数贝尔曼方程推导为:
Q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S p ( s ′ ∣ s , a ) ∑ a ′ ∈ A π ( a ′ ∣ s ′ ) Q π ( s ′ , a ′ ) Q_{\pi}(s,a) = R(s,a) + \gamma \sum_{s^{\prime} \in S} p\left(s^{\prime} \mid s,a\right) \sum_{a^{\prime} \in A} \pi\left(a^{\prime} \mid s ^{\prime} \right)Q_{\pi}\left(s^{\prime},a'\right) Qπ(s,a)=R(s,a)+γs′∈S∑p(s′∣s,a)a′∈A∑π(a′∣s′)Qπ(s′,a′)
\qquad 前面我们提到状态价值函数的定义就是按照某种策略 π \pi π进行决策得到的累积回报期望,换句话说,在最优策略下,状态价值函数也是最优的,相应的动作价值函数也最优。我们的目标是使得累积的回报最大化,那么最优策略下的状态价值函数可以表示为:
V ∗ ( s ) = max a E [ R t + 1 + γ V ∗ ( S t + 1 ) ∣ S t = s , A t = a ] = max a ∑ s ′ , r p ( s ′ , r ∣ s , a ) [ r + γ V ∗ ( s ′ ) ] V∗(s)=maxaE[Rt+1+γV∗(St+1)∣St=s,At=a]=maxa∑s′,rp(s′,r|s,a)[r+γV∗(s′)] V∗(s)=amaxE[Rt+1+γV∗(St+1)∣St=s,At=a]=amaxs′,r∑p(s′,r∣s,a)[r+γV∗(s′)]
\qquad
这个公式叫做贝尔曼最优方程(Bellman optimality equation),它对于后面要讲的策略迭代算法具有一定的指导意义。对于动作价值函数也是同理,如下:
Q
∗
(
s
,
a
)
=
E
[
R
t
+
1
+
γ
max
a
′
Q
∗
(
S
t
+
1
,
a
′
)
∣
S
t
=
s
,
A
t
=
a
]
=
∑
s
′
,
r
p
(
s
′
,
r
∣
s
,
a
)
[
r
+
γ
max
a
′
Q
∗
(
s
′
,
a
′
)
]
Q∗(s,a)=E[Rt+1+γmaxa′Q∗(St+1,a′)∣St=s,At=a]=∑s′,rp(s′,r∣s,a)[r+γmaxa′Q∗(s′,a′)]
Q∗(s,a)=E[Rt+1+γa′maxQ∗(St+1,a′)∣St=s,At=a]=s′,r∑p(s′,r∣s,a)[r+γa′maxQ∗(s′,a′)]
DQN算法
DQN算法的基本思想是使用一个深度神经网络作为智能体的Q函数近似器。Q函数表示在给定状态下采取某个动作的预期回报值。算法通过不断地在环境中与智能体的交互过程中,收集样本数据,然后使用这些数据来训练Q网络,使其能够预测最优的行动选择。
DQN算法的训练过程可以分为以下几个步骤:
- 初始化一个深度神经网络作为Q函数的近似器。
- 在每个时间步,智能体观察当前的状态,并根据当前状态选择一个动作。选择动作时可以使用ε-greedy策略,即以ε的概率随机选择动作,以1-ε的概率选择当前Q值最高的动作。
- 智能体执行选择的动作,与环境进行交互,并观察得到的奖励和下一个状态。
- 将当前状态、选择的动作、得到的奖励和下一个状态组成一个样本,存储在经验回放缓冲区中。
- 从经验回放缓冲区中随机采样一批样本,用于训练Q网络。训练过程中使用目标Q网络和当前Q网络的差异来计算损失,并通过反向传播算法来更新网络参数。
- 定期更新目标Q网络的参数,将当前Q网络的参数复制给目标Q网络。
- 重复步骤2至步骤6,直到达到预先设定的停止条件或训练轮数。
通过这样的训练过程,DQN算法能够逐步优化Q网络的参数,使其能够更准确地预测每个状态下的最优动作,并实现智能体在环境中做出最优决策的能力。
时间安排
任务 | 天数 | 截止时间 | 注意事项 |
---|---|---|---|
Task01: 马尔可夫过程、DQN算法 | 3天 | 1月15周一-17日周三 | |
Task02: 策略梯度算法 | 3天 | 1月18日周四-20周六 | |
Task03: A2C、A3C算法、JoyRL开源文档(关注多进程) | 3天 | 1月21日周日-23日周二 | |
Task04: DDPG、TD3算法 | 3天 | 1月24日周三-26日周五 | |
Task05: PPO算法,JoyRL代码实践(选择任一算法任一环境,研究算法不同参数给实验结果带来的影响,也可以用JoyRL上没有跑过的环境尝试) | 6天 | 1月27日周六-2月1号周四 |
Reference
[1] 开源内容https://linklearner.com/learn/detail/91
[2] https://github.com/datawhalechina/joyrl-book
评论记录:
回复评论: