近日看一本关于Reinforcement Learning的入门书《Deep Reinforcement Learning Hands On》,甚有收获。该书由PacktPublishing在2018年出版,它不仅介绍了RL的基础理论,而且带着读者一步一步由浅入深,用Pytorch实现一个个案例,全部做一次后,感觉不论是对RL的理解,还是Pytorch的应用都上了一个台阶。
《A Distributional Perspective on Reinforcement Learning》是《Hands On》的第七章引用的例子,在看书时,觉得理解得还不够深入,于是找来原文读了几天,以下是我对它的一些理解。
《A Distributional Perspective》的理解可以分为两个层次:
1、实现原理的理解。
2、数学推导的理解。
数学推导的理解较复杂,论文在附录中用了大量篇幅来论证,而实现的理解则较为简单,本文就从简单的这部分入手。
本文提纲如下:
一、Q-Learning下的Bellman方程
二、分布式Bellman方程
三、Pytorch代码实现分析
一、Q-Learning下的Bellman方程
Bellman方程是描述 agent 在环境状态(enviroment state) x x x 下,采取行为(action) a a a,所获得的未来总收益(rewards)的折现,它可以表达成为:
Q ( x , a ) = E R ( x , a ) + γ E Q ( X ′ , A ′ ) ( 1 ) Q(x,a)=\mathbb E R(x,a) + \gamma \mathbb E Q(X',A') \qquad(1) Q(x,a)=ER(x,a)+γEQ(X′,A′)(1)
Q ( x , a ) Q(x,a) Q(x,a) 表示状态 x x x 下,行动 a a a 的未来总收益折现——Q值, R ( x , a ) R(x,a) R(x,a) 是在当前回报, γ \gamma γ 是折现率(discount rate), Q ( X ′ , A ′ ) Q(X',A') Q(X′,A′) 是下一状态( X ′ X' X′)某一行动( A ′ A' A′)的Q值。因为 R ( x , a ) R(x,a) R(x,a) 和 Q ( X ′ , A ′ ) Q(X',A') Q(X′,A′) 都是随机量,因而(1)式对它们求期望( E \mathbb E E)。(1)式最重要的地方是,它给出了一个通过迭代过程,可以求出Q值的方法
。
我们将视野放大一些,不论监督学习,还是增强学习,它们最终都是要得到一个收敛的结果,监督学习是以一个target函数为目标,进行收敛,即:
lim n → ∞ f n ( x ) = f ( x ) \lim_{n\to \infty} f_n(x)=f(x) n→∞limfn