自编码器

自编码器

自编码器是一种数据压缩算法。数据压缩与解压缩函数是数据相关的,即只能压缩与训练数据类似的数据;压缩有损,即解压缩的输出与原始输入相比是退化的;压缩方式从数据样本中自动学习的,即很容易对指定类的输入训练出一种特定编码器。自编码器的损失函数可以用来衡量由于压缩而损失掉的信息。自编码器是一种自监督学习算法,其标签产生自输入数据。自编码器用于数据去噪和可视化降维,配合适当的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。
自编码器包括一个由函数h=f(x)表示的编码器和一个生成重构的解码器r=g(h)。不应该将自编码器设计成输入到输出完全相等g(f(x))=x,而是应该向自编码器强加一些约束,使它只能近似地复制与训练数据相似的输入。这些约束强制模型考虑输入数据相对重要的部分被优先复制,从而可以学习到数据的有用特性。欠完备自编码器是从自编码器获得的有用特征的维度h比x小,强制自编码器捕捉训练数据中最显著的特征,学习过程可以简单描述为最小化一个损失函数L(x,g(f(x))),惩罚g(f(x))与x的差异。去噪自编码器(DAE, denoising auto encoder)最小化L(x,g(f(x’))),x’表被噪声损坏的x的副本,去噪自编码器不是简单地复制输入,需要将输入中的噪声撤销。

变分自编码器

变分自编码器可用于生成数据,从正态分布中生成类似但不同于训练数据的新样本。编码器生成两个向量m和σ,从正态分布中生成一个向量e,执行操作c=exp(σ)×e+m,将计算得到的c输入解码器中得到输出。m对应编码向量;σ从输入中生成表示噪声的容忍度,e从正态分布中抽烟得到,两者之积表示影响编码的数值区间的噪声。如果仅考虑使输入输出越接近越好的优化模型,训练得到的容忍度为0时模型理论最佳,即为自编码器。因此对计算过程做限制:minimize(∑(exp(σ)-(1+σ)+pow(m,2)))。自编码器寻找的是单值映射关系x->z=e(x)->d(z),变分自编码器寻找的是分布的映射关系Dx->Dz,x->p(z|x)->z~p(z|x)->d(z),对影响输出的每个隐形因素产生一个置信值的分布区间并采样得到最终的输出,通过调节隐形因素的参数获得与输入不同的输出。
如果自编码器的隐藏空间被很好地正则化,我们可以从隐藏空间随机抽样,再用解码器生成新内容,这时解码器相当于生成对抗网络中的生成器。但是隐藏空间的正则化取决于初始空间的数据分布、隐藏空间的维度和编码器的结构,所以很难让编码器聪明地兼容生成过程产生隐藏空间。如果使自编码器的重建误差完全降为0,他会对训练数据产生严重的过拟合,从而使隐藏空间的某些特征点经过解码器产生无意义的内容。因为自编码器被训练使输入与输入之间的损失越小越好,而不在意隐藏空间的组织结构,因此被编码数据的结构不会被隐藏空间学习到,也没有任何约束条件使隐藏空间学习这些结构,所以如果不在意结构的定义,在训练过程中网络就很容易出现过拟合来实现最初设定的目标。
变分自编码器将训练过程规则化来避免出现过拟合,保证隐藏空间在进行生成过程中有很好的性能。他不再将输入映射为一个定值,而是将输入编码为隐藏空间的一个分布,从分布中抽样点进行解码。因此损失函数loss=pow(||x-d(z)||,2)-KL[N(m,σ),N(0,I)]包括重建项和正则项。生成过程的正则化有两个性质:连续性使隐藏空间中的两个相近的点在解码后不会产生两个完全不同的内容,完整性使得对于一个选定的分布,隐藏空间的抽样点在解码后应当生成有意义的内容。为此我们要正则化分布的协方差矩阵和均值,在实际操作过程中我们使该分布趋近于一个标准正态分布来达到这一目的,因此协方差矩阵要趋近于一个单位阵避免是一个精确的分布,均值趋近于0避免编码的分布彼此相差太远。
vae实现

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值