深度学习-antoencoder

ref:https://blog.csdn.net/qq_39521554/article/details/80697882

https://blog.csdn.net/qq_27825451/article/details/84968890

无监督,用于数据的降维和特征的抽提,可用于训练阶段开始前,确定权重矩阵的初始值。

1 生成模型

概率统计层面: 能给在给定某一些隐含参数的条件下,随机生成观测数据的模型。

机器学习层面:直接对数据建模,比如根据某个变量的概率密度函数进行数据采样。在贝叶斯算法中,直接对哦连和概率分布p(x,y) 进行建模,然后利用贝叶斯公式进行求解p(y|x)。

2 自编码器的两个重要特征

(1)压缩编码的数据维度一定要比元时输入数据更少,达到降维的目的。

(2) 不管是编码器还是解码器,本质上都是神经网络,神经网络层一定要具有一定的容量,也就是不止一个神经网络层才行,why? 因为神经网络层数意味着对数据的隐含特征进行提取,如果只有一个中间的压缩编码数据层,此时我们的数据输入层与编码输出层是直接相连接的,如果我在神经元节点上不使用非线性激活函数,我们发现这会得到和PCA 类似的降维效果,所以最好是多添加几个网络层来存储输入数据之间隐含关系,存储它们的潜在特征和关联。

3 编码器的常见应用

异常检测,数据去噪,数据降维,图像修复,信息检索

4 自编码器的缺点

以手写数字为例

当我们对解码器输入一个训练集中从未出现的编码时候,得到的重构输出可能是一个完全的乱码或噪声,也就是说与手写数字数据毫无关系,很显然这并不是我们所希望的。我们希望的是生成模型能够对任意的输入编码产生有相关意义的数据,这就是后面变分自编码器VAE所要做的事情。

5 相关论文:

hinton 于2006年在science 上发表的论文:“Reducing the Dimensionality of Data with Neural Networks

https://www.cnblogs.com/dmzhuo/p/5072808.html

笔记:

摘要:高维数据可以通过一个多层神经网络把它编码成一个低维数据,从而重建这个高维数据,其中这个神经网络的中间层神经元数是较少的,可把这个神经网络叫做自编码器,梯度下降法可用来微调这个自编码器的权重,但是只有在初始化权值较好时才能看到最优解,不然容易陷入局部最优解。本文提供了一种有效的初始化权值的算法,就是利用深度自编码网络来学习得到初始权重。这一算法比用PCA 来对数据进行降维更好更有效。

内容:

降维在分类,可视化,通信,高维数据的存储等方面都非常有促进作用。一个简单且广泛应用的方法就是PCA降维,它通过寻找数据中最大变化方向,然后把每个数据都投影到这些方法构成的坐标系中,并表示出来。本文提出了一种PCA的非线性泛化算法,该算法用一个自适应的多层自编码网络来吧高维数据编码为一个低维数据,同时用一个类似的编码网络来把这个低维数据重构为原高维数据。

首先,对这个网络的权重进行随机初始化,然后通过最小化重构项和原始数据之间的误差对权重进行训练。误差的偏导数通过后向传播得到梯度,也就是把误差偏导数先通过解码网络,再通过编码网络进行传播。整个系统叫做自编码器,具体见图1:

最优化有多层隐藏层(2-4 层)的非线性自编码器的权值比较困难,因为如果权值初始值比较大是,自编码器非常容易陷入局部最优解,如果权值初始值比较小时,前几层的梯度下降是非常小的,权值更新就非常慢,这样就增加自编码器的隐藏层数,不软就训练不出最优解。如果初始权值比较接近最优解,那么就能通过梯度下降法很快训练得到最优解,但是通过一次学习一层特征的算法来找出这样初始权值非常困难,“预训练”可以很好地解决这一问题,通过“预训练”可以得到比较接近最优解的初始权值。虽然本文中的“预训练”过程是用的二值数据,但是推广到其他真实的数据也是可以的,并且证明是有效的。

一个二值向量(如:图像)可以通过一个2层网络来重构,在RBM 中,通过对称加权连接把随机二值像素点和随机二值特征检测器联系起来,那些像素点相当于RBM的可视化单元,因为它们的状态是可见的;那些特征检测器相当于隐藏单元。可视单元和隐藏单元的联合系统(v,h)之间的能量表示为:

其中,vi和hj 分别是第i和可视化单元和第j个隐藏层单元的状态,bi和bj 是偏置项,wij 是权值。这个网络通过这个能量函数得到每个可能图像的概率。神经元的输入输出关系是sigmoid 函数,给定一张输入图像,我们可以通过调整网络的权值和偏置值使得网络对该输入图像的能量最低。权值更新公式如下:

单层的二值网络不足以模拟大量的数据集,因此一般采用多层网络,即把第一层网络的输出作为第二层网络的输入。并且每增加一个网络层的输出作为第二层网络的输入。并且每增加一个网络层,就会提高网络对输入数据重构的log 下界概率值,且上层的网络能够提取出其下层网络更高阶的特征。

当网络的预训练过程完成后,我们需要把解码和编码部分重新拿回来展开构成整个网络,然后用真实的数据作为样本标签来微调网络的参数。

对连续的数据,第一个RBM 的隐藏层仍然是二值的,但是其可视化单元是带有高斯白噪声的线性单元。如果该噪声是单元方差,隐藏单元的更新规则仍然是一样的,第i个可视化层单元的更新规则是从一个高斯噪声中抽样,这个噪声的方差是单元方差,均值是的平均值。

在实验中,每个RBM 的可视层单元都有真实的【0,1】内激活值,对于高层RBM,其可视化层单元就是前一个RBM的隐藏层单元的激活概率,但是除了最上面的RBM 外,其他的RBM的隐藏层单元都是随机的二值。最上面的一个RBM 的隐藏单元是一个随机实值状态,它是从单元方差噪声中抽样得到的,这个单位方差噪声的均值由RBM的可视单元决定。比起PCA,本算法较好地利用了 连续变量。

交叉熵误差公式如下:

其中,pi 是输入数据的重构值。

自编码器的目的是输入x尽可能复现输入x。

https://www.jianshu.com/p/4e53d3c604f6

会用到参数初始化方法 Xavier initialization 。

为什么要参数初始化?

如果深度学习模型的权重初始化得太小,那么信号将在每层间传递时逐渐缩小而难以产生作用。如果权值初始化得太大,那信号将在每层传递时逐渐放大并导致发散和失效。

Xavier 初始化器的作用,就是在初始化深度学习网络的时候让权重不大不小。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值