最近读论文一直没怎么写博客,以前读论文注重结论,现在转向了过程。
这篇论文,是看了一篇18年openai的论文里面的reference。17年的,比较新。
这篇论文主要涉及了一个内在R,用于在sparse state下更好的去和环境交互。
文中所有的P都是转移。
首先给出了优化函数:
也就是想最大化转移函数,f是正则函数。
L是在文章中定义为根据policy在有结束的情况下的e-reward,也就是正常的外在reward。
P是真实情况下的转移(这个是我们不知道),后面是我们要求的。
这里因为有了内在函数,所以在这里加上这个内在函数。这里主要使用了KL距离,来衡量每一个状态的新奇程度。
如果一个状态经常见到,那么这个状态在两个P中的距离就会很小,也就是内在R会很小。
那么我们就可以把reward的更新公式写成如下形式。(把期望展开)
但是问题来了,这里的P是未知的,我们可以通过自己定义的nn来求。
这里我们就回到了(2),想办法改变这个结构。
于是:
按照我们的理解,KL距离与交叉熵都是衡量两个分布距离的衡量方式,这里多一嘴,交叉熵多数情况下会用来进行loss函数优化
其实KL也完全可以,只不过一般情况下,在有监督的学习当中,H(p)这一个自信息,由于是有标签的,所以是恒定不变的,因此多数情况下不用KL,减少计算量。
然后我们再写出r的更新公式:
同时,还有另一种改写(2)的方法。那就是我们再定义一个网络 从而得到。
这里KL 大于等于0,因此最小化KL,也就是最大化后边的E项。
随后我们给出了r的更新公式:
这里我们使用的,是
经过k步更新得到的。也就避免了再训练一个网络,两个网络只相差k步的update。
但是文章中发现第一种方法存在很大的弊端,(这里我们给出原文,如果谁能看的明白问题的原因的话,欢迎评论)
我的理解是,当时,无法保证i-reward为0,因为很明显,你再计算的时候丢掉了一个p的自信息。
于是我们选择了第二种方法。
然后文章推到了一下贝叶斯surprise,这里的suprise主要是先验概率与后验概率的KL距离来衡量的。
下面我先给出贝叶斯surprise的framework
以上便是。
是先验分布。ht代表动作与状态历史。
是模型的后验分布。
于是我们可以推出:(关于这个推到,我有一点疑问)
因此我们带入framework中,我们可以得到,贝叶斯surprise就是:
有没有发现和(8)很像,这里只是借用了一下贝叶斯surprise,来证明(8)这样直接用网络k步差距来替代的可行性。
以下到了实现部分:
这里我们在(1)中使用L2正则化。
于是update公式变为了:
这里还对上面一个系数进行了规定;在每个回合中都调整一下这个系数。
整体代码如下:
其中还有一些很细节的东西没有讲到,除了文中我提到的我不是很确定的地方之外,其他部分我都通过公式推导证明了一下。
以上,欢迎指正。