Q-learning 思维决策
作者: 莫烦 发布于: 2017-01-09
编辑: 学习资料:
接着上节内容, 我们来实现 RL_brain
的 QLearningTable
部分, 这也是 RL 的大脑部分, 负责决策和思考.
代码主结构¶
与上回不一样的地方是, 我们将要以一个 class 形式定义 Q learning, 并把这种 tabular q learning 方法叫做 QLearningTable
.
预设值¶
初始的参数意义不会在这里提及了, 请参考这个快速了解通道 机器学习系列-Q learning
决定行为¶
这里是定义如何根据所在的 state, 或者是在这个 state 上的 观测值 (observation) 来决策.
学习¶
同上一个简单的 q learning 例子一样, 我们根据是否是 terminal
state (回合终止符) 来判断应该如何更行 q_table
. 更新的方式是不是很熟悉呢:
update = self.lr * (q_target - q_predict)
这可以理解成神经网络中的更新方式, 学习率 * (真实值 - 预测值). 将判断误差传递回去, 有着和神经网络更新的异曲同工之处.
检测 state 是否存在¶
这个功能就是检测 q_table
中有没有当前 state 的步骤了, 如果还没有当前 state, 那我我们就插入一组全 0 数据, 当做这个 state 的所有 action 初始 values.
如果想一次性看到全部代码, 请去我的 Github