小例子
学习资料:
要点¶
这一次我们会用 tabular Q-learning 的方法实现一个小例子, 例子的环境是一个一维世界, 在世界的右边有宝藏, 探索者只要得到宝藏尝到了甜头, 然后以后就记住了得到宝藏的方法, 这就是他用强化学习所学习到的行为.
-o---T
# T 就是宝藏的位置, o 是探索者的位置
Q-learning 是一种记录行为值 (Q value) 的方法, 每种在一定状态的行为都会有一个值 Q(s, a)
, 就是说 行为 a
在 s
状态的值是 Q(s, a)
. s
在上面的探索者游戏中, 就是 o
所在的地点了. 而每一个地点探索者都能做出两个行为 left/right
, 这就是探索者的所有可行的 a
啦.
如果在某个地点 s1
, 探索者计算了他能有的两个行为, a1/a2=left/right
, 计算结果是 Q(s1, a1) > Q(s1, a2)
, 那么探索者就会选择 left
这个行为. 这就是 Q learning 的行为选择简单规则.
当然我们还会细说更具体的规则. 在之后的教程中, 我们会更加详细得讲解 RL 中的各种方法, 下面的内容, 大家大概看看就行, 有个大概的 RL 概念就行, 知道 RL 的一些关键步骤就行, 这节的算法不用仔细研究.
预设值¶
这一次需要的模块和参数设置:
Q 表¶
对于 tabular Q learning, 我们必须将所有的 Q values (行为值) 放在 q_table
中, 更新 q_table
也是在更新他的行为准则. q_table
的 index 是所有对应的 state
(探索者位置), columns 是对应的 action
(探索者行为).
定义动作¶
接着定义探索者是如何挑选行为的. 这是我们引入 epsilon greedy
的概念. 因为在初始阶段, 随机的探索环境, 往往比固定的行为模式要好, 所以这也是累积经验的阶段, 我们希望探索者不会那么贪婪(greedy). 所以 EPSILON
就是用来控制贪婪程度的值. EPSILON
可以随着探索时间不断提升(越来越贪婪), 不过在这个例子中, 我们就固定成 EPSILON = 0.9
, 90% 的时间是选择最优策略, 10% 的时间来探索.
环境反馈 S_, R¶
做出行为后, 环境也要给我们的行为一个反馈, 反馈出下个 state (S_) 和 在上个 state (S) 做出 action (A) 所得到的 reward (R). 这里定义的规则就是, 只有当 o
移动到了 T
, 探索者才会得到唯一的一个奖励, 奖励值 R=1, 其他情况都没有奖励.
环境更新¶
接下来就是环境的更新了, 不用细看.
强化学习主循环¶
最重要的地方就在这里. 你定义的 RL 方法都在这里体现. 在之后的教程中, 我们会更加详细得讲解 RL 中的各种方法, 下面的内容, 大家大概看看就行, 这节内容不用仔细研究.
写好所有的评估和更新准则后, 我们就能开始训练了, 把探索者丢到环境中, 让它自己去玩吧.
如果想一次性看到全部代码, 请去我的 Github