【深度强化学习 一】Q-Learning初识(1)(李宏毅老师学习视频笔记)

首先放视频链接:李宏毅老师深度强化学习课程——Q-Learning

Q-Learning简介

Q-Learning是一种value-based的方法,在这种方法中,不是直接学习policy,而是利用值函数评价现在行为的好坏,即AC算法中的critic。比如state value functionV^{\pi}(s),表示在当前策略\pi下,到了某一状态s,之后能获得的累计收益。

两种更新方法(MC和TD)

  • Monte-Carlo方法

让actor和环境交互,计算状态后的累计收益,需要episode结束后才能计算。现在的DRL融合了深度神经网络,所以不需要每个s都经历过,也能给出大概的V值。

  • Temporal-difference方法

这种方法不需要游戏玩到结束。只要获得某一个transition,s_{t}, a_{t}, r_{t}, s_{t+1},就可以根据公式$V^{\pi}\left(s_{t}\right)=V^{\pi}\left(s_{t+1}\right)+r_{t}$进行更新。其实就是两个state之间相差一个r_t。也就是V^{\pi}\left(s_{t}\right)-V^{\pi}\left(s_{t+1}\right)r_t的差可以作为loss。

  • MC和TD的优缺点

MC需要推演完整个episode,而且由于V^{\pi}(s)直接计算的累计收益G_a,由于随机性,不同时候得到的G_a可能会有很大差别,这样的随机变量方差很大。TD方法的随机性在于r_t,所以方差会小。但是V值本身可能不准,所以是有偏估计。

接下来放一个示例,Sutton课程里采用的,能后比较好的理解MC和TD

由状态值函数到动作值函数

state-action value function Q^\pi(s,a),表示状态s时采取动作a后的累计收益。

接下来是Q-Learning的更新原理,为什么Q值能够变大。

                               $\pi^{\prime}(s)=\arg \max _{a} Q^{\pi}(s, a)$ $\quad V^{\pi^{\prime}}(s) \geq V^{\pi}(s), for all state s

                               $V^{\pi}(s)=Q^{\pi}(s, \pi(s))$ $\leq \max _{a} Q^{\pi}(s, a)=Q^{\pi}\left(s, \pi^{\prime}(s)\right)$

                               $$\begin{array}{l} V^{\pi}(s) \leq Q^{\pi}\left(s, \pi^{\prime}(s)\right) \\ =E\left[r_{t+1}+V^{\pi}\left(s_{t+1}\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ \leq E\left[r_{t+1}+Q^{\pi}\left(s_{t+1}, \pi^{\prime}\left(s_{t+1}\right)\right) | s_{t}=s, a_{t}=\pi^{\prime}\left(s_{t}\right)\right] \\ =E\left[r_{t+1}+r_{t+2}+V^{\pi}\left(s_{t+2}\right) | \ldots\right] \\ \leq E\left[r_{t+1}+r_{t+2}+Q^{\pi}\left(s_{t+2}, \pi^{\prime}\left(s_{t+2}\right)\right) | \ldots\right] \ldots \leq V^{\pi^{\prime}}(s) \end{array}$$

感觉不需要太多关注上面的式子,只需要直观的去理解一下就好。

DRL框架设计(target network好神奇的想法)

loss的设计和之前一样,只不过targe network delay了一下,牛批。

explore 问题

  • epsilon greedy (\epsilon的概率随机,随着训练进行而递减)

                                       $$a=\left\{\begin{array}{cl} \arg \max _{a} Q(s, a), & \text { with probability } 1-\varepsilon \\ \text {random,} & \text {otherwise } \end{array}\right.$$

  • ​​​​​​​​​​​​​​Boltzmann exploration(指数后求概率)

​​​​​​​                                        $$P(a | s)=\frac{\exp \left(Q(s, a)\right)}{\sum_{a} \exp (Q(s, a))}$$

Replay buffer

简单来讲就是把过程中的transition存到replay buffer中,然后每次取出一个batch,取出的transition其实是不同policy下的。这种方法和深度学习中常见技巧比较类似。这里有一个问题,mc的方法可以用replay buffer吗?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

发布了8 篇原创文章 · 获赞 6 · 访问量 3274

猜你喜欢

转载自blog.csdn.net/greyduan/article/details/104897702
今日推荐