【王树森】深度强化学习(DRL)学习笔记

目录

第一部分:基础知识

1.机器学习基础

2.蒙特卡洛估计

3.强化学习基础知识

  • 基本术语:状态(state)、状态空间(state space)、动作(action)、动作空间(action space)、智能体(agent)、环境(environment)、策略 (policy)、奖励(reward)、状态转移(state transition)。
  • 马尔可夫决策过程 (MDP) 通常指的是四元组 ( S , A , p , r ) (\mathcal{S}, \mathcal{A}, p, r) (S,A,p,r), 其中 S \mathcal{S} S 是状态空间, A \mathcal{A} A 是动作空间, p p p 是状态转移函数, r r r 是奖励函数。有时 MDP 指的是五元组 ( S , A , p , r , γ ) (\mathcal{S}, \mathcal{A}, p, r, \gamma) (S,A,p,r,γ),其中 γ \gamma γ 是折扣率。
  • 强化学习中的随机性来自于状态和动作。状态的随机性来源于状态转移, 动作的随机性来源于策略。奖励依赖于状态和动作, 因此奖励也具有随机性。
  • 回报(或折扣回报)是未来所有奖励的加和(或加权和)。回报取决于奖励,奖励取决于状态和动作, 因此回报的随机性来自于未来的状态和动作。强化学习的目标是最大化回报,而不是最大化奖励。
  • 动作价值函数 Q π ( s , a ) Q_\pi(s, a) Qπ(s,a) 、最优动作价值函数 Q ⋆ ( s , a ) Q^{\star}(s, a) Q(s,a) 、状态价值函数 V π ( s ) V_\pi(s) Vπ(s)
  • 强化学习分为基于模型的方法、无模型方法两大类。其中无模型方法又分为价值学习、策略学习两类。本书第二部分、第三部分会详细讲解价值学习和策略学习; 第 18 章用 AlphaGo 的例子讲解基于模型的方法。

3.1 马尔科夫决策过程

马尔可夫决策过程(Markov decision process,MDP)

一个MDP 通常由状态空间、动作空间、状态转移函数、奖励函数、折扣因子等组成

智能体

强化学习中谁做动作谁就是智能体

环境

与智能体交互的对象

状态

在每个时刻,环境有一个状态(state),可以理解为对当前时刻环境的概括

状态空间

指所有可能存在状态的集合,记作花体字母 S \mathcal{S} S。状态空间可以是离散的,也可以是连续的。状态空间可以是有限集合,也可以是无限可数集合。在超级玛丽、星际争霸、无人驾驶这些例子中,状态空间是无限集合,存在无穷多种可能的状态。围棋、五子棋、中国象棋这些游戏中,状态空间是离散有限集合,可以枚举出所有可能存在的状态(也就是棋盘上的格局)。

动作

智能体基于当前状态所做出的决策

动作空间

指所有可能动作的集合,记作花体字母 A \mathcal{A} A。动作空间可以是离散集合或连续集合,可以是有限集合或无限集合。

奖励

是指在智能体执行一个动作之后,环境返回给智能体的一个数值。奖励是状态和动作的函数往往由我们自己来定义,奖励定义得好坏非常影响强化学习的结果

通常假设奖励是当前状态 s s s 、当前动作 a a a 、下一时刻状态 s ′ s^{\prime} s 的函数, 把奖励函数记作 r ( s , a , s ′ ) r\left(s, a, s^{\prime}\right) r(s,a,s) 。有时假设奖励仅仅是 s s s a a a 的函数, 记作 r ( s , a ) r(s, a) r(s,a) 。我们总是假设奖励函数是有界的, 即对于所有 a ∈ A a \in \mathcal{A} aA s , s ′ ∈ S s, s^{\prime} \in \mathcal{S} s,sS, 有 ∣ r ( s , a , s ′ ) ∣ < ∞ \left|r\left(s, a, s^{\prime}\right)\right|<\infty r(s,a,s)<

此处隐含的假设是奖励函数是平稳的(stationary),即它不随着时刻t变化(不太理解)

状态转移

是指智能体从当前t时刻的状态 s s s转移到下一个时刻状态为 s ′ s^{\prime} s的过程。

状态转移概率
  • 状态转移可能是随机的,强化学习通常假设状态转移随机,随机性来源于环境。用状态转移概率函数描述状态转移: p ( s ′ ∣ s , a ) = P ( S ′ = s ′ ∣ S = s , A = a ) , p\left(s^{\prime} \mid s, a\right)=\mathbb{P}\left(S^{\prime}=s^{\prime} \mid S=s, A=a\right), p(ss,a)=P(S=sS=s,A=a),
    表示在当前状态 s s s, 智能体执行动作 a a a, 环境的状态变成 s ′ s^{\prime} s概率
    大写字母表示随机变量,小写字母表示观测值
  • 状态转移也可能是确定的,下一个状态 s ′ s^{\prime} s完全由s和a决定

3.2 策略

策略定义

根据观测到的状态,如何做出决策,即如何从动作空间中选取一个动作。强化学习的目标就是得到一个策略函数,在每个时刻根据观测到的状态做出决策。

  • 随机策略,记随机策略函数 π : ( s , a ) ↦ [ 0 , 1 ] \pi:(s, a) \mapsto[0,1] π:(s,a)[0,1]是一个概率密度函数 :
    π ( a ∣ s ) = P ( A = a ∣ S = s ) . \pi(a \mid s)=\mathbb{P}(A=a \mid S=s) . π(as)=P(A=aS=s).
    策略函数的输入是状态s和动作a,输出是一个0到1之间的概率值。含义是给定状态s,做出动作a的概率
  • 确定策略:输入状态s,直接输出相应的动作a
自己对强化学习的理解

在这里插入图片描述

智能体观测到状态 s s s,策略函数 π ( a ∣ s ) \pi(a|s) π(as)计算在当前状态 s s s下动作空间 A \mathcal{A} A所有动作的概率,随机抽样得到动作 a a a。此时状态 s s s和动作 a a a都被确定下来,环境根据状态转移函数 p ( s ′ ∣ s , a ) p(s^\prime|s,a) p(ss,a)计算所有可能状态的概率,随机抽样,得到新的状态 s ′ s' s,并反馈给智能体一个奖励 r t r_t rt,奖励是状态 s s s和动作 a a a的函数,即 r t = r ( s t , a t ) r_t = r(s_t,a_t) rt=r(st,at)

3.3 随机性的来源

随机性的两个来源
  • 状态是随机的,依赖于状态转移函数
  • 动作是随机的,依赖于策略函数
马尔科夫性质(无后效性)

假设状态转移具有马有马尔可夫性质, 即:
P ( S t + 1 ∣ S t , A t ) = P ( S t + 1 ∣ S 1 , A 1 , S 2 , A 2 , ⋯   , S t , A t ) . \mathbb{P}\left(S_{t+1} \mid S_t, A_t\right)=\mathbb{P}\left(S_{t+1} \mid S_1, A_1, S_2, A_2, \cdots, S_t, A_t\right) . P(St+1St,At)=P(St+1S1,A1,S2,A2,,St,At).

公式的意思是下一时刻状态 S t + 1 S_{t+1} St+1 仅依赖于当前状态 S t S_t St 和动作 A t A_t At, 而不依赖于过去的状态和动作。
即在推导后面阶段的状态的时候,我们只关心前一个阶段的状态值,不关心这个状态是怎么一步一步推导出来的。

轨迹

指一回合(episode)游戏中,智能体观测到的所有的状态、动作、奖励。
在这里插入图片描述

3.4 回报与折扣汇报

回报

回报(return) 是从当前时刻开始到本回合结束的所有奖励的总和,所以回报也叫做累计奖励(cumulative future reward)
U t = R t + R t + 1 + R t + 2 + R t + 3 + ⋯ + R n U_t=R_t+R_{t+1}+R_{t+2}+R_{t+3}+\cdots+R_n Ut=Rt+Rt+1+Rt+2+Rt+3++Rn
强化学习的目标就是寻找一个策略,使得回报的期望最大化

折扣回报

在MDP中,通常使用折扣回报,给未来的奖励做折扣:
U t = R t + γ ⋅ R t + 1 + γ 2 ⋅ R t + 2 + γ 3 ⋅ R t + 3 + ⋯ U_t=R_t+\gamma \cdot R_{t+1}+\gamma^2 \cdot R_{t+2}+\gamma^3 \cdot R_{t+3}+\cdots Ut=Rt+γRt+1+γ2Rt+2+γ3Rt+3+其中, γ ∈ [ 0 , 1 ] \gamma∈[0,1] γ[0,1]叫做折扣率

回报中的随机性

t时刻的 U t U_t Ut依赖于 R t R_t Rt R n R_n Rn,奖励 R t R_t Rt依赖于状态 s t s_t st(小写是因为假设已经观测到了t时刻的状态)与动作 A t A_t At(大写是因为智能体还未根据策略做出动作),奖励 R t + 1 R_{t+1} Rt+1依赖于状态 S t + 1 S_{t+1} St+1(未知)与动作 A t + 1 A_{t+1} At+1(未知),以此类推,因此 U t U_t Ut的随机性来源于:
A t , S t + 1 , A t + 1 , S t + 2 , A t + 2 , ⋯   , S n , A n A_t,S_{t+1}, A_{t+1}, \quad S_{t+2}, A_{t+2}, \cdots, \quad S_n, A_n At,St+1,At+1,St+2,At+2,,Sn,An

3.5 价值函数

动作-价值函数
  • 定义
    在t时刻,我们不知道 U t U_t Ut的值,而我们又想预判 U t U_t Ut的值从而知道局势的好坏。该怎么办呢?解决方案就是对 U t U_t Ut求期望,消除掉其中的随机性。
    假设我们已经观测到状态 s t s_t st,而且做完决策,选中动作 a t a_t at。那么 U t U_t Ut中的随机性来自于 t + 1 t + 1 t+1时刻起的所有的状态和动作:
    S t + 1 , A t + 1 , S t + 2 , A t + 2 , ⋯   , S n , A n S_{t+1}, A_{t+1}, \quad S_{t+2}, A_{t+2}, \cdots, \quad S_n, A_n St+1,At+1,St+2,At+2,,Sn,An U t U_t Ut 关于变量 S t + 1 , A t + 1 , ⋯   , S n , A n S_{t+1}, A_{t+1}, \cdots, S_n, A_n St+1,At+1,,Sn,An 求条件期望, 得到的就是动作-价值函数:
    Q π ( s t , a t ) = E S t + 1 , A t + 1 , ⋯   , S n , A n [ U t ∣ S t = s t , A t = a t ] Q_\pi\left(s_t, a_t\right)=\mathbb{E}_{S_{t+1}, A_{t+1}, \cdots, S_n, A_n}\left[U_t \mid S_t=s_t, A_t=a_t\right] Qπ(st,at)=ESt+1,At+1,,Sn,An[UtSt=st,At=at]
    动作价值函数 Q π ( s t , a t ) Q_\pi\left(s_t, a_t\right) Qπ(st,at) 仅依赖于 s t s_t st a t a_t at, 而不依赖于 t + 1 t+1 t+1 时刻及其之后的状态和动作,因为随机变量 S t + 1 , A t + 1 , ⋯   , S n , A n S_{t+1}, A_{t+1}, \cdots, S_n, A_n St+1,At+1,,Sn,An 都被期望消除了。由于动作 A t + 1 , ⋯   , A n A_{t+1}, \cdots, A_n At+1,,An 的概率质量函数都是 π \pi π, 公式中的期望依赖于 π \pi π; 用不同的 π \pi π, 求期望得出的结果就会不同。因此 Q π ( s t , a t ) Q_\pi\left(s_t, a_t\right) Qπ(st,at) 依赖于 π \pi π, 这就是为什么动作价值函数有下标 π 。 \pi_。 π
    因此,动作价值函数依赖于三个因素,当前状态 s t s_t st,当前动作 a t a_t at,策略函数 π \pi π

  • 直观含义:Q(s,a) 表示的是智能体在状态 s 下选择动作a 后,并一直按照策略 π 行动所能获得的总奖励(回报)的期望

  • 具体过程:
    1.起始:在状态s下选择动作 a。
    2.转移:选择动作 a后,环境根据转移概率转移到新状态s’,并给予即时奖励 r1。
    3.策略 π 执行:从状态 s’开始,智能体按照策略 π选择下一个动作 a’ .
    4.重复:从状态s’开始,重复上述步骤(2和3),直到达到终止状态或无限循环。

最优动作-价值函数

最优动作价值函数:使用最大化消除了策略函数 π \pi π的影响,与当前状态 s t s_t st,当前动作 a t a_t at有关

状态-价值函数

状态价值函数:消除了 A t A_t At的影响,只与当前状态 s t s_t st和策略函数 π \pi π有关

总结:

  • 动作价值函数:消除了 S t + 1 , A t + 1 , S t + 2 , A t + 2 , ⋯   , S n , A n S_{t+1}, A_{t+1}, \quad S_{t+2}, A_{t+2}, \cdots, \quad S_n, A_n St+1,At+1,St+2,At+2,,Sn,An的影响,与当前状态 s t s_t st,当前动作 a t a_t
### 关于王树森深度强化学习代码实现 在深入探讨王树森教授有关深度强化学习的工作时,可以发现其研究重点在于通过行为克隆(Behavior Cloning)初始化策略网络之后,利用强化学习进一步优化该策略网络,使其能够更有效地执行特定任务[^2]。 下面是一个简化版的Python代码示例,展示了如何基于PyTorch框架构建并训练一个简单的神经网络模型来表示策略函数π(a|s),即给定状态s下采取行动a的概率分布: ```python import torch from torch import nn, optim import numpy as np class PolicyNet(nn.Module): def __init__(self, input_dim, hidden_dims, output_dim): super(PolicyNet, self).__init__() layers = [] last_dim = input_dim for dim in hidden_dims: layers.append(nn.Linear(last_dim, dim)) layers.append(nn.ReLU()) last_dim = dim layers.append(nn.Linear(last_dim, output_dim)) layers.append(nn.Softmax(dim=-1)) self.model = nn.Sequential(*layers) def forward(self, x): return self.model(x) def select_action(policy_net, state): state_tensor = torch.from_numpy(state).float().unsqueeze(0) probs = policy_net(state_tensor) m = torch.distributions.Categorical(probs) action = m.sample() return action.item(), m.log_prob(action) env_name = 'CartPole-v1' input_size = 4 hidden_sizes = [128] output_size = 2 policy_network = PolicyNet(input_size, hidden_sizes, output_size) optimizer = optim.Adam(policy_network.parameters(), lr=1e-3) for episode in range(100): total_reward = 0 log_probs = [] observation = env.reset() while True: chosen_action, log_prob = select_action(policy_network, observation) next_observation, reward, done, _ = env.step(chosen_action) total_reward += reward log_probs.append(log_prob) if done: break observation = next_observation optimizer.zero_grad() loss = -sum(log_probs) * (total_reward / sum([r != 0 for r in rewards])) loss.backward() optimizer.step() print(f'Episode {episode}: Total Reward={total_reward}') ``` 上述代码实现了基本的策略梯度算法,在每次迭代过程中收集轨迹数据,并据此更新参数以最大化预期回报。需要注意的是这只是一个非常基础的例子,实际应用中可能还需要考虑更多因素如奖励折扣、基线减法等技术细节。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值