谈起重参数化技巧,不得不提变分自编码器(VAE);在VAE中,我们知道需要对编码器的输出、进行采样,从而可以将采样输入到编码器网络,能够得到输入样本的重构,以这种方式对模型进行训练。而VAE并没有这么做,而是采取了另一种做法:从高斯分布中采样,然后和训练样本训练得到的和,做运算的结果输入到解码器网络(点乘符号表示每个元素位置上的相乘),便能得到我们样本x的重构,这让我很困惑很久。下面开始介绍重参数化技巧,以两种情况:
-
概率分布:
直接从边缘概率分布中采样,即给定一个随机变量y,并且,这里我们用表示这组参数,即:。此时我们需要根据y所服从的高斯分布进行采样y,我们可以有根据y概率分布采样、Rejection Sampling 拒绝采样、MCMC采样、高维情况的Gibbs 采样等方法采样,这几种方法都是对y进行采样,而这里我们直接使用重参数化技巧不直接对y进行采样,后面将介绍为什么要这样做,具体做法:
先从中采样得到.
根据表达式,以这种方式等价从采样,用表该采样样本.
没错,过程就是这么简单,这里我们把采样得到的看成关于的函数关系,即:,下面我们用神经网络来表示该函数映射,因为我们知道神经网络能够逼近任何复杂的函数,看成神经网络的参数。
L(y)作为关于y的损失函数,也即目标函数,那么训练过程中关于参数梯度的计算如下式:
L是我们自定义的损失函数,关于y的偏导便是已知项,而是前面给定的,也相当于已知。接下来介绍为什么这样做:
我们需要对y的采样转换成从采样,可以解决模型训练过程梯度无法无法回传的问题,假设我们直接从采样,采样的结果和参数的映射关系如何显示表达出来,如果无法表示出来,又谈何求梯度。在VAE中,该采样结果还要进解码器网络得到我们样本x的重构,关于建立的损失函数在BP算法训练过程中,梯度从后往前回传,采样的结果y关于的显示映射不知道,梯度便无法拿到,也即无法继续向前回传。
-
条件概率分布:
直接从后验概率分布中采样与前面不同的是,这里y是x给定下的条件下概率,这里我们同样用表示这组参数,即:。此时我们需要根据y的后验概率采样y:
具体做法:
先从中采样得到.
根据表达式,我们知道都是和x相关,即:,于是前面表达式写成,以这种方式等价从y的后验中采样,用表该采样样本.。
上述过程,在VAE中的表现形式:
接下来,我们来看看训练过程,采样的结果y关于参数的偏微分;这里我们假设损失函数定义为均方误差的形式,
故:
个人感觉,对的采样转换成从采样,将采样的随机性转移到从标准正态分布中采样,是关于样本x训练得到对应隐空间的分布特征,以这种表达式采样的y,可以满足都在均值附近,因此该采样通过解码器生成的新样本和原样本比较像。
在学习过程中,将自己的收获记录下来,以便日后翻阅、查缺补漏。
今天的文章VAE中重参数化技巧分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/9063.html