什么是强化学习?
强化学习(reinforcement learning)是一种重要的机器学习方法。所谓强化学习就是智能体从环境到行为映射的学习,目标是最大化期望积累奖励。强化学习广泛应用于无人驾驶汽车,棋类游戏和机器人等领域当中。强化学习不属于监督学习,也不属于非监督学习。
基本概念
阶段性任务:智能体与环境的互动在一个特定的时间步T结束
连续性任务:智能体一直与环境互动没有限制
强化学习目标:最大化期望积累奖励 即Gt = Rt+1 + Rt+2 +Rt+3 +Rt+4 +...
由于我们希望智能体更关注当前获得的奖励,所以将上式改进为折扣奖励
即Gt = Rt+1 + γRt+2 +γ²Rt+3 +γ³Rt+4 +... 其中γ∈[0,1]
γ越小,智能体越关注当前获得的奖励,γ越大,智能体越关注未来所能获得的奖励
强化学习任务通常用MDP(马尔科夫决策流程)来描述
主要包括:① 有限状态集合S
② 有限动作集合A
③ 有限奖励集合R
④ 环境的一步动态特性 P(s',r|s,a) = P(St+1 = s',Rt+1 = r|St = s,At = a) for all s,s',and r
其中有限MDP:状态空间S和动作空间A都必须使有限的
对于有限MDP,解决强化问题主要有动态规划,蒙特卡罗方法和时间差分方法。
一、动态规划
在动态规划设置中,智能体完全了解环境特性的马尔科夫决策流程(MDP),比强化学习简单很多,强化学习中智能体需要与环境互动来获得MDP。
那么如何对策略π进行评估?——采用状态值函数Vπ(S),对于状态S的状态值函数是指从该状态开始,每一步都遵循策略π所获得的折扣奖励Gt。
计算状态值函数要用到贝尔曼方程 vπ(s)=Eπ[Rt+1+γvπ(St+1)∣St=s].
采用迭代的方法对状态值函数进行估计,算法如下图。
那么评估策略π后如何进行改进?——采用动作值函数Qπ(S,A),指的是从状态S开始,先采取动作A,之后的动作全部遵循策略π所获的折扣奖励Gt。
更新策略的思想是在每个状态都选择动作值函数最大的动作。策略改进的算法如下图所示。
将策略评估与策略改进结合起来,算法如下图,当策略不再更新时,即获得了最优策略。
二、蒙特卡罗方法
蒙特卡罗方法是一种基于统计的方法,我们不需要预先知道MDP,而是通过智能体与环境互动获得。
学习的方法依然是:评估策略(通过状态值函数)→策略更新(通过动作值函数),只不过Vπ和Qπ的计算方法与动态规划不一样,而是基于一种统计的方法。且蒙特卡罗方法适用于阶段性任务。
首先介绍阶段(episode)的概念:我们将时间拆散为离散时间步,在每个时间步,智能体都从环境中获得一个奖励和状态,并选择一个相应动作,这样的话,互动变成一系列的状态,动作和奖励,当智能体在时间T遇到最终状态时结束,即S0,A0,R1,S1,A1,R2,...,ST。我们将这一过程称为一个阶段。
对于状态X,我们查看在所有阶段状态X的状况,求在该状态之后的折扣回报,然后求平均值作为该状态的状态值函数的估计。
算法如下图所示。
动作值函数的估计是一样的道理,算法如下图所示。
在使用动作值函数更新策略时,我们采用Epsilon贪婪策略。这种方法基于一个概率对探索和利用进行折中:每次更新策略时,在每一个状态,以Epsilon的概率进行探索,即以均匀概率随机选取一个动作(除动作值函数最高的动作),以1-Epsilon的概率进行利用,即选择当前状态下使动作值函数最大的动作。算法如下图所示。
三、时间差分方法
时间差分方法可以理解为蒙特卡罗算法的改进,可以解决连续性任务和阶段性任务,而蒙特卡罗算法只能解决阶段性任务。
对于策略评估(估计状态值函数),两种方法的差别主要在于算法中状态值的更新步骤
V(St) ← V(St) + α(Gt - V(St))
在连续性任务中,我们无法计算阶段结束时的回报Gt,我们利用贝尔曼方程vπ(s)=Eπ[Rt+1+γvπ(St+1)∣St=s]
它可以用潜在的后续状态的值表示任何状态的值。即用 Rt+1+γvπ(St+1) 代替Gt。
算法如下图所示。
对于策略更新(利用动作值函数)是一样的道理,算法如下图所示。
四、总结
强化学习问题通常都会转化为马尔科夫决策流程(MDP),一个MDP由一组状态S,动作A,概率P,奖励R和折扣因子γ组成。
我们通常估算状态值函数V(S)以及特定状态下采取的动作值Q(S,A),后者可以帮我们判断应该采取什么动作,进而可以帮我们找到解决问题的最优策略π*,从而最大化接收的总奖励。
注意,因为MDP本质上具有概率性,因此我们无法完全确定地预测未来将获得什么奖励及持续多久,因此我们计算的是总预期奖励。
参考:Udacity 深度学习课程
《机器学习》周志华