强化学习
机器学习可以分为三类,分别是 supervised learning,unsupervised learning 和reinforcement learning。而强化学习与其他机器学习不同之处为:
- 没有教师信号,也没有label。只有reward,其实reward就相当于label。
- 反馈有延时,不是能立即返回。
- 相当于输入数据是序列数据。
- agent执行的动作会影响之后的数据。
强化学习的关键要素有:environment,reward,action 和 state。有了这些要素我们就能建立一个强化学习模型。强化学习解决的问题是,针对一个具体问题得到一个最优的policy,使得在该策略下获得的reward最大。所谓的policy其实就是一系列action。也就是sequential data。
强化学习可用下图来刻画,都是要先从要完成的任务提取一个环境,从中抽象出状态(state) 、动作(action)、以及执行该动作所接受的瞬时奖赏(reward)。
reward
reward通常都被记作RtRt,表示第t个time step的返回奖赏值。所有强化学习都是基于reward假设的。reward是一个scalar。
action
action是来自于动作空间,agent对每次所处的state用以及上一状态的reward确定当前要执行什么action。执行action要达到最大化期望reward,直到最终算法收敛,所得的policy就是一系列action的sequential data。
state
就是指当前agent所处的状态。
policy
policy就是只agent的行为,是从state到action的映射,分为确定策略和与随机策略,确定策略就是某一状态下的确定动作a=π(s), 随机策略以概率来描述,即某一状态下执行这一动作的概率:π(a|s)=P[At=a|St=s]。
value function
因为强化学习今本上可以总结为通过最大化reward来得到一个最优策略。但是如果只是瞬时reward最大会导致每次都只会从动作空间选择reward最大的那个动作,这样就变成了最简单的贪心策略(Greedy policy),所以为了很好地刻画是包括未来的当前reward值最大(即使从当前时刻开始一直到状态达到目标的总reward最大)。因此就够早了值函数(value function)来描述这一变量。表达式如下:
γ是折扣系数(取值在[0,1]),就是为了减少未来的reward对当前动作的影响。然后就通过选取合适的policy使value function最大,稍后会为大家推导著名的bellman方程,bellman方程才是强化学习各大算法(e.g. 值迭代,策略迭代,Q-learning)的源头。
model
model就是用来预测环境接下来会干什么,即在这一状态的情况下执行某一动作会达到什么样的状态,这一个动作会得到什么reward。所以描述一个模型就是用动作转移概率与动作状态reward。具体公式如下:
马尔可夫决策过程(MDP)
大家应该都很熟悉马尔科夫过程,其实就是状态以及某状态的转移,最重要的就是一步转移概率矩阵,只要有了这个一步转移概率矩阵就能刻画整个马尔科夫过程。
下面就来介绍一下马尔可夫决策过程(MDP)它主要由以下几个变量来刻画,状态空间S(是一个有限集合),动作空间A(一个有限动作集合),状态转移概率矩阵P,奖赏函数RR以及折扣因子γ(γ∈[0,1]。
下面介绍一个MDP常用的用来刻画奖赏的函数。
1.return Gt
t时刻之后未来执行一组action后能够获得的reward,即t+1,t+2…所有时刻的reward之和。(未来时刻的reward在当前时刻体现),后面的reward要乘以discountγγ 系数。表达式如下:
2.状态值函数v(s)v
定义为t时刻状态S能获得的return的期望,表达式如下:
3.动作值函数qπ(s,a)
t时刻状态S下选择特定action后能获得的return的期望,表达式如下:
下面来讲解一下最著名的bellman方程的推导,首先推导如何迭代值函数,即更新值函数:
1.value function
v(s)=E[Gt|St=s]=E[Rt+1+γ(Rt+2+γRt+3+...)|St=s]
=E[Rt+1|St=s]+γE[Gt+1|St=s]
=ERs+γ∑Gt+1P[Gt+1|St=s]
=ERs+γ∑Gt+1∑s′P[Gt+1|St+1=s′,St=s]∗P[St+1=s′|St=s]
=ERs+γ∑s′∈Sv(s′)Pss′
2.Q-value function
∵v(s)=E[Gt|St=s]=∑a∈AP[At=a|St=s]∗E[Gt|St=s,At=a]
=π(a|s)qπ(s,a)
qπ(s,a)=Ras+γE[Gt+1|St=s,At=a]
=Ras+γ∑s′∈SE[Gt+1|St+1=s′,St=s,At=a]P[St+1=s′|St=s,At=a]
=Ras+γ∑s′∈SPass′E[Gt+1|St+1=s′]
=Ras+γ∑s′∈SPass′vπ(s′)
有1与2的推导就可以得到著名的bellman方程,强化学习的算法迭代都是基于此方程的。如下: