首页 > Web开发 > 详细

自编码器 Autoencoder

时间:2019-08-27 23:59:52      阅读:125      评论:0      收藏:0      [点我收藏+]
自监督模型
训练一个ae的encoder,就能把code和object对应起来,获得code。给定一个code,decoder就能输出对应的object。
技术分享图片
Autoencoder存在什么问题?
  因为作为训练数据的object是有限的,导致decoder实际上只能把训练过程中见过的code给还原成对应的object。如果随机给一些code,它不会生成训练集中没有见过的object。
 
如何解决?
 
VAE:训练decoder的时候给code加点噪声,就能让decoder在生成的时候可以克服一些带噪声的code,即使没有在训练中见过,也能生成比较合理的object(直觉上的理解,训练的时候希望一定范围内的code都能重构输入)。
 
技术分享图片
 
 
技术分享图片

因此在VAE中,encoder输出的不直接是code,而是一组m和一组σ,而向量c才是真正的加了噪声的code,其中ci = exp(σi) x e+ mi。训练过程中的优化目标也不仅是重构误差,还有一项 Σ (exp(σi) - (1+σi) + (mi)2),要强迫加噪声的方差不能太小(因为是模型学习的参数,如果不做限制,为了能重构的更好会越更新σ越使得噪声方差接近0;而实际上我们希望σ接近0(真正的方差接近1),所以最小化exp(σi) - (1+σi),mi平方项可以理解为L2 norm正则)。

技术分享图片 

 
 
理论上分析 VAE
对 p(x) 的建模通过 p(x | z) * p(z) 来实现,很容易就想到GMM。如何从GMM 中采样数据?先根据多项式分布p(m)决定要从哪个高斯分布中采样,然后就根据对应的那组mean和variance决定的高斯pdf来采样x。
 
技术分享图片

而VAE实际上就是GMM的 distributed representation 的版本,先从一个高斯分布中采样出一个向量z,再根据z来决定mean和variance。那由于 z 是连续的,所以有无穷多个z,就有无穷多个高斯的mean和variance(在GMM中有几个高斯就是固定的)。在z的空间中,每个点都可能被sample到,而每一个点都对应到一个高斯分布。那么如何得到 z 和高斯的mean、variance的对应关系呢?干脆就用一个NN。

技术分享图片

所以在整个 VAE 模型中,关键不是使用 p(z)(先验分布)是正态分布的假设(z服从别的分布也可以),而是假设 p(z | x)(后验分布)是正态分布。

 

自编码器 Autoencoder

原文:https://www.cnblogs.com/chaojunwang-ml/p/11421454.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!