Reinforment Learning 学习笔记(二) Q-Learning

  Q-Learning是强化学习初期提出的一种较为简单的方法,其核心思想为对每个状态下的每一种行为进行打分,然后根据分数的高低进行选择,接着根据选择此行为后获得的实际奖赏来对打分系统进行更新。传统Q-Learning面对的是有限状态空间、有限动作空间,并且空间大小都足够简单,因此可以维护一张表格来进行存储,即存储状态-动作及相应的分数。

其运行的基本流程为:


随机初始化Q-table;

设计合适的reward;

对每一次学习 k=0:Max:

    初始化状态为s0;

    对于每一个状态(i=0:T(terminal)):

        查询Q-table选择分数最高的一项a(i)执行;

        此时状态转移为s(i+1);

         对于新状态s(i+1),其分数为        reward + gamma * maxof ( Q( s(i+1) , a(i+1) ); //即此刻获得的回报加上未来预计会获得的回报,gamma为一定的折扣因子

         //那么因为之前的打分中是没有估计到reward的,则如果产生reward而之前未能估计到,则会与之前的Q值产生较大的区别,这是更新Q表的动力来源

         于是利用这一误差就可以实现Q表的更新

     

    end

end


        从算法流程中可以看出,Q-learning的主要思路在于用行为后的“现实”纠正行为前的估计,而两者之间的最大的可能造成差异的来源则是“reward”这一人工设计的准则,因此实际上Q-learning是在干一件根据人告诉它的好坏标准来学习相应的应对策略的事情。


Q-learning作为强化学习的鼻祖之一,其开创性的地位是不容否定的,但其较为简单的设计也决定了其只适合一些简单的场合,要求状态空间极小、动作空间简单,具有以下问题:

1、对大空间(如下围棋)这样复杂的工作无法用有限的Q表来存储,同时即使每个自由度的空间有限,但有多个维度,则Q表的复杂度增长是指数形式的。

2、在线学习并且一步只学习该次的数据,学习效率较低。


针对以上问题,趁着深度学习的热潮,研究者们提出了Deep Q-Network这一结合了深度学习与强化学习的产物,可以说从一定意义上将强化学习拯救出了中看不中用的窘境。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章