TensorFlow实现自编码器

1、什么是自编码器

    自编码器(Autoencoder,AE),是一种利用反向传播算法使得输出值等于输入值的神经网络,自动编码器内部有一个隐含层h,可以产生编码来表示输入。它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。自编码器由两部分组成:
    编码器:这部分能将输入压缩成潜在空间表征,可以用编码函数h=f(x)表示。
    解码器:这部分能重构来自潜在空间表征的输入,可以用解码函数r=g(h)表示。

    因此,整个自编码器可以用函数g(f(x)) = r来描述,其中输出r与原始输入x相近。为何要用输入来重构输出?如果自编码器的唯一目的是让输出值等于输入值,那这个算法将毫无用处。事实上,我们希望通过训练输出值等于输入值的自编码器,让潜在表征将具有价值属性。这可通过在重构任务中构建约束来实现。

    从自编码器获得有用特征的一种方法是,限制隐层h的维度使其小于输入x,这种情况下称作有损自编码器。通过训练有损表征,使得自编码器能学习到数据中最重要的特征。如果自编码器的容量过大,它无需提取关于数据分布的任何有用信息,即可较好地执行重构任务。如果潜在表征h的维度与输入相同,或是潜在表征h的维度大于输入,上述结果也会出现。在这些情况下,即使只使用线性编码器和线性解码器,也能很好地利用输入重构输出,且无需了解有关数据分布的任何有用信息。在理想情况下,根据要分配的数据复杂度,来准确选择编码器和解码器的编码维数和容量,就可以成功地训练出任何所需的自编码器结构。


这个图就是稀疏自编码器的样例,Layer L1是输入层,Layer L3是输出层,Layer L2是隐藏层h。

2、自编码器用来干什么?

    目前,自编码器的应用主要有两个方面,第一是数据去噪,第二是为进行可视化而降维。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值