Q-learning

原文http://blog.sina.com.cn/s/blog_9409e4a3010137gm.html

环境建模

假设在一个建筑里有5个房间通过门连通如下图所示,我们给5个房间依次命名为A~E。现在考虑我们站在外面的一个大房间F,且房间F覆盖了建筑其余所有空间。也就是从F可以进入B或E房间。


我们可以将每个房间表示为一个节点,每扇门作为一条边。


我们想要到达一个目标房间。如果将一个agent放入任一一个房间,我们希望agent可以走出这个建筑。换句话说,目标房间就是F。这里我们为每扇门引入一个回报值(例如图中的边长)。如果一扇门可以瞬时到达目标F则回报值为100(如下图所示,即红色箭头所示),其他门无法直接到达F则回报值为0。因为门是双向的(从A可以到达E,从E也可以到达A),所以每两个节点都有两个相反的箭头所指向,每个箭头都包含一个瞬时回报值。图变成了一个状态状图,如下图所示。

注意F节点有一个最大回报值自循环(F back to F),所以如果一个agent到达目标节点,它将永远停在这里,我们称其为吸引节点(absorbing goal)。因为agent到达这个目标状态,它将一直维持这个状态。


Agent,状态(state)和行为(Action)介绍

假设我们的agent是一个机器人并且可以通过行走来学习。机器人在对环境未知的情况下从一间房间走进另间房间。更加不知道如果如果选择走过哪扇门从而走出建筑。

Suppose we want to model some kind of simple evacuation of an agent from any room in the building. 现在我们假设机器人当前时刻在C,并且希望机器人可以通过学习走到F。


如何让机器人从行走中不断学习?

在我们讨论机器人学习(Q-learning)之前,让我们了解下术语状态(state)和行为(action)。

我们将每间房间(包括目标房间)作为state。机器人从一间房间移动到另一间房间称作action。回想下上面的状态装换图。通过状态图的节点描述state,用箭头代表action。


假设现在机器人在stateC,从stateC,机器人只能到达stateD。从stateD可以到达stateB,stateE或者回到stateC,如果在stateE,机器人可以有三种action,即到stateA,stateF或者stateD,如果机器人在stateB,它既可以到达stateF,也可以到达stateD。

我们现在将状态装换图和瞬时回报值放入回报表R中

 

Action to go to state

Agent now in state

A

B

C

D

E

F

A

-

-

-

-

0

-

B

-

-

-

0

-

100

C

-

-

-

0

-

-

D

-

0

0

-

0

-

E

0

-

-

0

-

100

F

-

0

-

-

0

100

减号代表两个状态不可相互转化。

Q-Learning

在前面我们建立了环境模型和回报系统。这部分我们将讲解学习算法Q-Learning(它是对强化学习的简化)。

我们建立环境回报系统矩阵R


现在我们将一个类似于矩阵的Q放入机器人的大脑,Q将保存机器人通过行走获得的环境信息。矩阵Q的行头代表机器人状态,Q的列头代表行为所指向的下一个转换状态。

开始,机器人对环境信息一无所知。因此Q是一个零矩阵。在本例中,为了方便讲解,我们假设状态数已知(状态数为6),一般情况下,我们可以将Q矩阵初始化为一个空矩阵(Q=[])。之后当发现一个新状态时就增加Q矩阵的行和列。

Q-Learning的转换规则如下:


这个公式的意思是矩阵Q等于当前状态的瞬时回报R加上从所有可能的action中选择到达某一相应状态得到的最大Q值与γ的乘积,这里γ为学习参数(0<=γ<1)。

Q-Learning 算法

机器人在无监督的情况下(无监督学习)。机器人通过一个状态到一个状态的搜索直到到达目标节点。这里我们称一次起始节点搜索到达目标节点为一个episode,当一个episode结束,程序进入下一个episode。收敛证明请点击(See references for proof )。

Q-Learning 总结

假设:状态转换图带有一个目标状态(用矩阵R来表示)。

寻找:从起始状态到达目标状态最短路径(用矩阵Q来表示)。

Q Learning Algorithm goes as follow

  1. Set parameter  , and environment reward matrix R
  2. Initialize matrix as zero matrix
  3. For each episode:
    • Select random initial state
    • Do while not reach goal state
      • Select one among all possible actions for the current state
      • Using this possible action, consider to go to the next state
      • Get maximum Q value of this next state based on all possible actions
      • Compute 
      • Set the next state as the current state

End Do

End For

以上算法用于机器人学习或者训练。每个episode相当于一次训练。每次训练机器人获取环境信息(用矩阵R表示),获得回报值(或者没有)直到到达目标状态。训练的目的就是不断丰富机器人的大脑的信息(用矩阵Q表示),更多的训练会产生更好的Q矩阵来指导机器人得到一条最优路径。如果Q矩阵得到了增强,而不是探索四周,来回走在同一个房间,机器人会找到最快的路线到达目标状态。

γ的在[0,1)之间,当γ趋近于0时,机器人趋向于仅考虑瞬时回报,如果γ接近1,机器人将以比较大的比重考虑未来的回报,也即延迟回报。

这里使用Q矩阵,机器人从初始状态知道目标状态不断跟踪状态序列。算法仅仅是找到一个行为去使得当前状态下获得最大Q。

具体步骤:

我们假设γ为0.8。初始状态为B,首先设置Q为零矩阵。



这里矩阵R表示为当前环境下的回报矩阵



我们看R中第二行(状态B)。这里对于当前状态B有两个可能的动作,通过随机选择我们选择F作为我们的行为。

现在我们考虑假设我们处于状态F。回头看下回报矩阵R,有3种可选行为去到达B,E或者F。

Q(state,action) = R(state,action) + γ*MAX[Q(next state,all actions)]

Q(B,F) = R(B,F) + 0.8*MAX[Q(F,B),Q(F,E),Q(F,F)]=100 + 0.8*0 = 100

因为矩阵Q仍然是一个零矩阵,所以Q(F,B),Q(F,E),Q(F,F)都为零。

下个状态是F,现在F变成了当前状态。因为F是目标状态,我们就完成了一个episode。现在机器人包含了更新好的Q矩阵:



对于下一个episode,我们重新随机选择一个起始状态D。

回想回报矩阵R,在D下有三种可选行为,可以转换到B,C或者E。通过随机选择,我们选择B作为我们的行为。

现在我们假设我们在状态B下。查看R中的第二行,我们有两种选择可以到D或者F,我们现在计算Q值:

Q(state,action) = R(state,action) + γ*MAX[Q(next state, action, all actions]

Q(D,B) = R(D,B) + 0.8 MAX[Q(B,D),Q(B,F)] = 0 + 0.8*100 = 80

我们再次更新矩阵Q为如下:



则B变为当前状态,我们重复Q-learning以到达目标状态F。我们很幸运的选择行为F。

现在F有三种行为到达B,E或者F。我们计算Q值:

Q(state,action) = R(state,action) + γ*MAX[Q(next state,all actions)]

Q(B,F) = R(B,F) + 0.8*MAX[Q(F,B),Q(F,E),Q(F,F)]=100 + 0.8*0 = 100

因为F是目标状态,我们完成这次episode,机器人大脑中包含的已更新Q矩阵为:



如果机器人经历了更多次episode,最终Q矩阵将达到收敛:



之后对Q进行归一化



当Q矩阵几乎收敛时,机器人可以获得一条到达目标状态的最优路径。跟踪状态序列,我们可以很容易的计算出通过一组什么样的行为可以获得最大Q值


例如我们将C作为初始状态,我们可以这样获得一条最优路径:

首先在状态C下产生一个行为D来获得最大Q;

之后再状态D下有两个状态B或者E可获得最大Q值,这里假设我们选择B;

在状态B下选择行为F;

因此路径序列为C-D-B-F














  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值