强化学习系列1:强化学习简介

2015年10月,AlphaGo在和欧洲冠军进行的围棋赛上获得了5:0的完胜,其后的深度强化学习也随之火了起来。从本期开始开个新坑,一步步把强化学习的内容捋一遍。

1. 基本概念

强化学习(reinforcement learning)是用来解决连续决策问题的一种方法。针对的模型是马尔科夫决策过程(Markov Decision Process,MDP)。所谓马尔科夫决策过程,指的是下一时刻的状态仅由当前阶段(包括状态、决策)决定,不依赖于以往的状态,用数学化的语言表达为:

  1. 问题是多阶段决策过程,阶段数为 I I I
  2. 每个阶段可能的状态为集合 S i S_i Si
  3. 每个阶段可以做的决策为集合 A i A_i Ai
  4. 从当前阶段状态到下一阶段状态的转移函数为 P P P,有 s i + 1 = P ( s i , a i ) s_{i+1}=P(s_i,a_i) si+1=P(si,ai)
  5. 决策完成之后,当前阶段对应的成本(或者奖赏)为 c i = C ( s i , a i ) c_i=C(s_i,a_i) ci=C(si,ai)。求解变量为 a i a_i ai,目标函数为最小化总成本(或者最大化总奖赏) Σ i ∈ I c i \Sigma_{i\in I}c_i ΣiIci

如果阶段之间的转移存在随机性,那么状态转移函数为转移概率 p s i + 1 = P ( s i + 1 , s i , a i ) p_{s_{i+1}}=P(s_{i+1},s_i,a_i) psi+1=P(si+1,si,ai),求解变量为 a i = π ( s i ) a_i = \pi(s_i) ai=π(si),当前阶段期望成本为 c i = Σ s i + 1 C ( s i + 1 , s i , a i ) p s i + 1 c_i=\Sigma _{s_{i+1}}C(s_{i+1},s_i,a_i)p_{s_{i+1}} ci=Σsi+1C(si+1,si,ai)psi+1,目标函数为最小化期望总成本 Σ i ∈ I c i \Sigma_{i\in I}c_i ΣiIci
模型在进行决策的时候有多种方法,这里列举常用的三种:

  • 确定性的贪婪策略 π ( s ) = arg ⁡ max ⁡ a q s , a ∗ \pi(s) = \arg\max_a q^*_{s,a} π(s)=argmaxaqs,a
  • ϵ \epsilon ϵ-greed策略:以 1 − ϵ 1-\epsilon 1ϵ的概率取最优策略,其他等概率。这样可以平衡利用和探索( ϵ \epsilon ϵ的部分)
  • 高斯策略:在连续系统中,行动为 a + ϵ a+\epsilon a+ϵ,后面为零均值正态分布的高斯随机噪声。

下面介再简单描述一些重要概念:

  • 马尔科夫过程(MP)
    MP可以用(S,P)序列表示,其中S表示环境状态,而P表示概率转移的边。MP的前进过程用图表示为:
    ⟶ s t ⟶ p s t s t + 1 ⟶ \longrightarrow s_t \stackrel{p_{s_t}}{\longrightarrow} s_{t+1} \longrightarrow stpstst+1
  • 马尔科夫决策过程(MDP)
    MDP是(S,A,P,R),多了一个决策A和回报R(跨时间的回报需要带上折扣 γ \gamma γ),可以看做是MDP比MP多出来的D(ecision)。MDP的目标是min G G G = min Σ k γ k R k + 1 \Sigma_k \gamma^k R^{k+1} ΣkγkRk+1 = min E π { Σ k γ k R k + 1 } E_{\pi}\{\Sigma_k \gamma^k R^{k+1}\} Eπ{ΣkγkRk+1},求解变量为 π \pi π。MDP的前进过程用图表示如下:
    ⟶ s t ⟶ π a t , r t ⟶ p s t + 1 ⟶ \longrightarrow s_t \stackrel{\pi}{\longrightarrow}a_t ,r_t\stackrel{p}{\longrightarrow} s_{t+1} \longrightarrow stπat,rtpst+1
  • 值函数
    MDP使用迭代的方法求解,定义状态值函数 v v v状态行为值函数 q q q v v v的参数是s,而 q q q的参数是(s,a)。值函数的前进过程图如下:
    ⟶ v ( s t ) ⟶ π q ( s t , a t ) , r t ⟶ p v ( s t + 1 ) ⟶ \longrightarrow v(s_t) \stackrel{\pi}{\longrightarrow} q(s_t,a_t) ,r_t\stackrel{p}{\longrightarrow} v(s_{t+1})\longrightarrow v(st)πq(st,at),rtpv(st+1)
  • 贝尔曼方程
    v v v q q q都有对应的贝尔曼方程(Bellman Equation):
    v s ∗ = max ⁡ a { r ′ + Σ p s , a , s ′ v s ′ ∗ } v^*_{s}=\max_{a} \{r'+\Sigma p_{s,a,s'}v^*_{s'}\} vs=maxa{r+Σps,a,svs},其中 r ′ r' r s ′ s' s是根据 s s s a a a算出来的。
    q s , a ∗ = Σ p s , a , s ′ max ⁡ a ′ { r ′ + q s ′ , a ′ ∗ } q^*_{s,a}=\Sigma p_{s,a,s'} \max_{a'} \{r'+q^*_{s',a'}\} qs,a=Σps,a,smaxa{r+qs,a},其中 r r r s ′ s' s是根据 s s s a a a算出来的。
  • 有模型MDP和无模型MDP
    区别在于P、R是否有确定的表达式。有模型可以简单使用 V V V来求解,而无模型必须使用 Q Q Q来求解。

2. 基本算法

在这里插入图片描述

2.1 有模型MDP的算法

有模型情况下, P P P R R R是已知的,可以通过Bellman方程求解 V V V。然而求解Bellman的过程比较麻烦,实际操作中使用迭代的方法,分为以下两种:

  • 策略迭代方法:策略评估和策略提升分开进行。1:对所有 s s s,迭代计算当前策略表格的值函数 V V V,评估 V = Π P ( R ′ + γ V ′ ) V= \Pi P(R'+\gamma V') V=ΠP(R+γV);2:对所有 s s s,计算所有 a a a Q = P ( R ′ + γ V ′ ) Q= P(R'+\gamma V') Q=P(R+γV),更新策略 Π = arg ⁡ max ⁡ a Q \Pi = \arg \max_{a} Q Π=argmaxaQ
  • 价值迭代方法:对所有的 s s s,迭代 V = arg ⁡ max ⁡ a P ( R ′ + γ V ′ ) V=\arg \max_a P(R'+\gamma V') V=argmaxaP(R+γV)。最后结果中策略没有表格形式,需要自己根据 V V V来算。
  • 广义策略迭代方法:由策略迭代和价值迭代组合而成的算法族,比如说先执行10轮价值迭代,再执行策略迭代。

2.2 无模型MDP的算法

  • 表格型强化学习(即使用表格存储对应值函数的方法)。具体又分两种:1.基于蒙特卡洛的算法,策略评估阶段使用采样的方法,评估时又分every visit和first visit;2. 时间差分方法,结合了采样和动态规划方法,又分online的SARSA方法和offline的Q-learning(使用下一阶段最大的q代替实际的q)。
  • 值函数逼近强化学习(使用机器学习模型替代表格的方法)。首先是DQN,使用了replay buffer和target network两个技巧;然后是double Q-learning,使用了priority replay buffer;再者是Dueling DQN,将值函数q分解为了v和A两部分,A称为优势函数;然后是DQN from demonstration,冷启动时引入专家策略;然后是分布式DQN,从原先的Q函数变成Q分布;Noisy Network则将参数添加随机项来进行探索与开发;最后则是Rainbow模型,集成了前面的诸多方法。
  • 直接搜索策略(将策略参数化,在参数空间中直接搜索最优策略):1. 策略梯度方法;2. TRPO策略更新方法;3. 确定性策略;4. 基于引导策略搜索
  • 近期发展:1. 策略梯度与值函数组合方法;2. 值迭代网络;3. PILCO方法

3. 需掌握的知识

3.1. 线性代数相关

  • 特征值、特征向量
    矩阵 A A A特征值 λ \lambda λ和特征向量 e e e: A e = λ e Ae=\lambda e Ae=λe。对于变换 A A A,只有伸缩而没有旋转。
    对称矩阵的特征向量相互正交,根据这个特性,可以将对称矩阵对角化(对角线为特征值,其余位置都为0)。对角化之后,矩阵求阶乘简单多了: A n = E Λ n E A^n = E \Lambda^n E An=EΛnE
  • 正定矩阵:满足 x A x > 0 xAx>0 xAx>0的矩阵称为正定矩阵(若存在等于0的,则城半正定)。若A的特征值均为正数,则A是正定的。
  • 正交矩阵:满足 A A T = E AA^T=E AAT=E的矩阵称为正交矩阵,其中 E E E为单位矩阵。
  • 奇异值分解(SVD):将 A A A分解为 U Σ V T U\Sigma V^T UΣVT形式,其中 U U U V V V是正交矩阵, Σ \Sigma Σ为对角阵,相当于进行了翻转->缩放->翻转。
  • 线性方程求解的高斯-赛德尔迭代法:与简单迭代法的不同点在于计算 x i k x^{k}_i xik时,利用了刚刚迭代出的 x 1 k x^{k}_1 x1k~ x i − 1 k x^{k}_{i-1} xi1k

3.2. 概率论相关

  • 概率
    首先抽象出随机变量的概念,概率看做是随机变量的取值,即事件到实数的一个映射。频率派将概率理解为无数次事件发生之后,随机变量取某个值的频度;贝叶斯派将概率理解为事件发生的信心。最为常用的概率分布莫过于离散的二项分布(伯努利分布)和连续的正态分布(高斯分布).
  • 贝叶斯公式
    贝叶斯公式算是概率历史上最重要的公式了: p ( Y ∣ X ) = p ( X ∣ Y ) ∗ p ( Y ) / p ( X ) p(Y|X)=p(X|Y)*p(Y)/p(X) p(YX)=p(XY)p(Y)/p(X),其中 p ( Y ) p(Y) p(Y)称为先验概率, p ( X ∣ Y ) p(X|Y) p(XY)称为似然概率, p ( Y ∣ X ) p(Y|X) p(YX)称为后验概率。 X X X是过程信息,其概率一般是一个标准化常量。
  • 最大似然估计
    很多时候我们用概率模型来刻画事件,通过观察到的取值来推测模型的参数,推测的方法一般是用最大似然估计法,即以最大的概率产生样本为目标函数,求解得到参数。一般假设各个变量是独立同分布,然后采用对数将目标函数中的乘法转为加法,例如二项分布求出来的 P ( X = 1 ) = p P(X=1)=p P(X=1)=p等于观测值的均值,正态分布求出来的 u u u等于观测值的均值, σ \sigma σ等于观测值的标准差。
  • 重要性采样
    有些时候,概率密度函数不太好表示,例如我们的数据概率密度函数为 p ( x ) p(x) p(x),想要计算数据 x x x f f f函数下的期望,即 E x ∼ p ( x ) f ( x ) E_{x\sim p(x)}f(x) Exp(x)f(x),常规的方法是求 ∫ x p ( x ) f ( x ) \int_x p(x)f(x) xp(x)f(x),而重要性采样是采样 N N N次(蒙特卡罗法),然后求 Σ x i ∼ p ~ ( x ) f ( x ) ∗ p ( x ) / p ~ ( x ) / N \Sigma_{x_i \sim \tilde{p}(x)}f(x)*p(x)/\tilde{p}(x)/N Σxip~(x)f(x)p(x)/p~(x)/N,其中 p ( x ) 和 p ~ ( x ) p(x)和\tilde{p}(x) p(x)p~(x)也可以用频度近似计算。

3.3. 信息论相关


  • 又称为不确定度, H ( P ) = − Σ p l o g ( p ) H(P) = -\Sigma p log(p) H(P)=Σplog(p)
  • 交叉熵
    H ( P , Q ) = − Σ p l o g ( q ) H(P,Q) = -\Sigma plog(q) H(P,Q)=Σplog(q)
  • KL散度
    用于衡量两个概率分布的差异,等于交叉熵与熵的差值:KL ( p ∣ ∣ q ) = Σ p ( x ) l o g ( p ( x ) / q ( x ) ) = H ( P , Q ) − H ( P ) (p||q) = \Sigma p(x)log(p(x)/q(x)) = H(P,Q) - H(P) (pq)=Σp(x)log(p(x)/q(x))=H(P,Q)H(P)

3.4. 优化相关

  • 凸函数与Jensen不等式
    凸函数的定义公式称为Jensen不等式。在凸函数下,局部最优值等价于全局最优值。
  • 优化的目标函数
    一般分类问题使用交叉熵作为优化目标,其损失的梯度只和正确分类的预测结果有关;回归问题使用平方损失作为优化目标,其损失的梯度和所有样本相关。
  • 梯度下降法
    在每一点,梯度下降法有3个值:当前值x,当前点的梯度grad,以及当前点向前前进的步长step。
  • 动量算法
    所谓动量,指的是将之前阶段的梯度pre_grad以一定的折扣 γ \gamma γ叠加到当前的梯度上。在强化学习中目标函数就使用了动量算法。Nesterov算法计算梯度的时候基于future点来计算的。极限情况下,某个梯度贡献的总能量为 1 / ( 1 − γ ) 1/(1-\gamma) 1/(1γ)
  • 共轭梯度法
    每一次前进时,使得前进方向 r t r_t rt和误差项 e t e_t et正交。使用Gram-Schmidt方法,即每次加一个新的向量进来,并去掉和已有的正交系统重合的部分,构成新的正交系统。具体实现还没怎么看懂,等以后看明白了再更新。
  • 自然梯度法
    将每一轮迭代中对参数的更新变为对模型效果的更新。同样没怎么看懂。
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值