Q_learning from reinforcement learning
在学习Q_learning算法之前,我们需要了解一下,一个叫做时间差分学习的(temporal difference learning)思想。
它的迭代公式是:
其中是每个episode结束后获得的实际累积回报,α是学习率,这个式子的直观的理解就是用0实际累积回报作为状态值函数V()的估计值。具体做法是对每个episode,考察实验中的实际累积回报和当前估计V()的偏差值,并用该偏差值乘以学习率来更新得到V()的新估值。
Q_learning算法也是基于这种思想做出的设计。
Q_learning的算法流程如下:
初始化S
初始化Q(s,a),重复下面的步骤:(对于每一个episode)
选择一个A 从S 中 ,使用一个行为策略来自于Q
采取行动A,观察R,S’
直到S是达到了指定的状态。
思考:
这里的S 是状态(环境),A是策略,R 是奖励,是学习率,是衰减率。目标是达到预定的目标terminal。那么在生成任务中,S就是我们的语言环境,就是从问句开始去找我们的答句,对话中的问句就是我们的初始状态,那答句就是我们的目标,那么我们的agent 就可以通过一步一步的去采取行动,一直到找到跟我们的答句更相似的位置为止。
如下图示:
箭头表示我们的action, reward根据我们的答句与问句之间的距离去评估,夹角大了,我们给予一个惩罚,如果夹角小了,我们给予一个奖励。