强化学习介绍和马尔可夫决策过程详细推导

Posted 搜索与推荐Wiki

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了强化学习介绍和马尔可夫决策过程详细推导相关的知识,希望对你有一定的参考价值。

强化学习系列学习笔记,结合《UCL强化学习公开课》、《白话强化学习与PyTorch》、网络内容,如有错误请指正,一起学习!

强化学习基本介绍

强化学习的中心思想是让智能体在环境中自我学习和迭代优化。

强化学习流程

强化学习的过程是一个反馈控制系统,其大概的一个流程图如下所示:

结合这张图,我们进行相关的概念解释和流程说明。首先图中涉及了几个概念,我们依次来看下是什么意思。

  • Agent:或者称为“Brain”、大脑、智能体,是机器人的智能主体部分,也即我们要操控的对象
  • Environment:指机器人所处的环境,客观存在的状态
  • State:当前时刻下Agent所处的状态
  • Reward:Agent在执行某个动作后获得的奖励
  • Action:要执行的动作,Agent在结合当前所处的状态(State)和上一次执行动作(Action)之后获得的奖励(Reward)要在当前时刻下执行的动作

接着我们再去理解这个图,所表达的意思是:在当前状态(State, S t S_t St)下,智能体(Agent)做了动作(Action, A t A_t At)之后获得了奖励(Reward, R t R_t Rt),其串行的流程为上图的下边部分。

强化学习与监督学习

机器学习从其学习方式上大体可以分为三类:

  • 监督学习(supervised learning)
  • 无监督学习(unsupervised learning)
  • 强化学习(reinforcement learning)

监督学习是从有标签的数据集中进行模式和特征的学习,从而对新的样本进行预测,比如常见的分类、回归问题,还有推荐系统中的CTR预估。这种场景下label都是固定的,我们需要研究出一种固定的映射关系 y = f ( x ∣ θ ) y = f(x|\\theta) y=f(xθ),以便于在新样本上发挥作用。

无监督学习则是对无标签的数据进行学习,比如常见的聚类就是典型的无监督学习算法。对比有监督学习,我们只知道样本即 x x x,并不知道 也不需要知道 y y y

强化学习相较于监督学习和无监督学习,区别在于其是以不同建模方式或思考角度来解决问题,是一种方法论,其拥有了一套比较完整的处理数据、建模、训练、调优的套路。但是通过对强化学习流程的了解,你会发现强化学习和监督学习的思路有点类似,但是其标签(即 y y y)是有时间上的延迟的,即先产生动作,再得到反馈。

强化学习的应用

对于强化学习大家印象最深的莫过于2016年AlphaGo击败 九段的围棋选手李在石,但其实强化学习也应用于社会中的各个场景,比如:

  • 自动机器学习AutoML
  • 决策服务(Decision Service)
  • 推荐系统、广告系统
  • 智能交通
  • 机器人
  • 计算机视觉
  • 计算机系统
  • 教育
  • 金融
  • 游戏
  • 自动驾驶
  • … …

在每年的各类计算机大会上发表的论文中,其实都可以看到强化学习的身影,由于笔者是专注于推荐系统的,所以主要关注的是:强化学习与推荐系统。

后续会在《结合论文看Youtube推荐系统中召回和排序的演进之路(下)篇》中介绍Youtube推荐系统与强化学习的结合应用,欢迎关注,目前已经更新(上)篇。

另外从事推荐系统相关工作的朋友,应该知道「多臂老虎机」,即Bandit类算法,其本质上也是一种自我博弈和反馈决策的过程,算是强化学习中比较好理解的算法和内容了,感兴趣的朋友可以看下面的2篇关于多臂老虎机的文章:

马尔科夫决策过程

在前边的内容中提到了强化学习的决策过程,依赖于当前的状态的环境,但是实际的场景是非常复杂的,难以进行建模,因此对其进行了简化,即假设状态的转化是马尔科夫性,即转化到到下一个时刻的状态 s t + 1 s_t+1 st+1 仅仅和上一个状态 s t s_t st有关,与之前的状态无关。

因此我们先来了解一下马尔科夫的相关知识,再去了解马尔科夫决策过程(Markov Decision Process,MDP)。

马尔科夫链

什么是马尔科夫链呢?一个比较正式的定义为:设 x t x_t xt表示随机变量 X X X在离散时间 t t t时刻的取值,若该变量随时间变化的转移概率仅依赖于它的当前值,即:
P ( X t + 1 = s j + 1 ∣ X 0 = s 0 , X 1 = s 1 , . . . , X t = s j ) = P ( X t + 1 = s j + 1 ∣ X t = s t ) P(X_t+1 = s_j+1 | X_0=s_0, X_1 = s_1, ..., X_t = s_j) = P(X_t+1 = s_j+1 | X_t = s_t) P(Xt+1=sj+1X0=s0,X1=s1,...,Xt=sj)=P(Xt+1=sj+1Xt=st)
也就是状态转移概率仅依赖于前一个状态,称这个变量为马尔科夫变量,其中 s 0 , s 1 , . . . , s j s_0, s_1, ..., s_j s0,s1,...,sj为随机遍历 X X X的可能状态,这个性质称为马尔科夫性质,具有马尔科夫性质的随机过程称为马尔科夫过程

马尔科夫链则是满足马尔科夫性质的随机过程,在一段时间内随机变量 X X X的取值序列( X 0 , X 1 , . . . , X n X_0, X_1, ..., X_n X0,X1,...,Xn)满足上述性质。

比如:一只青蛙呆在井底( q = 1 q=1 q=1),一层一层的向上跳,到达第 i i i层之后,它能跳上去的概率和跳不上去的概率(直接回到底层的概率)为:
q i , i + 1 = a i q i , 1 = 1 − a i \\left\\\\beginmatrix q_i,i+1 = a_i \\\\ q_i,1 = 1-a_i \\endmatrix\\right. qi,i+1=aiqi,1=1ai
也就是说,每一次这只青蛙站在比如第5层,下一次尝试能跳到第6层的概率都是一样的,跟这只青蛙历史上掉回底层多少次之类都是没有关系的,这就是一个马尔科夫过程。

马尔科夫过程是一个无记忆的随机过程,例如满足马尔科夫性质的状态一系列序列为: S 1 , S 2 , S 3 , . . . S_1, S_2, S_3, ... S1,S2,S3,...

马尔科夫过程(Markov Process)的定义为:一个马尔科夫过程或者马尔科夫链由一个二元组构成: ( S , P ) (S,P) S,P

  • S S S为有限的状态空间集, s i s_i si表示时间步 i i i的状态,其中 S = s 1 , s 2 , . . . , s n S=\\ s_1, s_2, ..., s_n \\ S=s1,s2,...,sn
  • P P P为状态转移矩阵, P s ′ = P [ S s + 1 = s ′ ∣ S t = s ] P_s' = P[S_s+1 = s' | S_t = s] Ps=P[Ss+1=sSt=s]

又比如把一个人的上课学习过程当作是一个简单的马尔科夫过程(例子来源:https://www.jianshu.com/p/fb33231ac3a8 ),如下图所示:

这个任务中有7个状态 ( F a c e b o o k , C l a s s 1 , C l a s s 2 , C l a s s 3 , P a s s , P u b , S l e e p ) (Facebook, Class 1, Class 2, Class 3, Pass, Pub, Sleep) (Facebook,Class1,Class2,Class3,Pass,Pub,Sleep)。在每个状态对应着响应的转移概率,比如在 C l a s s 1 Class1 Class1状态下,有0.5概率继续转移到 C l a s s 2 Class2 Class2以及0.5的概率转移到 F a c e b o o k Facebook Facebook,这里可以注意到每个状态转移概率之和为1。

在这里我们如果对这个马尔科夫过程,从 C l a s s 1 Class1 Class1状态开始采样,将会得到很多幕(episode)的采样数据。其中每一幕序列可能为: