天天看点

强化学习

机器学习可以大致分为四类:

监督学习

无监督学习

半监督学习

强化学习

监督学习是利用标记了的样本进行学习,无监督学习则是使用未标记的样本进行学习,这两个是我们最常见的。半监督学习则是样本中只有少量带标记的样本,多数样本都未标记,利用这些样本进行学习。强化学习则是很不同的一种学习方式,它没有规则的训练样本和标签,主要通过奖励和惩罚达到学习的目的。

《最强大脑》曾经有个挑战项目叫蜂巢迷宫,挑战者不断尝试不断试错。强化学习做法也类似,它主要包含三个概念:状态、动作和回报。同样是以迷宫为例,智能体所在的位置即是状态,从某个位置向某方向走一步则为动作,比如可以向左向右或向上向下,每走一步会产生回报,比如撞到墙就是负回报,好的动作则会带来正回报。而且不仅要关注当前的回报,还要关注长期的回报,通过不断试错学习到一个长期回报的动作序列。

强化学习是机器学习的主要学习方法之一,智能体从环境到行为的学习,也就是如何在环境中采取一些列行为,才能使得奖励信号函数的值最大,即获得的累积回报最大。

强化学习不同于监督学习,监督学习通过正确结果来指导学习,而强化学习通过环境提供的信号对产生的动作的好坏做一种评价,它必须要靠自身经历进行学习。学习后智能体知道在什么状态下该采取什么行为,学习从环境状态到动作的映射,该映射称为策略。

如下图,一个智能体agent通过与环境environment相互交互并以一定的策略改变环境,agent可以从环境中得到状态St,然后执行一个动作At,接着得到一个即时回报Rt,最后转移到下一个状态。

强化学习

所以整个过程就可以总结为根据当前观察状态值找到一个最优的动作使得回报最多。

智能体与环境的交互过程会生成一个序列,

H=S0,A0,R1,S1,A1,R2,S2,A2...,St−1,At−1,Rt−1,St,Rt

对应的Markov动态过程为:agent初始状态为S0,然后执行动作A0,得到回报R1,然后转移到下个状态S1,不断重复。

强化学习

这个过程构成Markov决策过程,服从“未来独立于过去”的Markov假设,所以下一时刻的状态只取决于当前时刻状态。即

p(St+1|St)=p(St+1|S1,S2,...,St)

如果定义了一个转换过程后,得到的回报函数累加和为

R(S0)+γR(S1)+γ2R(S2)+...

强化学习目标就是寻找一个最佳的策略,使回报加权和的期望值最大。

E[R(S0)+γR(S1)+γ2R(S2)+...]

而t时刻的累积回报可以表示为

Ct=Rt+1+γRt+2+γ2Rt+3+...=∑Tk=0γkRt+k+1

可以看到包含了一个阻尼系数r,它的取值为0到1,越靠后的状态对回报的影响越小,逐步衰减。

r=0时,Ct=Rt+1,这时只考虑当前动作的回报。

0< r<1时,Ct=Rt+1+γRt+2+γ2Rt+3+...,这时考虑当前回报和未来回报。

r=1时,Ct=Rt+1+Rt+2+Rt+3+...,这时当前回报和未来回报比重一样。

在某个状态s下,价值函数为

vπ(s)=Eπ[Ct|St=s]即

vπ(s)=Eπ[Rt+1+γRt+2+γ2Rt+3+...|St=s]

vπ(s)=Eπ[Rt+1+γ(Rt+2+γRt+3+...)|St=s]

vπ(s)=Eπ[Rt+1+γCt+1|St=s]

vπ(s)=Eπ[Rt+1+γvπ(St+1)|St=s]

价值函数可以看成两部分,Rt+1为即时回报,γvπ(St+1)为下一状态价值函数值的打折值。上面的价值函数为Bellman Equation形态,即动态规划方程,可用迭代方式求解。

前面说到的是状态价值函数,我们还需要动作价值函数,它可以用来根据动作价值的大小而做出动作。Q学习即是学习不同状态下各个动作的质量,它定义为

Qπ(s,a)=Eπ[Ct|St=s,At=a]

它同样可以变换成Bellman Equation形态,

Qπ(s,a)=Eπ[Rt+1+γQπ(St+1,At+1)|St=s,At=a]

最优动作价值函数,

Q∗(s,a)=MaxπQπ(s,a)

Q∗(s,a)=Eπ[MaxRt+1+γMaxSt+1Qπ(St+1,At+1)|St=s,At=a]

可以看到最大化当前的动作价值函数就是最大化当前回报和下一时刻状态的最优动作价值函数。

动作价值函数虽然能直接计算出Q值,但实际学习时并没有直接使用该Q值来更新,而是通过渐进的方式来更新。学习的方法可用如下伪代码说明,首先初始化Q学习的状态集和动作集组成的数组,然后观察初始状态,接着不断重复执行:选择一个动作,观察回报并转移到新状态,更新Q学习数组值,涉及迭代方式更新,由于我们不能知道下一刻状态的Q值,所以更新时用之前迭代的Q值来更新此次迭代的Q值,其中α表示学习率。

它是试错学习,因为它没有像监督学习一样的直接指导信息,所以它只能不断去跟环境交互不断试错来获取最佳策略。

它的回报具有延迟性,因为它往往只能在最后一个状态才能给出指导信息,这个问题也让回报的分配更加困难,即在得到正回报或负回报后怎么分配给前面的状态。

比如飞行器的飞行控制。

比如控制机器人的行走。

比如学习怎么玩游戏。

比如学习怎么理财投资。

比如学习怎么下棋。

以下是广告

========广告时间========

<a href="http://blog.csdn.net/wangyangzhizhou/article/details/74080321" target="_blank">为什么写《Tomcat内核设计剖析》</a>

=========================

欢迎关注:

强化学习
强化学习

继续阅读