首先放视频链接:李宏毅老师深度强化学习课程——Q-Learning
Q-Learning简介
Q-Learning是一种value-based的方法,在这种方法中,不是直接学习policy,而是利用值函数评价现在行为的好坏,即AC算法中的critic。比如state value function,表示在当前策略下,到了某一状态s,之后能获得的累计收益。
两种更新方法(MC和TD)
- Monte-Carlo方法
让actor和环境交互,计算状态后的累计收益,需要episode结束后才能计算。现在的DRL融合了深度神经网络,所以不需要每个s都经历过,也能给出大概的V值。
- Temporal-difference方法
这种方法不需要游戏玩到结束。只要获得某一个transition,,就可以根据公式进行更新。其实就是两个state之间相差一个。也就是与的差可以作为loss。
-
MC和TD的优缺点
MC需要推演完整个episode,而且由于直接计算的累计收益,由于随机性,不同时候得到的可能会有很大差别,这样的随机变量方差很大。TD方法的随机性在于,所以方差会小。但是V值本身可能不准,所以是有偏估计。
接下来放一个示例,Sutton课程里采用的,能后比较好的理解MC和TD
由状态值函数到动作值函数
state-action value function ,表示状态s时采取动作a后的累计收益。
接下来是Q-Learning的更新原理,为什么Q值能够变大。
for all state s
感觉不需要太多关注上面的式子,只需要直观的去理解一下就好。
DRL框架设计(target network好神奇的想法)
loss的设计和之前一样,只不过targe network delay了一下,牛批。
explore 问题
-
epsilon greedy (的概率随机,随着训练进行而递减)
- Boltzmann exploration(指数后求概率)
Replay buffer
简单来讲就是把过程中的transition存到replay buffer中,然后每次取出一个batch,取出的transition其实是不同policy下的。这种方法和深度学习中常见技巧比较类似。这里有一个问题,mc的方法可以用replay buffer吗?