强化学习简介

在这里插入图片描述

1. Review: Markov decision process

(折扣)马尔可夫决策过程: M = ( S , A , P , R , γ ) M=(S,A,P,R,\gamma) 。其中 S S 是状态集合。 A A 是动作集合。 P P S × A × S [ 0 , 1 ] S\times A\times S\to [0,1] 的映射,表示转移概率分布 P ( s s , a ) P(s'|s,a) R R S R S\to\mathbb{R} 的奖励函数, R ( s ) R(s) 表示状态 s s 处的奖励。 γ \gamma 是折扣因子。

RL的转折:我们不知道 P P R R ,或者它们太大而无法枚举(仅具有在MDP中行动,观察状态和动作的能力)。

1.1 Some important quantities in MDPs

确定性策略 π : S A \pi: S\to A 是从状态到动作的映射。

随机性策略 π : S × A [ 0 , 1 ] \pi: S\times A\to [0,1] 是每个状态的动作分布。

策略 π \pi 的价值,是如果从某状态开始并遵循策略 π \pi (通过Bellman等式表示)获得的期望折扣奖励:
V π ( s ) = R ( s ) + γ s S P ( s s , π ( s ) ) V π ( s ) V^\pi(s)=R(s)+\gamma \sum_{s\in S}P(s'|s,\pi(s))V^\pi(s')

最优值函数(最优策略 π \pi^* 的值函数,具有最高价值的策略):

V ( s ) = R ( s ) + γ max a A s S P ( s s , a ) V ( s ) V^*(s)=R(s)+\gamma \max_{a\in A}\sum_{s'\in S}P(s'|s,a)V^*(s')

1.2 “Solving” an MDP

策略评估:要找到策略 π \pi 的值,请从任何 V ^ π ( s ) \hat{V}^\pi(s) 开始并重复以下步骤:

s S : V ^ π ( s ) : = R ( s ) + γ s S P ( s s , π ( s ) V ^ π ( s ) \forall s\in S: \hat{V}^\pi(s):=R(s)+\gamma\sum_{s\in S}P(s'|s,\pi(s)\hat{V}^\pi(s')

(或者,可以求解上述线性方程直接确定 V π V^\pi

扫描二维码关注公众号,回复: 11459496 查看本文章

值迭代:要找到最优值函数,请从任何 V ^ ( s ) \hat{V}^*(s) 开始并重复:

s S : V ^ ( s ) : = R ( s ) + γ max a A s S P ( s s , a ) V ^ ( s ) \forall s\in S: \hat{V}^*(s):=R(s)+\gamma\max_{a\in A}\sum_{s\in S}P(s'|s,a)\hat{V}^*(s')

但是,当 P P R R 未知时,我们如何计算这些量?

2. Overview of RL

在这里插入图片描述
重要说明:“强化学习”一词也已被理解为实质上是“涉及机器学习某些要素的任何类型的序列决策问题”,包括与上述不同的许多领域(模仿学习,学习控制,逆RL等),但我们将重点关注上述概述。

2.1 Important note regarding domain size

就本讲义而言(上一节除外),我们将假设一个离散状态/离散动作设置,在此我们可以枚举所有状态。

讲义的最后一部分,我们将讨论大型/连续状态和动作空间的情况。

思考:网格世界( grid-world),而不是Atari。

在这里插入图片描述

3. Model-based RL

一种简单的方法:如果我们不知道MDP,只需根据数据进行估算。agent在世界中行动(根据某些策略),并观察状态,动作,奖励序列:

s 1 , r 1 , a 1 , s 2 , r 2 , a 2 , . . . , s m , r m , a m s_1,r_1,a_1,s_2,r_2,a_2,...,s_m,r_m,a_m

通过计数形成MDP的经验估计:

P ^ ( s s , a ) = i = 1 m 1 1 { s i = s , a i = a , s i + 1 = s } i = 1 m 1 1 { s i = s , a i = a } \hat{P}(s'|s,a)=\frac{\sum_{i=1}^{m-1}1\{s_i=s,a_i=a,s_{i+1}=s'\}}{\sum_{i=1}^{m-1}1\{s_i=s,a_i=a\}}

R ^ ( s ) = i = 1 m 1 1 { s i = s } r i i = 1 m 1 1 { s i = s } \hat{R}(s)=\frac{\sum_{i=1}^{m-1}1\{s_i=s\}r_i}{\sum_{i=1}^{m-1}1\{s_i=s\}}

然后通过例如值迭代来求解MDP M ^ = ( S , A , P ^ , R ^ , γ ) \hat{M}=(S,A,\hat{P},\hat{R},\gamma)

给定每个状态的足够样本,它将收敛到正确的MDP(从而正确的最优值函数/最优策略)。

我们如何确保获得“正确的”样本? (对于我们在此介绍的所有方法来说,这是一个具有挑战性的问题,请继续关注)。

基于模型的RL的优点(非正式地):有效地使用数据。

缺点:要求我们建立实际的MDP模型,解决最优策略(如果状态空间太大,则没有太大帮助)

4. Model-free methods

基于值的方法:基于时间差分学习(TD,SARSA,Q-learning),学习值函数 V π V^\pi V V^* (或稍作概括的Q函数,我们将在后面讨论)。

基于策略的方法:直接学习最佳策略 π \pi^* (如果无法获得真正的最优策略,则尝试近似最优策略)。

4.1 Value-based methods
4.1.1 Temporal difference (TD) methods

让我们考虑一下评估策略价值的任务,例如找到 V π V^\pi ,我们可以通过重复迭代来完成:

s S : V ^ π ( s ) : = R ( s ) + γ s S P ( s s , π ( s ) ) V ^ π ( s ) \forall s\in S: \hat{V}^\pi(s):=R(s)+\gamma\sum_{s\in S}P(s'|s,\pi(s))\hat{V}^\pi(s')

现在假设我们处于某些状态 s t s_t ,获得奖励 r t r_t ,采取动作 a t = π ( s t ) a_t=\pi(s_t) ,并最终处于状态 s t + 1 s_{t+1} 。我们无法对所有 s S s\in S 进行上述更新,但是可以仅对 s t s_t 更新吗?

V ^ ( s t ) : = r t + γ s S P ( s s t , a t ) V ^ π ( s ) \hat{V}(s_t):=r_t+\gamma\sum_{s'\in S}P(s'|s_t,a_t)\hat{V}^\pi(s')

答案是否定的,因为我们仍然不知道对于所有 s S s'\in S P ( s s t , a t ) P(s'|s_t,a_t)

但是, s t + 1 s_{t+1} 是分布 P ( s s t , a t ) P(s'|s_t,a_t) 的样本,因此我们可以执行更新:

V ^ π ( s t ) = r t + γ V ^ π ( s t + 1 ) \hat{V}^\pi(s_t)=r_t+\gamma \hat{V}^\pi(s_{t+1})

但是,假设 s t + 1 s_{t+1} 是唯一可能的下一个状态,这太“苛刻”了。 而是使用一些 α < 1 \alpha<1 来“平滑”更新:

V ^ π ( s t ) : = ( 1 α ) V ^ π ( s t ) + α ( r t + γ V ^ π ( s t + 1 ) ) \hat{V}^\pi(s_t):=(1-\alpha)\hat{V}^\pi(s_t)+\alpha(r_t+\gamma\hat{V}^\pi(s_{t+1}))

这就是时间差分(TD)算法。

TD算法本质上是策略评估迭代的随机版本:

在这里插入图片描述
将收敛到 V ^ π ( s ) V π ( s ) \hat{V}^\pi(s)\to V^\pi(s) (对于所有 s s 足够频繁访问)。

TD实验之“网格世界”:在网格世界上运行TD进行1000回合(每回合包括10个步长,根据策略采样,从随机状态开始),用 V ^ = R \hat{V}=R 进行初始化。TD Progress如下:

在这里插入图片描述 不同 α 的TD值估计误差 \text{不同}\alpha\text{的TD值估计误差}

TD使我们可以直接学习策略 π \pi 的值函数,而无需构造MDP。

但这真的有帮助吗?

考虑尝试执行贪心策略 w.r.t. 估计的 V ^ π \hat{V}^\pi :

π ( s ) = arg max a A s S P ( s s , a ) V ^ π ( s ) \pi '(s)=\argmax_{a\in A}\sum_{s'\in S}P(s'|s,a)\hat{V}^\pi(s')

反正我们需要一个模型……

这是传统TD算法面临的问题。

4.1.2 Enter the Q function

Q函数(通常用于MDP)类似于值函数,但在状态动作对上定义:

Q π ( s , a ) = R ( s ) + γ s S P ( s s , a ) Q π ( s , π ( s ) ) Q^\pi(s,a)=R(s)+\gamma\sum_{s'\in S}P(s'|s,a)Q^\pi(s',\pi(s'))

Q ( s , a ) = R ( s ) + γ s S P ( s s , a ) max a A Q ( s , a ) = R ( s ) + γ s S P ( s s , a ) V ( s ) \begin{aligned} Q^*(s,a) & = R(s)+\gamma\sum_{s'\in S}P(s'|s,a)\max_{a'\in A}Q^*(s',a')\\ & = R(s)+\gamma\sum_{s'\in S}P(s'|s,a)V^*(s') \end{aligned}

即Q函数是从状态 s s 开始,采取动作 a a ,然后根据 π \pi (或对于 Q Q^* 而言最优)行动的值。

在给定MDP的情况下,我们可以轻松构造价值迭代或策略评估的类似物以直接构造Q函数。

4.1.3 SARSA and Q-learning

Q函数公式导致了类似TD的新方法。

与TD一样,观察状态 s s ,奖励 r r ,采取动作 a a (不一定是 a = π ( s ) a=\pi(s) ,稍后对此进行更多介绍),观察下一个状态 s s'

SARSA:估算 Q π ( s , a ) Q^\pi(s,a)

Q ^ π ( s , a ) : = ( 1 α ) Q ^ π ( s , a ) + α ( r + γ Q ^ π ( s , π ( s ) ) ) \hat{Q}^\pi(s,a):=(1-\alpha)\hat{Q}^\pi(s,a)+\alpha(r+\gamma\hat{Q}^\pi(s',\pi(s')))

Q-learning: 估算 Q ( s , a ) Q^*(s,a)

Q ^ ( s , a ) : = ( 1 α ) Q ^ ( s , a ) + α ( r + γ max a A Q ^ ( s , a ) ) \hat{Q}^*(s,a):=(1-\alpha)\hat{Q}^*(s,a)+\alpha(r+\gamma\max_{a'\in A}\hat{Q}^*(s',a'))

给定每个状态动作对的足够样本,将分别收敛到 Q π Q^\pi Q Q^*

学习Q函数的优点是我们现在可以选择没有MDP模型的动作。

例如,在Q-learning中,最优策略由如下给定:

π ( s ) = arg max a A Q ^ ( s , a ) \pi^*(s)=\argmax_{a\in A}\hat{Q}^*(s,a)

因此我们可以在没有MDP模型的情况下学习完整的最优策略。

4.1.4 Aside: on-policy vs. off-policy learning

RL方法关于on-policy与off-policy学习算法有重要区别。

在on-policy设置(例如传统的TD和SARSA算法)中,您正在学习要遵循的策略 π \pi 的价值。

在off-policy设置(例如Q学习算法)中,您正在学习与所遵循的策略不同的策略的价值。

实际上,所有学习保证都适用于on-policy的案例。 对于off-policy存在一些收敛证明,但仅在非常有限的情况下。

我的看法:Q-learning可能不起作用,令人惊讶的是它会。

Q-learning实验:在网格世界上运行20000回合(每个回合10个步长)的Q-learning,并使用 Q ^ ( s , a ) = R ( s ) \hat{Q}(s,a)=R(s) 进行初始化。

策略:概率为0.9根据当前的最优策略 π ( s ) = arg max a A Q ^ ( s , a ) \pi^*(s)=\argmax_{a\in A}\hat{Q}^*(s,a) 进行行动,概率为0.1随机进行行动。Q-learning progress如下:

在这里插入图片描述 不同 α 的Q学习的最优Q函数估计误差 \text{不同}\alpha\text{的Q学习的最优Q函数估计误差}

4.2 Policy-based methods

强化学习的最终策略是避免同时形成MDP和值/Q函数,而是尝试直接学习(最优)策略。

MDP中的一个示例:

π θ ( s ) = max a A θ ( s , a ) \pi_\theta(s)=\max_{a\in A}\theta(s,a)

或可能是随机策略

π θ ( a s ) = exp θ ( s , a ) a A exp θ ( s , a ) \pi_\theta(a|s)=\frac{\exp\theta(s,a)}{\sum_{a'\in A}\exp\theta(s,a')}

(看起来类似于Q函数策略,但 θ \theta 这里只是任意参数,不一定是值函数)

评估策略价值: 回想一下,一个策略的价值仅仅是折扣奖励的期望总和(假设我们总是可以在相同的初始状态下开始)。

优化问题:找到使奖励总和最大化的策略参数 θ \theta

V θ ( s ) = E [ t = 1 γ t r t s t + 1 P ( s s t , π θ ( s t ) ) , s 1 = s ] V_\theta(s)=\mathbb{E}\left[\sum_{t=1}^{\infty}\gamma^t r_t | s_{t+1}\sim P(s'|s_t,\pi_\theta(s_t)),s_1=s\right]

(我们可以通过简单地将策略运行足够长的时间来进行近似估算)

但是,我们无法计算出解析 θ V θ ( s ) \nabla_\theta V_\theta(s) 的梯度,所以我们需要一些方法来对其进行近似。

一个简单的策略搜索过程如下:

在这里插入图片描述
这个和更多涉及的变体(类似于进化方法)在实践中出奇地有效。

4.2.1 Policy gradient methods

在实践中经常出现的另一种策略搜索方法:策略梯度方法和REINFORCE算法。

需要进行修改才能在实践中正常运行,但构成大量基于策略的RL方法的基础。

基本设置:令 τ = ( s 1 , a 1 , s 2 , a 2 , . . . , s T , a T ) \tau=(s_1,a_1,s_2,a_2,...,s_T,a_T) 表示状态/动作对的轨迹。

然后我们可以将策略的值函数写为:

V θ ( s ) = E [ R ( τ ; θ ) ] = p ( τ ; θ ) R ( τ ) d τ V_\theta(s)=\mathbb{E}[R(\tau;\theta)]=\int p(\tau;\theta)R(\tau)d_\tau

4.2.2 The REINFORCE algorithm

REINFORCE算法的第一个“技巧”是通过以下方法得出值函数梯度的特定形式:

θ V θ ( s ) = θ p ( τ ; θ ) R ( τ ) d τ = θ p ( τ ; θ ) R ( τ ) d τ = p ( τ ; θ ) p ( τ ; θ ) θ p ( τ ; θ ) R ( τ ) d τ = p ( τ ; θ ) θ log p ( τ ; θ ) R ( τ ) d τ = E [ θ log p ( τ ; θ ) R ( τ ) ] \begin{aligned} \nabla_\theta V_\theta(s)&=\nabla_\theta\int p(\tau;\theta)R(\tau)d_\tau\\ &=\int\nabla_\theta p(\tau;\theta)R(\tau)d_\tau\\ &=\int\frac{p(\tau;\theta)}{p(\tau;\theta)}\nabla_\theta p(\tau;\theta)R(\tau)d_\tau\\ &=\int p(\tau;\theta)\nabla_\theta\log p(\tau;\theta)R(\tau)d_\tau\\ &=\mathbb{E}[\nabla_\theta\log p(\tau;\theta)R(\tau)] \end{aligned}

即价值函数的梯度可以计算为策略梯度(对数)的梯度乘以奖励的期望。

因为这是一个期望,所以我们可以使用样本进行近似。

REINFORCE算法的第二个“技巧”是要注意,我们可以进一步简化对数轨迹概率的梯度:

θ log p ( τ ; θ ) = θ log ( t = 1 T p ( s t + 1 s t , a t ) π θ ( a t s t ) ) = θ t = 1 T ( log p ( s t + 1 s t , a t ) + log π θ ( a t s t ) ) = t = 1 T θ log π θ ( a t s t ) \begin{aligned} \nabla_\theta\log p(\tau;\theta)&=\nabla_\theta\log\left(\prod_{t=1}^T p(s_{t+1}|s_t,a_t)\pi_\theta(a_t|s_t) \right)\\ &=\nabla_\theta\sum_{t=1}^T(\log p(s_{t+1}|s_t,a_t)+\log\pi_\theta(a_t|s_t))\\ &=\sum_{t=1}^T\nabla_\theta\log\pi_\theta(a_t|s_t) \end{aligned}

(因为动态不取决于参数 θ \theta

最终的REINFORCE算法如下:

在这里插入图片描述
一个重要的注意事项:不要让“策略梯度”这个名字愚弄您,这是一种基于采样的方法来近似梯度(就像上面的函数拟合方法一样),而不是实际的基于梯度的方法。

5. Exploration/exploitation problem

到目前为止,我们讨论的所有方法都有一定的条件,例如“假设我们足够访问每个状态“或“根据某些策略采取行动”。

一个基本的问题:如果我们不了解系统动态,我们是否应该采取探索性行动为我们提供更多信息,还是应该利用当前知识来尽力而为?

示例:不起作用的基于模型的过程

  1. 利用过去的经验建立模型 P ^ \hat{P} R ^ \hat{R}
  2. 使用例如值迭代找到用于MDP M ^ = ( S , A , P ^ , R ^ , γ ) \hat{M}=(S,A,\hat{P},\hat{R},\gamma) 的最佳策略,并根据该策略采取行动

最初的错误估计可能会使策略进入次优区域,并且永远不会进一步探索。

5.1 Exploration in RL

关键思想:不要按照当前MDP估算值根据“最优”策略行动,而应根据将探索较少关注的状态动作对的策略行动,直到获得“良好估算值”为止。

  • Epsilon-greedy policy
    π ( s ) = { max a A Q ^ ( s , a ) , with probability 1 ϵ random action , otherwise \pi(s)= \begin{cases} \max_{a\in A}\hat{Q}(s,a), & \text{with probability} 1-\epsilon \\ \text{random action}, & \text{otherwise} \end{cases}

  • Boltzman policy
    π ( a s ) = exp ( τ Q ^ ( s , a ) ) a A exp ( τ Q ^ ( s , a ) ) \pi(a|s)=\frac{\exp\left(\tau\hat{Q}(s,a)\right)}{\sum_{a\in A'}\exp\left(\tau\hat{Q}(s,a')\right)}

想要减少 ϵ \epsilon ,增加 τ \tau ,随着我们看到更多示例。

Q-learning探索阐述:网格世界具有随机[0,1]奖励,而不是上方的奖励,用 Q ^ ( s , a ) : = 0 \hat{Q}(s,a):=0 初始化Q函数。以 α = 0.05 \alpha=0.05 ϵ = 0.1 \epsilon=0.1 ϵ = 0 \epsilon=0 (贪婪), ϵ = 1 \epsilon=1 运行,其中 n ( s ) n(s) 是我们访问状态 s s 的次数。Q函数逼近的准确性如下:

在这里插入图片描述

不同探索策略的Q函数估计误差

平均获得奖励如下:
在这里插入图片描述

通过不同探索策略获得的平均单个回合奖励

6. Recent trends in RL

网格世界很棒,但这并不是真正推动RL兴奋的原因,不是吗?

对RL的实际兴趣来自对大型状态/观察空间,大型或连续动作空间的扩展。

通常在深度学习方法的帮助下完成,以学习RL环境中的未知量。

许多著名的成功案例:Atari游戏,AlphaGo,多种机器人任务。

7. Modern advances / “Deep RL”

在这里插入图片描述

8. Model-based methods

8.1 Model-based RL control for robotics

从离散设置到连续(状态和动作)设置。

在这里插入图片描述
概念上的过程与基于MDP模型的RL相同:学习动态模型,解决模型中的任务,然后应用于实际系统。

关键挑战:需要更好的模型(不能使用简单的离散MDP)和更好的控制算法来“解决”任务。

应用示例:学习操作技巧,From: Fu, Levine and Abbeel, “One-Shot Learning of Manipulation Skills with Online Dynamics Adaptation and Neural Network Priors”, 2016. [paper] [video]

目标:“快速”学习用于机器人系统的新对象的操作技巧(通过针对挑战性问题的接触进行对象操作)。

两个高级的想法:

  1. 使用神经网络(具有一些技巧来快速适应新的数据输入)来对动态建模 s t + 1 f ( s t , a t , s t 1 , a t 1 ) s_{t+1}\approx f(s_t,a_t,s_{t-1},a_{t-1}) 其中 f f 是神经网络模型(也会增加噪声)。
  2. 使用近似最优控制算法(iLQR)来控制给定模型的系统。

9. Model-free methods

9.1 Value-based methods with large state spaces

在这里插入图片描述
目标:在状态空间太大而无法明确表示的域中学习最优策略(在该状态空间中动态可能难以表达)。

关键挑战:需要一种用于表示例如巨大状态空间上的值函数的方法。

9.1.1 TD methods with value function approximation

一般而言,TD方法的一个优点(不是新概念,这可以追溯到TD中的某些原始工作)是使用函数逼近紧凑地表示值函数的能力。

考虑一些参数化值函数逼近 V ^ π ( s ) = f θ ( s ) \hat{V}^\pi(s)=f_\theta(s) 其中 f f 是神经网络, θ \theta 表示网络权重。

然后TD更新由如下给定 θ : = θ + α ( r + γ f θ ( s ) f θ ( s ) ) θ f θ ( s ) \theta:=\theta+\alpha(r+\gamma f_\theta(s')-f_\theta(s))\nabla_\theta f_\theta(s) 这是传统TD更新的泛化。

9.1.2 TD Gammon

1992年由IBM Watson的Gerald Tesauro开发。

使用带神经网络的TD作为函数逼近(已知模型,但太大,无法作为MDP求解)。

在专家级别的比赛中,许多世界专家根据系统使用的策略更改了策略。

9.1.3 Deep Q Network (DQN)

DQN方法(以深度网络作为Q函数逼近的Q-learning)因学习比人类更好地玩各种Atari游戏而在2013年成名。

Mnih et al., “Human-level control through deep reinforcement learning”, 2015. [paper]

DQN更新:状态 s s ,奖励 r r ,采取动作 a a ϵ -greedy \epsilon\text{-greedy} ),下一个状态 s s'

θ : = θ + α ( r + γ max a A Q ^ θ ( s , a ) Q ^ θ ( s , a ) ) θ Q ^ θ ( s , a ) \theta:=\theta+\alpha\left(r+\gamma\max_{a'\in A}\hat{Q}_\theta(s',a')-\hat{Q}_\theta(s,a)\right)\nabla_\theta\hat{Q}_\theta(s,a)

其他一些技巧:使第一个Q函数保持固定不变,并且仅在每C个迭代中更新一次,保留过去动作的replay buffer。

应用于Atari Games:卷积网络,将像素图像作为输入(过去四帧中的实际像素图像),输出Q函数。适用于50个Atari游戏的相同方法,在大多数情况下都超过了人类的表现。

在这里插入图片描述

9.2 Policy-based methods with Learning locomotion policies

From Heess et al., “Emergence of Locomotion Behaviors of in Rich Environments”, 2017. [paper]

目标:学习使用深度神经网络策略控制(模拟)机器人前进。

策略从关节/接触点以及周围地形输入,输出关节扭矩。

使用近端策略优化(PPO)来优化策略,该策略类似于REINFORCE,但是具有一些可以显着提高性能的技巧(重要性采样,过度惩罚更改策略的项以及估计“基准”的价值函数)。

在这里插入图片描述

10. Final thoughts: making sense of the jungle

“强化学习”(我们只涵盖了一小部分),似乎像是算法,总体方法和应用的广阔丛林。

…而且我们可能会面临各种各样的复现危机(例如参见Henderson et al., “Deep Reinforcement Learning that Matters”, 2017 [paper])。

关于“哪种方法最适合我”的一些简单规则:

  • Model-based: 如果您的数据贫乏,和/或拥有一个真实的系统在训练时您无法承受破坏100次的麻烦。
  • Value-based: 理想情况下,采取少量行动即可使问题看起来更像“规划”。
  • Policy-based: 相对简单的“反应性”策略可以很好地工作,但是潜在的高维控制空间。

参考资源

[1] Introduction to Reinforcement Learning

猜你喜欢

转载自blog.csdn.net/u010705932/article/details/105763106