强化学习打卡笔记

绪论

什么是强化学习

强化学习其实是通过模拟一个智能体对一个物体或者环境做出决策,得到反馈,再做出决策的过程,有点类似于试错学习。我们生活中常见的强化学习的例子有:Alpha Go下围棋, 王者荣耀中的觉悟人机, 网上一下下象棋的AI等,他们都是通过不断的试错,从而让AI得到一个比较理想的决策模型,通过这个决策模型来实现上面所说的例子。

强化学习中的一些概念

  • 探索: 智能体会尝试开辟一些新的路线
  • 利用: 智能体在已知的路线中,选出最好的一条路线进行执行
  • 奖励: 在智能体得到一个比较好的结果时,我们就赋值一个正数给智能体的价值函数,作为一个奖励
  • 惩罚: 在智能体得到一个比较坏的结果时,我们就赋值一个负数给智能体的价值函数,作为一个惩罚

从数据中学习

强化学习都是基于数据来实现的,有好几个方向,例如:多智能体强化学习,模仿学习,逆强化学习,人类反馈强化学习RLHF等。

强化学习都是基于数据的

  1. 探索策略:
    前面有提到过,强化学习其实就是一个试错过程,既然是要试错,那么对于我们的探索策略而言,肯定是要考虑到当前状态下,有哪几种行动可以让我们选择,在我们确定好有多少种行动后,我们就会对每一个行动进行一个探索,然后根据得到反馈(奖励或者惩罚)从而不断优化探索策略。
  2. 实时环境:
    在实际应用中很多智能体需要依靠外部环境来获得数据,但这样会受限于数据量和获取效率,所以大多数都会采用虚拟环境来训练,很多智能体都会在一个基于实际环境创建出来的模拟环境中进行大量训练,然后将训练好的智能体放到实际环境中进行测试

马尔可夫决策过程

马尔可夫决策过程是强化学习的基本问题模型之一,它能够以数学的形式来描述智能体在与环境交互的过程中学到一 个目标的过程。这里智能体充当的是作出决策或动作,并且在交互过程中学习的角色,环境指的是智能体与之交互的一切外在事物,不包括智能体本身。
在这里插入图片描述

马尔可夫性质

马尔可夫决策过程中有一个前提的限制,即马尔可夫性质,公式如下:
P ( s t + 1 ∣ s 0 , s 1 , … , s t ) = P ( s t + 1 ∣ s t ) P(s_{t+1}|s_0, s_1, \ldots, s_t) = P(s_{t+1}|s_t) P(st+1s0,s1,,st)=P(st+1st)
这个公式的意思就是说影响当前状态的未来状态的因素只与当前因素有关,如果满足这个条件,就意味着我们很多决策都可以只根据当前的状态去进行,而无需考虑历史状态。但实际情况中还是有很多例子不符合这个马尔可夫性质,例如棋类游戏等。

回报

在马尔可夫决策过程中,我们的奖励累积值为:
G t = r 1 + r 2 + … + r T G_t = r_1 + r_2 + \ldots + r_T Gt=r1+r2++rT

其中, T T T为这一轮决策中的最后一个时步, G t G_t Gt表示为回报,这个公式只适应于有限步数的情景,比如贪吃蛇,一张地图就这么大,总会有某一时刻使得游戏结束。那如果面对无限步数的场景,我们该怎么办呢?为了解决这个问题,我们引入了一个折扣因子 γ \gamma γ,这时候的回报公式为:

G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + … = ∑ k = 0 ∞ γ k R t + k + 1 G_t = R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \ldots = \sum_{k=0}^{\infty} \gamma^k R_{t+k+1} Gt=Rt+1+γRt+2+γ2Rt+3+=k=0γkRt+k+1

这个折扣因子的值在0-1之间,可以从公式看出, γ \gamma γ控制着 G t G_t Gt的值受到未来状态的影响程度,它体现了我们对长远目标的关注度,换句话说, γ \gamma γ越大,我们对未来状态的越关注, γ \gamma γ越小,我们越不关注它的未来状态。
这个公式的好处是在连续状态的情况下,我们当前时步的回报 G t G_t Gt跟下一个时步的 G t + 1 G_{t+1} Gt+1是有关联的,即:
G t = R t + 1 + γ R t + 2 + γ 2 R t + 3 + γ 3 R t + 4 + … = R t + 1 + γ ( R t + 2 + γ R t + 3 + γ 2 R t + 4 + … ) = R t + 1 + γ G t + 1 \begin{align*} G_t &= R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \gamma^3 R_{t+4} + \ldots \\ &= R_{t+1} + \gamma (R_{t+2} + \gamma R_{t+3} + \gamma^2 R_{t+4} + \ldots) \\ &= R_{t+1} + \gamma G_{t+1} \end{align*} Gt=Rt+1+γRt+2+γ2Rt+3+γ3Rt+4+=Rt+1+γ(Rt+2+γRt+3+γ2Rt+4+)=Rt+1+γGt+1

状态转移矩阵

我们强化学习中大部分场景状态都是有限的,如果出现状态是无限的情况下,就要使用泊松过程了,尽管泊松过程非常有用,但对于大多数强化学习场景,还是用的有限状态马尔可夫决策过程。

以马尔科夫链为例子,如图:
在这里插入图片描述
我们有三个状态,每个状态都有三条边连接,其中这三条边相加的概率为1,每一条线表示着从当前状态转移到下一状态之间的概率。
这个和编译原理的有限自动机的状态转换图相似,我们定义状态转换概率函数为:
P s s ′ = P ( S t + 1 = s ′ ∣ S t = s ) P_{ss'} = P(S_{t+1} = s' | S_t = s) Pss=P(St+1=sSt=s)
通过这个公式,我们可以得到上图的状态转移矩阵
P s s ′ = [ 0.2 0.4 0.4 0.2 0.5 0.3 0.1 0.3 0.6 ] P_{ss'} = \begin{bmatrix} 0.2 & 0.4 & 0.4 \\ 0.2 & 0.5 & 0.3 \\ 0.1 & 0.3 & 0.6 \end{bmatrix} Pss= 0.20.20.10.40.50.30.40.30.6
状态转移矩阵属于环境的一部分。

马尔可夫决策过程和有限自动机一样,也是由五元组表示,这里的五元组为: ⟨ S , A , R , P , γ ⟩ \langle S, A, R, P, \gamma \rangle S,A,R,P,γ。其中S为状态空间,也就是状态的集合,A为动作空间,R为奖励函数,P为状态转移矩阵, γ \gamma γ为折扣因子

此外,在马尔可夫链(马尔可夫过程)的基础上增加奖励元素就会形成马尔可夫奖励过程,在马尔可夫奖励过程基础上增加动作的元素就会形成马尔可夫决策过程,也就是强化学习的基本问题模型之一。其中马尔可夫链和马尔可夫奖励过程在其他领域例如金融分析会用的比较多,强化学习则重在决策,这里讲马尔可夫链的例子也是为了帮助读者理解状态转移矩阵的概念。

强化学习中的动态规划

在强化学习中的动态规划的主要目标就是在当前状态上,基于历史状态找到最优的 G t G_t Gt。动态规划中,最重要的两点就是找到状态转移函数和初始化状态转移数组

状态价值函数和动作价值函数

我们定义了马尔可夫决策过程为:马尔可夫过程 + 奖励过程 + 动作元素,所以我们也要先确定好状态价值函数和动作价值函数。
我们定义状态价值函数为:
V π ( s ) = E π [ R t + γ R t + 1 + γ 2 R t + 2 + … ∣ S t = s ] V_{\pi}(s) = \mathbb{E}_{\pi}[R_t + \gamma R_{t+1} + \gamma^2 R_{t+2} + \ldots \mid S_t = s] Vπ(s)=Eπ[Rt+γRt+1+γ2Rt+2+St=s]
= E π [ G t ∣ S t = s ] = \mathbb{E}_{\pi}[G_t \mid S_t = s] =Eπ[GtSt=s]

定义动作价值函数为:
Q π ( s , a ) = E π [ G t ∣ S t = s , A t = a ] Q_{\pi}(s, a) = \mathbb{E}_{\pi}[G_t \mid S_t = s, A_t = a] Qπ(s,a)=Eπ[GtSt=s,At=a]

由上面的公式来看,我们状态价值函数和动作价值函数有一个关系,就是:
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V_{\pi}(s) = \sum_{a \in A} \pi(a \mid s) Q_{\pi}(s, a) Vπ(s)=aAπ(as)Qπ(s,a)

其中其中 π ( a ∣ s ) \pi(a \mid s) π(as)表示策略函数,这个公式可以理解为:当前状态s的价值为,所有智能体动作价值的全期望

贝尔曼方程

我们以回报函数 G t = R t + 1 + γ G t + 1 G_t = R_{t+1} + \gamma G_{t+1} Gt=Rt+1+γGt+1为参考对象,对 V π ( s ) V_{\pi}(s) Vπ(s)进行推导,推导过程如下:
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 ′ P ( s ′ ∣ s ) V π ( s ′ ) \begin{align*} V_{\pi}(s) &= \mathbb{E}_{\pi}[G_t | S_t = s] \\ &= \mathbb{E}_{\pi}[R_{t+1} + \gamma R_{t+2} + \gamma^2 R_{t+3} + \ldots | S_t = s] \\ &= \mathbb{E}[R_{t+1} | S_t = s] + \gamma \mathbb{E}[R_{t+2} + \gamma R_{t+3} + \gamma^2 R_{t+4} + \ldots | S_t = s] \\ &= R(s) + \gamma \mathbb{E}[G_{t+1} | S_t = s] \\ &= R(s) + \gamma \mathbb{E}[V_{\pi}(S_{t+1}) | S_t = s] \\ &= R(s) + \gamma \sum_{s' \in \mathcal{S}} P(S_{t+1} = s' | S_t = s) V_{\pi}(s') \\ &= R(s) + \gamma \sum_{s'} P(s' | s) V_{\pi}(s') \end{align*} Vπ(s)=Eπ[GtSt=s]=Eπ[Rt+1+γRt+2+γ2Rt+3+St=s]=E[Rt+1St=s]+γE[Rt+2+γRt+3+γ2Rt+4+St=s]=R(s)+γE[Gt+1St=s]=R(s)+γE[Vπ(St+1)St=s]=R(s)+γsSP(St+1=sSt=s)Vπ(s)=R(s)+γsP(ss)Vπ(s)

同比类推动作价值函数递推公式为:
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' \in \mathcal{S}} P(s' | s, a) \sum_{a' \in \mathcal{A}} \pi(a' | s') Q_{\pi}(s', a') Qπ(s,a)=R(s,a)+γsSP(ss,a)aAπ(as)Qπ(s,a)

根据这些公式,我们可以得出最优的贝尔曼公式,状态价值函数为:
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) = \max_a \mathbb{E} \left[ R_{t+1} + \gamma V^{*}(S_{t+1}) \mid S_t = s, A_t = a \right] \\ = \max_a \sum_{s', r} p(s', r \mid s, a) \left[ r + \gamma V^{*}(s') \right] V(s)=amaxE[Rt+1+γV(St+1)St=s,At=a]=amaxs,rp(s,rs,a)[r+γV(s)]

动作最优函数为:
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) = \mathbb{E} \left[ R_{t+1} + \gamma \max_{a'} Q^{*}(S_{t+1}, a') \mid S_t = s, A_t = a \right] \\ = \sum_{s', r} p(s', r \mid s, a) \left[ r + \gamma \max_{a'} Q^{*}(s', a') \right] Q(s,a)=E[Rt+1+γamaxQ(St+1,a)St=s,At=a]=s,rp(s,rs,a)[r+γamaxQ(s,a)]

免模型预测

在大部分情况下对于智能体来说,环境是未知的,基于这种情况下的算法就称之为免模型算法,目前很多经典的强化学习算法都是免模型的,常见的免模型算法有:Q-Learning,Sarsa,DQN等。通常情况下,智能体会根据特定动作的价值或优化策略。直接从与环境的交互中学习,不需要建立任何预测环境动态的模型。

预测和控制

预测

利用基于当前环境的状态得到的状态价值函数来预测下一状态的过程称为预测

控制

控制则是找到一个最优策略,使得当前环境下执行某个动作得到的回报最大。通常涉及到策略评估和策略改进

蒙特卡洛估计

蒙特卡洛估计是通过模拟统计的方法来进行对状态价值函数的预测,就好比我们计算一个圆形的面积,我们可以画一个以圆形直径为边的正方形,然后往里面投针,投很多次后统计落在圆外还是园内的次数,最后基于他们的次数比和正方形的面积,估计出圆形的面积,这就是蒙特卡洛估计

时序差分估计

时序差分估计是强化学习中的一种方法,它结合了蒙特卡洛方法和动态规划的思想。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 [r_{t+1} + \gamma V(s_{t+1}) - V(s_t)] V(st)V(st)+α[rt+1+γV(st+1)V(st)]

  • V ( s t ) V(s_t) V(st) 代表在时间 ( t ) 时状态 s t s_t st的价值估计。
  • α \alpha α 是学习率,用来决定新的估计值会在多大程度上影响旧的估计值。
  • r t + 1 r_{t+1} rt+1是在时间 ( t+1 ) 获得的即时奖励。
  • γ \gamma γ是折扣因子,用来降低未来奖励的当前价值。
  • V ( s t + 1 ) V(s_{t+1}) V(st+1) 是在下一个时间点 ( t+1 ) 的状态 s t + 1 s_{t+1} st+1 的价值估计。

时序差分估计的核心思想是利用当前的估计来更新之前的估计。具体来说,我们用下一个状态的估计值 V ( s t + 1 ) V(s_{t+1}) V(st+1)和即时奖励 r t + 1 r_{t+1} rt+1来更新当前状态的价值估计 V ( s t ) V(s_t) V(st)。这种更新是通过考虑实际获得的奖励和预期奖励之间的差异(即时序差分错误)来进行的。

更新规则可以这样理解:如果在时间 t + 1 t+1 t+1获得的奖励加上下一个状态的折扣后的价值比我们原本预期的 V ( s t ) V(s_t) V(st)要高,那么我们需要增加 V ( s t ) V(s_t) V(st)的估计值,反之亦然。学习率 α \alpha α控制了我们根据新信息更新估计值的速度。通过这种方式,TD学习可以更快地收敛到稳定的策略,特别是在处理连续和非确定性问题时更为有效。

深度学习与强化学习

强化学习的特点在于控制和预测,深度学习的特点在于预测,所以我们很多时候会把深度学习和强化学习结合使用,那么深度学习和强化学习有什么不同呢?

  1. 训练方式上不同:强度学习在于与环境不断交互,从而得到新的样本,而深度学习需要提取准备大量的样本进行训练
  2. 解决的问题不同:强化学习用来序列问题,而深度学习主要用来解决预测问题

具体来说如下图

在这里插入图片描述

深度学习基础

说起深度学习,就不由得提起机器学习中的线性回归,我们常说的线性回归就是通过拟合一条曲线来预测数据,而线性回归的原理就极大似然估计,通过大量的数据,来不断带入进去,计算误差,求梯度,反向更新参数,最后得到一个近似解。

然后逻辑回归则是出现在线性回归之后,主要用于二分类情况, 通过sigmoid函数将线性回归的值映射到0-1区间,然后选取0-1区间的某个值作为阈值,超过则归类为True,未超过则归类为False

我们的神经网络就是借鉴了逻辑回归而产生的,神经网络有很多中类别,如全连接,AlexNet, CNN, VGGnet,ResNet等

DQN算法

神经网络代替Q表

我们使用Q-Learn算法时,会有一个Q表,表示每一个状态的价值,Q表的作用是给出当前状态对应的某个价值,而神经网络的作用是预测某个值,或者某个值,那样我们就可以将神经网络结合进去Q-learn算法里面,让神经网络代替Q表。
在这里插入图片描述

经验回放

在我们神经网络的训练中,我们会给出大量的数据,用于神经网络的训练,但是在强化学习中,我们的学习样本大多数都是在和环境实时交互中产生的,如果每产生一个值就用于训练的话,会导致整体效果收到个体影响大,所以我们设立了经验池,这个经验池存放了每一次交互产生的样本,我们给这个经验池设置一个上限,如果达到这个上限就会替换最早进入的样本,我们每次训练神经网络都会从经验池里面抽一批样本出来进行训练,这样就缓解了单一样本训练神经网络出现的问题。

目标网络

我们在训练过程中,我们会定义两个网络,一个是当前网络,一个是目标网络,我们每一次更新,更新的都是当前网络,而每过一段时间都会将当前网络的值更新到目标网络中去,这样做可以防止当前部分不良样本对整个目标的网络的影响。
在这里插入图片描述

DQN算法改进

对于DQN算法,我们相比于Q-learn,新增了神经网络,经验回放,目标网格,所以优化改进就是从这三个方面进行改进。

Double DQN

对目标网格进行改进。思想:在DQN中,我们的优化函数为:
Q θ ( s t , a t ) ← Q θ ( s t , a t ) + α [ r t + γ max ⁡ a Q θ ( s t + 1 , a t + 1 ) − Q θ ( s t , a t ) ] Q_{\theta}(s_t, a_t) \leftarrow Q_{\theta}(s_t, a_t) + \alpha [r_t + \gamma \max_{a} Q_{\theta}(s_{t+1}, a_{t+1}) - Q_{\theta}(s_t, a_t)] Qθ(st,at)Qθ(st,at)+α[rt+γamaxQθ(st+1,at+1)Qθ(st,at)]
这里的 γ max ⁡ a Q θ ( s t + 1 , a t + 1 ) \gamma \max_{a} Q_{\theta}(s_{t+1}, a_{t+1}) γmaxaQθ(st+1,at+1) 取得是当前网络中的预测值,而改进的后,我们取的是,目标网络的值,公式如下
y t = r t + γ max ⁡ a Q θ ( s t + 1 , a r g m a x a ( Q θ ( s t + 1 ) ) ) y_t = r_t + \gamma \max_{a} Q_{\theta}(s_{t+1}, \mathop{\mathrm{argmax}}\limits_{a}(Q_{\theta}(s_{t+1}))) yt=rt+γamaxQθ(st+1,aargmax(Qθ(st+1)))

这里的 γ max ⁡ a Q θ ( s t + 1 , a r g m a x a ( Q θ ( s t + 1 ) ) ) \gamma \max_{a} Q_{\theta}(s_{t+1}, \mathop{\mathrm{argmax}}\limits_{a}(Q_{\theta}(s_{t+1}))) γmaxaQθ(st+1,aargmax(Qθ(st+1)))为目标网格的值

这样做的好处是动作选择和动作评估这两个过程分离开来,从而减轻了过估计问题。

Dueling DQN

更新的对象为神经网络,在DQN中我们采用最简单的神经网络,也就是:

在这里插入图片描述

而在Dueling DQN中,我们将隐藏层后面加入价值层和优势层
在这里插入图片描述

可以总结为下面的公式:
Q θ , α , β ( s , a ) = A θ , α ( s , a ) + V θ , β ( s ) Q_{\theta,\alpha,\beta}(s, a) = A_{\theta,\alpha}(s, a) + V_{\theta,\beta}(s) Qθ,α,β(s,a)=Aθ,α(s,a)+Vθ,β(s)

Noisy DQN

这个就是在DQN算法中引入了噪声层来提高网络性能

PER DQN

对经验池进行改进,我们对经验池的样本基于TD(预测值与实际值的差)进行一个排序,TD越大,说明对训练神经网络效果越好,因为TD越大,表面当前神经网络与理想神经网络差距大,那么在反向传播时,梯度下降就会加快,可以让神经网络更加快速的收敛,我们采用SumTree的形式进行排序,如果当前的样本对于的TD越大,对于的叶子节点被选中的概率也就越大, 当样本被选中后会重新赋予样本一个较低的值,避免出现""。
在这里插入图片描述

Actor-Critic算法

Actor-Critic公式理解

Actor-Critic算法结合了策略梯度和价值函数两种方法的优点,其中Actor负责根据当前策略选择动作, 而Critic则是根据选择的动作进行评估好坏

Actor-Critic的公式为:
∇ θ J ( θ ) ∝ E τ ∼ π θ [ Q π ( s t , a t ) ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \begin{equation} \nabla_{\theta} J(\theta) \propto \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ Q^{\pi}(s_t, a_t) \nabla_{\theta} \log \pi_{\theta}(a_t | s_t) \right] \end{equation} θJ(θ)Eτπθ[Qπ(st,at)θlogπθ(atst)]
可以这样理解这个公式:

  1. 符号解释
  • ∇ θ J ( θ ) \nabla_{\theta} J(\theta) θJ(θ):策略性能目标函数 J ( θ ) J(\theta) J(θ) 关于策略参数 θ \theta θ 的梯度。这是我们想要计算的对象,以便通过梯度上升来优化策略。

  • E τ ∼ π θ \mathbb{E}_{\tau \sim \pi_{\theta}} Eτπθ:这表示期望操作符,期望是关于由策略 π θ \pi_{\theta} πθ产生的轨迹 τ \tau τ的分布。换言之,它是在当前策略下,对所有可能的状态转移序列的平均。

  • Q π ( s t , a t ) Q^{\pi}(s_t, a_t) Qπ(st,at):这是状态 s t s_t st和动作 a t a_t at在策略 π θ \pi_{\theta} πθ下的动作价值函数,表示在状态 s t s_t st下执行动作 a t a_t at并且之后遵循策略 π θ \pi_{\theta} πθ所能获得的预期回报。

  • ∇ θ log ⁡ π θ ( a t ∣ s t ) \nabla_{\theta} \log \pi_{\theta}(a_t | s_t) θlogπθ(atst):策略 π θ \pi_{\theta} πθ对于选定动作 a t a_t at给出的概率的对数的梯度。这是因为对数概率通常更易于计算梯度,特别是当策略是由神经网络参数化时。

  1. 公式的含义

整个公式的含义是,策略的梯度(即我们应该如何更新策略参数 θ \theta θ 以提高性能)与每个动作的价值 Q Q Q值以及这个动作概率的对数的梯度的乘积的期望值成正比。这个期望值表明了一个动作在长期内带来的好处(通过 Q Q Q值体现)与它当前被策略选择的倾向性(通过 log ⁡ π θ \log \pi_{\theta} logπθ 的梯度体现)的关系。

  1. 直观理解
  • 当某个动作的 Q Q Q值比较高时,意味着它能带来好的长期回报,我们希望增加在类似状态下选择这个动作的概率。

  • ∇ θ log ⁡ π θ ( a t ∣ s t ) \nabla_{\theta} \log \pi_{\theta}(a_t | s_t) θlogπθ(atst)为正表示我们应该增加参数 θ \theta θ以使得动作 a t a_t at 在状态 s t s_t st下被选中的概率更高;为负则表示我们应该减少 θ \theta θ

  • 乘积 Q π ( s t , a t ) ⋅ ∇ θ log ⁡ π θ ( a t ∣ s t ) Q^{\pi}(s_t, a_t) \cdot \nabla_{\theta} \log \pi_{\theta}(a_t | s_t) Qπ(st,at)θlogπθ(atst) 意味着只有当动作的实际回报 Q Q Q与我们增加选择该动作的概率(策略的梯度)同向时,这个动作才会被更倾向于选择。如果一个动作的 Q Q Q 值低,或者策略的梯度为负,这意味着我们应该减少选择这个动作的概率。

通过计算这个梯度,我们可以应用梯度上升算法来调整 θ \theta θ,以便使得策略 π θ \pi_{\theta} πθ 能够获得更高的预期回报。

A2C

Actor-Critic架构是能够缓解策略梯度算法的高方差问题的,但是并不能彻底解决问题,为了进一步缓解高方差问题,我们可以引入一个优势函数 A π ( s t , a t ) A^{\pi}(s_t, a_t) Aπ(st,at)来表示这个动作当前状态-动作对相对水平的位置的优势,既:
A π ( s t , a t ) = Q π ( s t , a t ) − V π ( s t ) A^{\pi}(s_t, a_t) = Q^{\pi}(s_t, a_t) - V^{\pi}(s_t) Aπ(st,at)=Qπ(st,at)Vπ(st)
通过这个优势函数,我们可以让每一个动作参考从原来的以自身为参考,变成以当前状态下的平均动作价值为参考,这样可以适当的减少误差

有了优势函数后,我们就可以将Actor-Critic的公式写为:
∇ θ J ( θ ) ∝ E τ ∼ π θ [ A π ( s t , a t ) ∇ θ log ⁡ π θ ( a t ∣ s t ) ] \nabla_{\theta} J(\theta) \propto \mathbb{E}_{\tau \sim \pi_{\theta}} \left[ A^{\pi}(s_t, a_t) \nabla_{\theta} \log \pi_{\theta}(a_t | s_t) \right] θJ(θ)Eτπθ[Aπ(st,at)θlogπθ(atst)]
这就是A2C算法

练习题

马尔科夫链

强化学习所解决的问题一定要严格满足马尔可夫性质吗?请举例说明。

不一定,马尔可夫性质是指某个未来的状态只与当前的状态有关,与历史状态无关。就比如金融市场的预测,要预测未来的某一个价格,必须要依赖参考过去的状态,但是它又可以用强化学习来解决

马尔可夫决策过程主要包含哪些要素?

马尔科夫决策过程由一个五元组表示,这个五元组为 ⟨ S , A , R , P , γ ⟩ \langle S, A, R, P, \gamma \rangle S,A,R,P,γ,所以马尔科夫决策过程和这五个状态有关,S为系统可能存在的所有状态,A为每个状态下可能采取的全部动作,R为状态转移概率, P为奖励函数, γ \gamma γ为折扣因子

马尔可夫决策过程与金融科学中的马尔可夫链有什么区别与联系?

MDP是马尔可夫链的扩展。马尔可夫链主要描述一个系统随时间演变的状态转移概率,不涉及行动选择和奖励。而MDP在马尔可夫链的基础上引入了行动和奖励机制,是决策过程的模型。

动态规划

动态规划问题的主要性质有哪些?

重叠子问题:在解决问题的过程中,相同的子问题会多次出现。动态规划通过存储这些子问题的解来避免重复计算。
状态转移方程:状态之间的转移可以通过数学方程式描述。这些方程定义了如何从一个状态及其决策得到下一个状态。
无后效性:一旦某状态的决策被确定,它就不会被之后的决策所影响,即历史状态对当前决策没有影响。

状态价值函数和动作价值函数之间的关系是什么?

V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V_{\pi}(s) = \sum_{a \in A} \pi(a \mid s) Q_{\pi}(s, a) Vπ(s)=aAπ(as)Qπ(s,a)
状态价值函数是动作价值函数在当前状态下所有可能行动上的期望值

策略迭代和价值迭代哪个算法速度会更快?

价值迭代通常在计算上更高效,因为它每次迭代只做一次策略评估,并且直接进行改进。而策略迭代可能需要多次策略评估才能达到策略改进。然而,在某些情况下,如果策略评估很快或者策略改进步骤较少,策略迭代可能更有效率。因此,最佳选择取决于具体问题和实现方式。

免模型预测

有模型与免模型算法的区别?举一些相关的算法?

有模型是可以通过模拟的环境对智能体进行训练,如AlphaGo的后期训练就是通过自己模拟和自己下棋来学习
免模型算法是直接和外部环境交互进行学习, 如汽车的智能驾驶

举例说明预测与控制的区别与联系。

利用基于当前环境的状态得到的状态价值函数来预测下一状态的过程称为预测
控制则是找到一个最优策略,使得当前环境下执行某个动作得到的回报最大。
他们的区别是:控制问题通常依赖于预测问题的解决。在实际应用中,我们通常通过评估当前策略(预测)来改进策略(控制)。

蒙特卡洛方法和时序差分方法的优劣势。

蒙特卡洛方法:优点:不需要模型,直接从完整的序列中学习,且适用于非马尔可夫环境。缺点:可能具有较高的方差,收敛速度可能较慢。
时序差分方法: 优点:可以在不完整的序列中学习,不需要等待序列结束。 缺点:依赖于马尔可夫性质,对于非马尔可夫环境可能不是很有效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值