Q-Learning算法学习

Q-Learning算法学习

简介

Q-Learning算法下,目标是达到目标状态(Goal State)并获取最高收益,一旦到达目标状态,最终收益保持不变。因此,目标状态又称之为吸收态

Q-Learning算法下的agent,不知道整体的环境,知道当前状态下可以选择哪些动作。

通常,我们需要构建一个即时奖励矩阵R,用于表示从状态s到下一个状态s’的动作奖励值。

由即时奖励矩阵R计算得出指导agent行动的Q矩阵。

Q矩阵是agent的大脑

初始时,Q矩阵元素全部初始化为0,表示当前的agent大脑一片空白,什么也不知道。

而计算 Q(s,a) 的推导公式是:

Q(s,a)=R(s,a)+γmax[Q(s,all actions)]

其中, s 表示下一个状态。

通过这个推导公式计算出Q矩阵的元素,注意右边的max内的Q值通过查找当前的Q矩阵得到,左边是计算。而不是我们第一眼看过去理解的那样:需要用动态规划来求解。

Q-Learning算法核心

以一个episode为一个训练周期:从初始状态到终结态。

每学完一个episode后,再进入下一个episode学习。

因此,可以得到Q-Learning外层循环是一个episode,内层循环是episode的每一个step。

算法核心

  1. 设置好 γ 值以及矩阵R
  2. 初始化矩阵Q全为0
  3. For each episode:
    1. Select a random initial state
    2. Do while the goal state hasn’t been reached.
      1. Select one among all possible actions for current state
      2. Using this possible action, consider going to the next state
      3. Get maximum Q value for this next state based on all possible actions
      4. Compute: Q(s,a)=R(s,a)+γmax[Q(s,all actions)]
      5. Set the next state as the current state
    3. End Do
  4. End For

每个episode是一个training session,且每一轮训练的意义是:加强大脑,表现形式是agent的Q矩阵的元素更新。

当Q习得后,可以用Q矩阵来指引agent的行动。

问题是:如何使用Q矩阵?

核心是:从Q矩阵中寻找当前状态得到的最大的总收益的行动。

具体算法如下:

  1. Set current state = initial state
  2. From current state, find the action with the highest Q value
  3. Set current state = next state
  4. Repeat 2,3, until current state = goal state

所以问题的重点是在求得Q矩阵,而利用Q矩阵是比较简单的。

最终输出的是从初始状态到目标状态的状态序列,表示从当前习得的Q矩阵下做出的最优选择。

猜你喜欢

转载自blog.csdn.net/u011240016/article/details/76242207
今日推荐