增强学习(reinforcement learning)Q

1 模型的建立

假设我们的建筑有5个房间,他们的链接情况如图1所示。用A到E将五个房间命名。建筑外面用F代表。

我们用一张连通图(图2)代表房屋的连接状态。图的结点(vertex)代表房间,边(edge)代表门。

图2 图3

如果我们放置一个agent(agent)到任意一个房间,现在想让agent走出这个建筑。换句话说,我们的目标是让agent移动到F结点。为此,我们引入一个“奖励”值给每个门(连通图中用边代替)。直接可以走出建筑的门赋予“奖励”值100(连通图中红色的边),其他的门赋予“奖励”值0 ,如图3所示。我们在结点F上添加一个环,赋予“奖励”值为100,这样,agent到达F就永远选择留在F了。

2 代理、状态和动作2.1 代理

可以将代理(agent)想象为一个机器人,机器人可以通过经验进行学习。起初,agent并不知道周围环境,它可以从一个房间走到另外一个房间,但是不知道从哪个门可以走出建筑。agent可以在并到达任意一个房间。例如,,假设有一个agent在房间C,我们的目标是让agent学会到达建筑外面的F。

2.2 状态和动作

我们称每个房间为一个状态(包括建筑外面的F)。agent从一个房间移动到另外一个房间即从一个状态到另外一个状态的过程称为动作。假设现在一个agent处于状态C,agent可以执行的动作是从状态C移动到状态D。在状态D可以执行的动作是1.移动到状态B;2.移动到状态E;3.移动回状态C。下面通过一个矩阵更加明了的表达状态和动作,根据连接图3,我们给矩阵中的每个动作赋予“奖励“(reward)值,称这个的矩阵为R。

即:

现在我们需要一个相似的矩阵Q来存储agent从经验中学习的值。Q矩阵的行代表着agent的当前状态,列代表将要到达的下一个状态。Q矩阵中的值代表着agent从当前状态到next状态所对应动作(action)的得分(Q pointing)。

初始,Q举证为零矩阵。学习过程就是不断更新Q矩阵。Q矩阵的更新算法很简单。

下面给出伪代码:

Q Learning Algorithm goes as follow1. Set parameter r, and environment reward matrix R2. Initialize matrix Q as zero matrixFor each episode:Select random initial stateDo while not reach goal stateSelect one among all possible actions for the current stateUsing the possible action,consider to go to the next stateGet maximum Q value of this next state based on all possible actionscomputeSet the next state as the current stateend Doend ForQ 矩阵跟新完成后,怎么利用Q矩阵呢?下面算法是利用Q矩阵找到目标状态。Algorithm 头utilize the Q matrixinput: Q matrix,initial state1. Set current state = initial state2. From current state,find action that produce maximum Q value3. Set current state = next state4. Go to 2 until current state = goal state下面我们用一个简单的例子将算法走一遍。

首先,设置r=0.8。给出Q矩阵和R矩阵。

假设初始在B状态,根据R矩阵,从B可以到D,也可以到F。假设我们去F,我们知道从F状态可以去B,E,和F状态。根据:

得到:

至此,我们更新了一个Q-value值。我们接着进入第二阶段的更新。这次我们初始状态为D。同样根据R矩阵,从D可以到B,C,E。随机,就到B吧。那么:

即:

好了,不在多说,经过有限次数的更新,Q矩阵会收敛到一个固定值。这是Q矩阵的最终值。

Q矩阵的值有点大,我们要的是他们之间的相对大小,所以简化一下Q矩阵(除以5)。

一个形象的图看看(都能看懂吧):

推荐阅读:~sutton/book/ebook/the-book.html。看看作者你就会下定决心必读这本书。

以诚感人者,人亦诚而应。

增强学习(reinforcement learning)Q

相关文章:

你感兴趣的文章:

标签云: