Reinforcement Learning(一)

RL的使用情境:

当使用Supervised Learing时需要大量的标注,而且收集这些labels很困难的时候,甚至说labeling本身就很困难;
正确答案甚至连人类都不知道时什么的时候

What is RL?

强化学习目的:智能体(agent)怎么在复杂、不确定的环境(environment)中最大化它能获得累积奖励
强化学习流程:智能体在环境中获取某个状态 s t s_t st后,它会利用该状态输出一个动作 a t a_t at,这个动作也称为决策(decision)。然后这个动作会在环境中被执行,环境会根据智能体采取的动作,输出下一个状态 s t + 1 s_{t+1} st+1以及当前这个动作带来的奖励 r t r_t rt
在这里插入图片描述

RL基本概念

智能体(Agent):Machine/decision maker,在环境中通过传感器感知环境,并能够通过效应器+执行器自主地作用于该环境

环境(environment):除智能体以外的实体

状态/观测(observation):某一时刻智能体感知的信息,可以理解为智能体对环境的一种理解和编码,对当前时刻环境的概括,通常包含了智能体所采取决策产生对环境影响的信息

状态空间(state space):所有可能存在状态构成的集合

动作(action):智能体(基于当前状态)可以执行的操作

动作空间(state space):所有可能动作构成的集合

奖励(reward):在智能体执行一个动作之后,环境回馈给智能体的即时信号,用于评估动作的好坏

状态转移(state transition):智能体从当前 t t t时刻的状态 s t s_t st转移到下一个时刻的状态 s t + 1 s_{t+1} st+1,数学描述:
p t ( s t + 1 ∣ s t , a t ) = p t ( S t + 1 = s t + 1 ∣ S t = s t , A t = a t ) p_t(s_{t+1}|s_t,a_t)=p_t(S_{t+1}=s_{t+1}|S_t=s_t,A_t=a_t) pt(st+1st,at)=pt(St+1=st+1St=st,At=at)
注:表示在当前状态 s t s_t st,智能体执行动作 a t a_t at,环境的状态变为 s t + 1 s_{t+1} st+1的概率; t + 1 t+1 t+1时刻状态随机变量 S t + 1 S_{t+1} St+1的条件概率分布

策略(policy):从状态集到动作集的映射,根据观测到的状态,如何做出决策,从动作空间中选择一个动作;假设:策略仅仅依赖于当前状态,而不依赖于历史状态,分为随机策略 π ( a ∣ s ) \pi(a|s) π(as)和确定性策略

轨迹(trajectory):一个回合中,环境输出的 状态 s s s和奖励 r r r 与智能体输出的动作 a a a 全部组合起来,就是一个轨迹,即
τ = { s 1 , a 1 , r 1 , s 2 , a 2 , r 2 , ⋯   , s t } \tau=\left\{s_{1}, a_{1}, r_{1},s_{2}, a_{2},r_{2}, \cdots, s_{t}\right\} τ={s1,a1,r1,s2,a2,r2,,st}
回报(return):从当前时刻开始到本回合结束的所有奖励的总和,累计奖励/随机变量 U t U_t Ut代表 t t t时刻的回报 U t = R t + R t + 1 + R t + 2 ⋯ + R n U_t=R_t+R_{t+1}+R_{t+2}\cdots+R_n Ut=Rt+Rt+1+Rt+2+Rn

折扣回报:给未来的奖励做折扣; U t U_t Ut代表 t t t时刻的回报 U t = R t + γ R t + 1 + γ 2 R t + 2 ⋯ + R n , γ ∈ [ 0 , 1 ] U_t=R_t+\gamma R_{t+1}+\gamma^2R_{t+2}\cdots+R_n,\gamma \in[0,1] Ut=Rt+γRt+1+γ2Rt+2+Rn,γ[0,1]

RL机器学习范式

RL作为机器学习的一部分,首先给出Machining Learing框架下的强化学习范式:
M L 范式: ML范式: ML范式:
训练数据集: D = { x i , y i } i=1...n 训练数据集:D=\overset{\text{}}{% \left\{x_i,y_i \right\}% }% \underset{\text{i=1...n}}{}% 训练数据集:D={xi,yi}i=1...n
学习机: f w ( x ) ; f ∈ Φ , Φ 为决策函数集 学习机:f_{w}(x);f \in \Phi,\Phi为决策函数集 学习机:fw(x);fΦ,Φ为决策函数集
损失函数: min ⁡ w L ( D t r a i n ; f w ) + p ( w ) 损失函数:\min\limits_{w}L(D_{train};f_{w})+p(w) 损失函数:wminL(Dtrain;fw)+p(w)
优化算法 : G r a d i e n t   D e s c e n t , w t + 1 = w t − η ∇ w f ( x , w t ) , 梯度引导更新参数 优化算法:Gradient\, Descent,w_{t+1}=w_t-\eta \nabla_{w} f(x,w_t),梯度引导更新参数 优化算法:GradientDescent,wt+1=wtηwf(x,wt),梯度引导更新参数

R L 范式: RL范式: RL范式:
训练数据集: D = { s t , a t }    A t t=1...N 训练数据集:D=\overset{\text{}}{% \left\{s_t,a_t \right\} \,\,A_t% }% \underset{\text{t=1...N}}{}% 训练数据集:D={st,at}Att=1...N
学习机: π θ ( a ∣ s ) 学习机:\pi_\theta(a|s) 学习机:πθ(as)或者Q*
损失函数: min ⁡ θ L = ∑ i = 1 N A i e i ; A t = ∑ n = t N γ n − t r i 损失函数:\min\limits_{\theta}L=\sum_{i=1}^{N}A_ie_i;A_t=\sum_{n=t}^{N}\gamma^{n-t}r_i 损失函数:θminL=i=1NAiei;At=n=tNγntri
优化算法 : , θ t + 1 = θ t + η ∇ θ E [ R θ ] , 策略梯度引导更新参数 优化算法:,\theta_{t+1}=\theta_t+\eta \nabla_{\theta} E[R_\theta],策略梯度引导更新参数 优化算法:,θt+1=θt+ηθE[Rθ],策略梯度引导更新参数

用Nerual Network来拟合策略函数 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as)

机器学习中的分类问题:
在这里插入图片描述如图所示,如果要数据集有三个类别,则在最后一层接入softmax激活函数
在这里插入图片描述
在这里插入图片描述

探索与利用的平衡

随机性的两个来源:策略函数和状态转移函数

动作的随机性

动作的随机性来源于随机决策;给定当前状态 s s s,策略函数 π ( a ∣ s ) \pi(a|s) π(as)会算出动作空间中每个动作 a a a的概率值,智能体执行的动作是随机抽样的结果–轮盘赌方法
在这里插入图片描述

状态的随机性

状态的随机性来自于状态转移函数,即使当状态 s s s和动作 a a a被确定下来,下一个状态仍然是不确定的;环境用状态转移函数 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)计算出所有可能的状态的概率,然后做随机抽样,从而得到新的状态
在这里插入图片描述
强化学习流程
在状态 s t s_t st的观测下,通过策略函数 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ(as)得到动作空间中每个动作的概率,使用轮盘赌的方式随机抽样得到 a t a_t at,智能体执行动作 a t a_t at,环境输入智能体的动作 a t a_t at s t s_t st,用状态转移函数 p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at)计算所有可能状态的概率,然后做轮盘赌的随机抽样,进入下一个状态,如此循环往复,如图所示:
在这里插入图片描述

优化算法–策略梯度

在一场游戏里面,我们把环境输出的 s s s 与演员输出的动作 a a a 全部组合起来,就是一个轨迹,即

τ = { s 1 , a 1 , s 2 , a 2 , ⋯   , s t , a t } \tau=\left\{s_{1}, a_{1}, s_{2}, a_{2}, \cdots, s_{t}, a_{t}\right\} τ={s1,a1,s2,a2,,st,at}

给定演员的参数 θ \theta θ,我们可以计算某个轨迹 τ \tau τ发生的概率为
p θ ( τ ) = p ( s 1 ) p θ ( a 1 ∣ s 1 ) p ( s 2 ∣ s 1 , a 1 ) p θ ( a 2 ∣ s 2 ) p ( s 3 ∣ s 2 , a 2 ) ⋯ = p ( s 1 ) ∏ t = 1 T p θ ( a t ∣ s t ) p ( s t + 1 ∣ s t , a t ) \begin{aligned} p_{\theta}(\tau) &=p\left(s_{1}\right) p_{\theta}\left(a_{1} | s_{1}\right) p\left(s_{2} | s_{1}, a_{1}\right) p_{\theta}\left(a_{2} | s_{2}\right) p\left(s_{3} | s_{2}, a_{2}\right) \cdots \\ &=p\left(s_{1}\right) \prod_{t=1}^{T} p_{\theta}\left(a_{t} | s_{t}\right) p\left(s_{t+1} | s_{t}, a_{t}\right) \end{aligned} pθ(τ)=p(s1)pθ(a1s1)p(s2s1,a1)pθ(a2s2)p(s3s2,a2)=p(s1)t=1Tpθ(atst)p(st+1st,at)

我们先计算环境输出 s 1 s_1 s1 的概率 p ( s 1 ) p(s_1) p(s1),再计算根据 s 1 s_1 s1 执行 a 1 a_1 a1 的概率 p θ ( a 1 ∣ s 1 ) p_{\theta}\left(a_{1} | s_{1}\right) pθ(a1s1) p θ ( a 1 ∣ s 1 ) p_{\theta}\left(a_{1} | s_{1}\right) pθ(a1s1)是由策略里面的网络参数 θ \theta θ 所决定的。策略网络的输出是一个分布,演员根据这个分布进行采样,决定实际要采取的动作。接下来环境根据 a 1 a_1 a1 s 1 s_1 s1 产生 s 2 s_2 s2,因为 s 2 s_2 s2 s 1 s_1 s1 是有关系的,所以给定上一个状态 s 1 s_1 s1 和演员采取的动作 a 1 a_1 a1,就会产生 s 2 s_2 s2。环境在决定输出新的状态的时候有概率。
但实际上 R ( τ ) R(\tau) R(τ)并不只是一个标量(scalar),它是一个随机变量,因为演员在给定同样的状态下会采取什么样的动作,这是有随机性的。环境在给定同样的观测时要采取什么样的动作,要产生什么样的观测,本身也是有随机性的,所以 R ( τ ) R(\tau) R(τ)是一个随机变量。我们能够计算的是 R ( τ ) R(\tau) R(τ)的期望值。给定某一组参数 θ \theta θ,我们可计算 r θ r_{\theta} rθ 的期望值为
R ˉ θ = ∑ τ R ( τ ) p θ ( τ ) = 1 N ∑ i = 1 N R ( τ i ) ; τ 难以穷举,采样 N 个回合 τ 1 , . . . . τ N \bar{R}_{\theta}=\sum_{\tau} R(\tau) p_{\theta}(\tau)=\frac{1}{N}\sum_{i=1}^{N}R(\tau^i);\tau难以穷举,采样N个回合\tau^1,....\tau^N Rˉθ=τR(τ)pθ(τ)=N1i=1NR(τi);τ难以穷举,采样N个回合τ1,....τN
我们要穷举所有可能的轨迹 τ \tau τ, 每一个轨迹 τ \tau τ 都有一个概率。
R ˉ θ = ∑ τ R ( τ ) p θ ( τ ) = E τ ∼ p θ ( τ ) [ R ( τ ) ] \bar{R}_{\theta}=\sum_{\tau} R(\tau) p_{\theta}(\tau)=\mathbb{E}_{\tau \sim p_{\theta}(\tau)}[R(\tau)] Rˉθ=τR(τ)pθ(τ)=Eτpθ(τ)[R(τ)]
从分布 p θ ( τ ) p_{\theta}(\tau) pθ(τ) 采样一个轨迹 τ \tau τ,计算 R ( τ ) R(\tau) R(τ) 的期望值,就是期望奖励(expected reward)。我们要最大化期望奖励。
因为我们要让奖励越大越好,所以可以使用梯度上升来最大化期望奖励。要进行梯度上升,我们先要计算期望奖励 R ˉ θ \bar{R}_{\theta} Rˉθ 的梯度。我们对 R ˉ θ \bar{R}_{\theta} Rˉθ 做梯度运算
∇ R ˉ θ = ∑ τ R ( τ ) ∇ p θ ( τ ) \nabla \bar{R}_{\theta}=\sum_{\tau} R(\tau) \nabla p_{\theta}(\tau) Rˉθ=τR(τ)pθ(τ)
其中,只有 p θ ( τ ) p_{\theta}(\tau) pθ(τ) θ \theta θ 有关。
我们可以对 ∇ p θ ( τ ) \nabla p_{\theta}(\tau) pθ(τ) 使用式(4.1),得到 ∇ p θ ( τ ) = p θ ( τ ) ∇ log ⁡ p θ ( τ ) \nabla p_{\theta}(\tau)=p_{\theta}(\tau) \nabla \log p_{\theta}(\tau) pθ(τ)=pθ(τ)logpθ(τ)
∇ f ( x ) = f ( x ) ∇ log ⁡ f ( x ) \nabla f(x)=f(x)\nabla \log f(x) f(x)=f(x)logf(x)
接下来,我们可得
∇ p θ ( τ ) p θ ( τ ) = ∇ log ⁡ p θ ( τ ) \frac{\nabla p_{\theta}(\tau)}{p_{\theta}(\tau)}= \nabla \log p_{\theta}(\tau) pθ(τ)pθ(τ)=logpθ(τ)
我们对 τ \tau τ 进行求和,把 R ( τ ) R(\tau) R(τ) log ⁡ p θ ( τ ) \log p_{\theta}(\tau) logpθ(τ) 这两项使用 p θ ( τ ) p_{\theta}(\tau) pθ(τ) 进行加权, 既然使用 p θ ( τ ) p_{\theta}(\tau) pθ(τ) 进行加权 ,它们就可以被写成期望的形式。也就是我们从 p θ ( τ ) p_{\theta}(\tau) pθ(τ) 这个分布里面采样 τ \tau τ , 去计算 R ( τ ) R(\tau) R(τ) ∇ log ⁡ p θ ( τ ) \nabla\log p_{\theta}(\tau) logpθ(τ),对所有可能的 τ \tau τ 进行求和,就是期望的值(expected value)。
∇ R ˉ θ = ∑ τ R ( τ ) ∇ p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ p θ ( τ ) p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ log ⁡ p θ ( τ ) = E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log ⁡ p θ ( τ ) ] \begin{aligned} \nabla \bar{R}_{\theta}&=\sum_{\tau} R(\tau) \nabla p_{\theta}(\tau)\\&=\sum_{\tau} R(\tau) p_{\theta}(\tau) \frac{\nabla p_{\theta}(\tau)}{p_{\theta}(\tau)} \\&= \sum_{\tau} R(\tau) p_{\theta}(\tau) \nabla \log p_{\theta}(\tau) \\ &=\mathbb{E}_{\tau \sim p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right] \end{aligned} Rˉθ=τR(τ)pθ(τ)=τR(τ)pθ(τ)pθ(τ)pθ(τ)=τR(τ)pθ(τ)logpθ(τ)=Eτpθ(τ)[R(τ)logpθ(τ)]
实际上期望值 E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log ⁡ p θ ( τ ) ] \mathbb{E}_{\tau \sim p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right] Eτpθ(τ)[R(τ)logpθ(τ)] 无法计算,所以我们用采样的方式采样 N N N τ \tau τ并计算每一个的值,把每一个的值加起来,就可以得到梯度,即
E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log ⁡ p θ ( τ ) ] ≈ 1 N ∑ n = 1 N R ( τ n ) ∇ log ⁡ p θ ( τ n ) = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \begin{aligned} \mathbb{E}_{\tau \sim p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right] &\approx \frac{1}{N} \sum_{n=1}^{N} R\left(\tau^{n}\right) \nabla \log p_{\theta}\left(\tau^{n}\right) \\ &=\frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} R\left(\tau^{n}\right) \nabla \log p_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right) \end{aligned} Eτpθ(τ)[R(τ)logpθ(τ)]N1n=1NR(τn)logpθ(τn)=N1n=1Nt=1TnR(τn)logpθ(atnstn)

∇ log ⁡ p θ ( τ ) = ∇ ( log ⁡ p ( s 1 ) + ∑ t = 1 T log ⁡ p θ ( a t ∣ s t ) + ∑ t = 1 T log ⁡ p ( s t + 1 ∣ s t , a t ) ) = ∇ log ⁡ p ( s 1 ) + ∇ ∑ t = 1 T log ⁡ p θ ( a t ∣ s t ) + ∇ ∑ t = 1 T log ⁡ p ( s t + 1 ∣ s t , a t ) = ∇ ∑ t = 1 T log ⁡ p θ ( a t ∣ s t ) = ∑ t = 1 T ∇ log ⁡ p θ ( a t ∣ s t ) \begin{aligned} \nabla \log p_{\theta}(\tau) &= \nabla \left(\log p(s_1)+\sum_{t=1}^{T}\log p_{\theta}(a_t|s_t)+ \sum_{t=1}^{T}\log p(s_{t+1}|s_t,a_t) \right) \\ &= \nabla \log p(s_1)+ \nabla \sum_{t=1}^{T}\log p_{\theta}(a_t|s_t)+ \nabla \sum_{t=1}^{T}\log p(s_{t+1}|s_t,a_t) \\ &=\nabla \sum_{t=1}^{T}\log p_{\theta}(a_t|s_t)\\ &=\sum_{t=1}^{T} \nabla\log p_{\theta}(a_t|s_t) \end{aligned} logpθ(τ)=(logp(s1)+t=1Tlogpθ(atst)+t=1Tlogp(st+1st,at))=logp(s1)+t=1Tlogpθ(atst)+t=1Tlogp(st+1st,at)=t=1Tlogpθ(atst)=t=1Tlogpθ(atst)
注意, p ( s 1 ) p(s_1) p(s1) p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at) 来自环境, p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ(atst) 来自智能体。 p ( s 1 ) p(s_1) p(s1) p ( s t + 1 ∣ s t , a t ) p(s_{t+1}|s_t,a_t) p(st+1st,at) 由环境决定,与 θ \theta θ 无关,因此 ∇ log ⁡ p ( s 1 ) = 0 \nabla \log p(s_1)=0 logp(s1)=0 ∇ ∑ t = 1 T log ⁡ p ( s t + 1 ∣ s t , a t ) = 0 \nabla \sum_{t=1}^{T}\log p(s_{t+1}|s_t,a_t)=0 t=1Tlogp(st+1st,at)=0

∇ R ˉ θ = ∑ τ R ( τ ) ∇ p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ p θ ( τ ) p θ ( τ ) = ∑ τ R ( τ ) p θ ( τ ) ∇ log ⁡ p θ ( τ ) = E τ ∼ p θ ( τ ) [ R ( τ ) ∇ log ⁡ p θ ( τ ) ] ≈ 1 N ∑ n = 1 N R ( τ n ) ∇ log ⁡ p θ ( τ n ) = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \begin{aligned} \nabla \bar{R}_{\theta}&=\sum_{\tau} R(\tau) \nabla p_{\theta}(\tau)\\&=\sum_{\tau} R(\tau) p_{\theta}(\tau) \frac{\nabla p_{\theta}(\tau)}{p_{\theta}(\tau)} \\&= \sum_{\tau} R(\tau) p_{\theta}(\tau) \nabla \log p_{\theta}(\tau) \\ &=\mathbb{E}_{\tau \sim p_{\theta}(\tau)}\left[R(\tau) \nabla \log p_{\theta}(\tau)\right]\\ &\approx \frac{1}{N} \sum_{n=1}^{N} R\left(\tau^{n}\right) \nabla \log p_{\theta}\left(\tau^{n}\right) \\ &=\frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} R\left(\tau^{n}\right) \nabla \log p_{\theta}\left(a_{t}^{n} \mid s_{t}^{n}\right) \end{aligned} Rˉθ=τR(τ)pθ(τ)=τR(τ)pθ(τ)pθ(τ)pθ(τ)=τR(τ)pθ(τ)logpθ(τ)=Eτpθ(τ)[R(τ)logpθ(τ)]N1n=1NR(τn)logpθ(τn)=N1n=1Nt=1TnR(τn)logpθ(atnstn)
梯度上升:
θ \theta θ 加上梯度 ∇ R ˉ θ \nabla \bar{R}_{\theta} Rˉθ,当然我们要有一个学习率 η \eta η,即
θ ← θ + η ∇ R ˉ θ \theta \leftarrow \theta+\eta \nabla \bar{R}_{\theta} θθ+ηRˉθ

∇ R ˉ θ = 1 N ∑ n = 1 N ∑ t = 1 T n R ( τ n ) ∇ log ⁡ p θ ( a t n ∣ s t n ) \nabla \bar{R}_{\theta}=\frac{1}{N} \sum_{n=1}^{N} \sum_{t=1}^{T_{n}} R\left(\tau^{n}\right) \nabla \log p_{\theta}\left(a_{t}^{n} | s_{t}^{n}\right) Rˉθ=N1n=1Nt=1TnR(τn)logpθ(atnstn)

图 4.7 策略梯度

更新完模型以后,我们要重新采样数据再更新模型。注意,一般**策略梯度(policy gradient,PG)**采样的数据只会用一次。我们采样这些数据,然后用这些数据更新参数,再丢掉这些数据。接着重新采样数据,才能去更新参数。

在一般的分类问题里面,我们在实现分类的时候,目标函数都会写成最小化交叉熵(cross entropy),最小化交叉熵就是最大化对数似然(log likelihood)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值