强化学习教程 - 先了解几个公式

Posted Jtag特工

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了强化学习教程 - 先了解几个公式相关的知识,希望对你有一定的参考价值。

强化学习教程(1) - 先了解几个公式

对于学习强化学习的好处,大家已经了解很多了,这里就不多叙述了。
开篇有几点想提醒新入门的同学,关于强化学习的难点。

  • 首先是要做好啃一些理论和公式的准备,虽然深度强化学习可以做到像调库一样使用成熟算法,但是有扎实的理论基础对于学习前沿论文还是一个必要的选项。
  • 第二是对算力的需求要有明确的考虑。比如我们调库可以很容易实现Atari游戏的对战,但是能打败计算机是需要用GPU或其他加速的,想用CPU训练几分钟就能通关还是不现实的。
  • 第三是对于强化学习和深度学习编程框架需要有一定的了解,这样一旦遇到问题才有更多的办法将理论转化成工具。

这个小系列教程,我希望能够从理论、理论的代码实现、主要框架和工具、几个实际问题的例子以及强化学习的历史与流派五个方面来说明。

第一步我们先尝试理解透理论,我们先从很多同学最不喜欢看的公式开始说起,这一关突破后,再结合代码看就更容易理解了。

状态、动作和奖励

强化学习的主体是一个Agent,它可以获取环境的状态S,通过动作A来对环境产生影响,最后从环境获取奖励R。强化学习就是一个通过寻找最佳的动作序列来获取最大的奖励的过程。

假设最初的状态为S0,此时实施动作A0,获取奖励R1,之后的状态变成S1,再施以动作A1,获取奖励R2,状态变成S2,以此类推。

我们考虑状态S的概率分布St和奖励R的概率分布Rt。

在后面的符号中,我们使用 P r ( S t = s ) Pr(S_t=s) Pr(St=s)来表示 S t = s S_t=s St=s时的概率。

概率公式

我们定义一个函数 p ( s ′ , r , s , a ) p(s',r,s,a) p(s,r,s,a),其值为 P r ( S t = s ′ , R t = r ∣ S t − 1 = s , A t − 1 = a ) Pr(S_t=s',R_t=r|S_{t-1}=s,A_{t-1}=a) Pr(St=s,Rt=rSt1=s,At1=a)
为了让前后式看起来更一致些,我们把 p ( s ′ , r , s , a ) p(s',r,s,a) p(s,r,s,a)写作 p ( s ′ , r ∣ s , a ) p(s',r | s,a) p(s,rs,a)

式子写成: p ( s ′ , r ∣ s , a ) = P r ( S t = s ′ , R t = r ∣ S t − 1 = s , A t − 1 = a ) p(s',r | s,a)=Pr(S_t=s',R_t=r|S_{t-1}=s,A_{t-1}=a) p(s,rs,a)=Pr(St=s,Rt=rSt1=s,At1=a)

虽然写法变了,但是对于函数功能没有任何影响。

如果不考虑奖励,我们可以定义一个三元函数,这个函数描述状态转移的概率:
p ( s ′ , s , a ) = P r ( S t = s ′ ∣ S t − 1 = s , A t − 1 = a ) p(s',s,a)=Pr(S_t=s'|S_{t-1}=s,A_{t-1}=a) p(s,s,a)=Pr(St=sSt1=s,At1=a)
或者写作: p ( s ′ ∣ s , a ) = P r ( S t = s ′ ∣ S t − 1 = s , A t − 1 = a ) p(s'|s,a)=Pr(S_t=s'|S_{t-1}=s,A_{t-1}=a) p(ss,a)=Pr(St=sSt1=s,At1=a)

这两个函数的关系也容易理解,3元函数等于4元函数在所有奖励情况下的汇总加和:
p ( s ′ , s , a ) = ∑ r ∈ R p ( s ′ , r , s , a ) p(s',s,a)=\\sum_{r\\in R} p(s',r,s,a) p(s,s,a)=rRp(s,r,s,a)
或者写作:
p ( s ′ ∣ s , a ) = ∑ r ∈ R p ( s ′ , r ∣ s , a ) p(s' | s,a)=\\sum_{r\\in R} p(s',r | s,a) p(ss,a)=rRp(s,rs,a)

期望公式

我们再将函数简化成二元的,只有状态s和动作a,这时我们定义这个函数r(s,a)表示对于奖励的数学期望。注意啦,这是个期望函数,所以名字从p变成了r。

我们使用符号 E [ X ] \\mathbb{E}[X] E[X]表示随机变量X的数学期望,它的定义为 E [ X ] = ∑ x p ( x ) x \\mathbb{E}[X]=\\sum_x p(x)x E[X]=xp(x)x。也就是等于每一项的值乘以它出现的概率。

我们举个例子,比如掷骰子,点数为1,2,3,4,5,6,出现的概率分别为1/6。
则数学期望为 1 × 1 6 + 2 × 1 6 + 3 × 1 6 + 4 × 1 6 + 5 × 1 6 + 6 × 1 6 = 3.5 1 \\times \\frac{1}{6}+2 \\times \\frac{1}{6}+3 \\times \\frac{1}{6}+4 \\times \\frac{1}{6}+5 \\times \\frac{1}{6}+6 \\times \\frac{1}{6}= 3.5 1×61+2×61+3×61+4×61+5×61+6×61=3.5

则定义 r ( s , a ) = E [ R t ∣ S t − 1 = s , A t − 1 = a ] r(s,a)=\\mathbb E[R_t| S_{t-1}=s, A_{t-1}=a] r(s,a)=E[RtSt1=s,At1=a]
我们将其按定义展开,得到:
r ( s , a ) = E [ R t ∣ S t − 1 = s , A t − 1 = a ] = ∑ r ∈ R r × ∑ s ′ ∈ S p ( s ′ , r ∣ s , a ) r(s,a)=\\mathbb E[R_t| S_{t-1}=s, A_{t-1}=a]=\\sum_{r\\in R} r \\times \\sum_{s'\\in S} p(s',r | s,a) r(s,a)=E[R以上是关于强化学习教程 - 先了解几个公式的主要内容,如果未能解决你的问题,请参考以下文章

强化学习教程 - 先了解几个公式

强化学习——代理如何知道选择哪个动作?

深度强化学习与深度Q网络

赠书 | 干货!用 Python 动手学强化学习

强化学习70年演进:从精确动态规划到基于模型

机器学习工程师 - Udacity 强化学习 Part Three