Temporal Difference Variational Auto-Encoder

Deepmind  投的ICLR2019的文章。之前没有认真推导过公式,所以看起来比较费劲。用了几天,看了看两套代码,推了推公式,快过年了,每天放在上面的时间也不多,用了四天才弄了个半懂,下面我展开讲一下,希望我之后看我的自己的笔记可以看懂。(之前FudalNet我就忘了,回来看到自己文章,都不知道谁写的)

首先上一个基础知识,求高斯分布的KL散度:(之前一直使用和标准正态的KL,不太了解泛化的求解公式)

另外一个就是知道高斯分布中sample出来的结果,如何求解log prob:

#LOG2PI = np.log(2.0 * np.pi)
def gaussian_log_prob(mu, logvar, x):
    '''Batched log probability log p(x) computation.'''
    logprob = -0.5 * (LOG2PI + logvar + ((x - mu)**2 / logvar.exp()))
    return logprob.sum(dim=-1)

好了,基础知识准备好了,开始:

文章动机:

智能体agent在部分可观测的世界上进行行动的时候,需要根据以往的step获得的信息寻找一个对未来世界信息的不确定性的表示方法,以获得更好的策略。为了满足上述要求,模型应该具备一下三点要求:

(1)对未来世界信息的表示需要是高维度的,并在高维度上进行预测,不应该在org state space 上。

(2)需要是一个belief state ,通过以往step的信息获得一个后验的state表示,这个表示应该能够包含对未来世界信息的预测,来获得最优的表示

(3)具备时间抽象能力,即可以跳跃预测,不用为了预测一个稍微靠后的step,而将之前的step都预测一个遍。

因此本文提出了一个结合了时序差分法的变分自编码器,该编码器的提出主要是为了解决当前时序模型的存在的问题

 

自回归模型,如RNN,存在以下问题:

      (1) 只能在原始空间预测(比如输入是1,2,3,4那么预测的结果也只能是数字,不能是a,b,c,不存在高维表示,因此不能再高维预测,尽管RNN可以高维表示,但是却不能进行预测,比如output1预测output2,相互之间没有必然关联)

      (2) 是step model,即每次向后预测一步,不能跳步,test的时候,如果想要预测多步之后的,需要把新预测出的结果,重新feedback到网络中。(如果可以在高维空间表示,偏差会小一些)

        VAE AE等编码器state space model,可以将obs space映射到high level space上,通过encoder(后验)以及decoder(先验)来实现。

因此我们将VAE与自回归模型结合起来

state sequence  , obs sequence ,因此联合概率可以写为:,给定obs获得z表示的后验分布为

其中这个z就是三点要求中的第一条的high level state,其中把x1到xT的过往状态分别映射到高维b,可以理解为

RNN的output,便是上面要求的第二点 belief state

需要根据前面小于t的state来进行下一步的预测,因此左边的公式经过推导得到右边的公式

下面是我手推的过程:

这里面有一个小问题就是换到kl的地方有一个小于等于(我写的小于),这个地方我没太明白,希望知道的指点一下。

最后得到上面式子的结构

最后经过下面的过程:得到最终结果

 

本篇文章的实验部分:(我只抽取两个我比较感兴趣的)

 

这个的缺点是没有和别的方法做对比。比如直接和LSTM对比

 

第二个是在较为复杂的世界里面,通过sample出数据(mu  sigma 高斯分布的sample),decode的左边图片可以看到结果一样,但是经过转换之后Transition得到的新的z进行decode,就可以看到不同的对未来的预测。

 

我们对其中一个进行更加深层次的探索,可以看到,他最终可以预测未来很多种情况。

以上。

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值