Q-Learning算法学习
简介
Q-Learning算法下,目标是达到目标状态(Goal State)并获取最高收益,一旦到达目标状态,最终收益保持不变。因此,目标状态又称之为吸收态。
Q-Learning算法下的agent,不知道整体的环境,知道当前状态下可以选择哪些动作。
通常,我们需要构建一个即时奖励矩阵R,用于表示从状态s到下一个状态s’的动作奖励值。
由即时奖励矩阵R计算得出指导agent行动的Q矩阵。
Q矩阵是agent的大脑。
初始时,Q矩阵元素全部初始化为0,表示当前的agent大脑一片空白,什么也不知道。
而计算
其中,
通过这个推导公式计算出Q矩阵的元素,注意右边的max内的Q值通过查找当前的Q矩阵得到,左边是计算。而不是我们第一眼看过去理解的那样:需要用动态规划来求解。
Q-Learning算法核心
以一个episode为一个训练周期:从初始状态到终结态。
每学完一个episode后,再进入下一个episode学习。
因此,可以得到Q-Learning外层循环是一个episode,内层循环是episode的每一个step。
算法核心:
- 设置好
γ 值以及矩阵R - 初始化矩阵Q全为0
- For each episode:
- Select a random initial state
- Do while the goal state hasn’t been reached.
- Select one among all possible actions for current state
- Using this possible action, consider going to the next state
- Get maximum Q value for this next state based on all possible actions
- Compute:
Q(s,a)=R(s,a)+γmax[Q(s′,all actions)] - Set the next state as the current state
- End Do
- End For
每个episode是一个training session,且每一轮训练的意义是:加强大脑,表现形式是agent的Q矩阵的元素更新。
当Q习得后,可以用Q矩阵来指引agent的行动。
问题是:如何使用Q矩阵?
核心是:从Q矩阵中寻找当前状态得到的最大的总收益的行动。
具体算法如下:
- Set current state = initial state
- From current state, find the action with the highest Q value
- Set current state = next state
- Repeat 2,3, until current state = goal state
所以问题的重点是在求得Q矩阵,而利用Q矩阵是比较简单的。
最终输出的是从初始状态到目标状态的状态序列,表示从当前习得的Q矩阵下做出的最优选择。