auto-encoder 型深度神经网络

转载至:http://blog.csdn.net/changyuanchn/article/details/15681853

1)autoencoder

autoencoder是一种无监督的学习算法,他利用反向传播算法,让目标值等于输入值。如图所示:


Autoencoder尝试学习一个 的函数。也就是说autoencoder尝试逼近一个恒等函数,使得输出接近于输入 。当然为了使这个函数有意义,需要加入一些限制条件(比如说限制隐藏神经元的数目),就可以发现一些有意义的结构。Autoencoder可以学习到数据的一些压缩表示。例如如果输入数据为100维,隐藏层为50个,那么就需要从这50维的数据中重构出100维的输出,使这个输出接近于100维的输入。因此这个隐藏层的50维的数据就必然会包含着输入数据的一些相关性。所以说autoencoder就是为了学习到输入数据的相关性表示的一种方法。

上面提到的对autoencoder可以加入一些“隐藏神经元的数目”的限制,来学习到输入数据的一些有意义的表示。其实也可以引入稀疏性的限制,而这才是autoencoder中最常用到的限制。稀疏性限制是指如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里我们假设的神经元的激活函数是sigmoid函数。另 表示隐藏神经元的激活度,那么定义为隐藏神经元的平均激活度。另进而引入稀疏性限制。可以另等接近于0的较小值。要实现这个限制,我们需要给目标函数加入一个惩罚因子(其实是一个相对熵

因此,总的代价函数为

因此更新项为


2)反向传播算法回顾:

假设对于一个样本个数为m的样本集,对于单个样例,其代价函数为。那么对于样本集整体的代价函数为。第一项为均方差项,第二项是Regularization,是为了防止过拟合而产生的。 用于控制前后两项的相对重要性。

反向传播算法的目的是针对 来求取函数的最小值。首先我们需要将每一个参数初始化为一个很小的接近于0的随机值,然后利用梯度下降法的迭代更新权重。


其中 为学习效率,这也是一个很重要的参数。这里面最大的问题就变成了求取偏导数的问题。

反向传播算法的细节:


3)从self-learning到深度网络

有了autoencoder的基本概念,我们可以利用autoencoder来构建深度网络,近些年的一些列研究表明构建深度网络对于解决很多的计算机视觉问题具有重要意义,并能比现有的一些常规方法取得更好的效果。

 Self-learning

Self-learning是指可以利用autoecoder从未标注的数据中自我的学习特征。具体说来,给定一组未标注的数据 ,训练sparse autoencoder,即:


利用训练得到的参数 ,给定一个新的样本x,计算激活量a,作为提取出的特征。相对比于原始的样本数据x,激活量a可能会对数据有更好的表示。


4)深度网络:

我们可以把self-learning扩展到深度网络,即拥有多个隐藏层的神经网络。

对于这样的深度网络,利用反向传播算法很容易收敛到局部最小值,从而无法得到好的分类效果。对此,我们采用逐层贪婪算法来训练深度网络。即先利用原始输入来训练网络的第一层,得到其参数  ;然后网络第一层将原始输入转化成为由隐藏单元激活值组成的向量(假设该向量为A),接着把A作为第二层的输入,继续训练得到第二层的参数 ;最后,对后面的各层同样采用的策略,即将前层的输出作为下一层输入的方式依次训练。对于上述训练方式,在训练每一层参数的时候,会固定其它各层参数保持不变。所以,如果想得到更好的结果,在上述训练过程完成之后,可以通过反向传播算法同时调整所有层的参数以改善结果,这个过程一般被称作“fine-tuning”。下面的组图揭示了这一过程。







引用: Auto-encoder是一种深度学习模,用于将输入数据编码为低维表示,并尽可能地重构原始数据作为输出。在降维方面,PCA会将不同类别的数据混合在一起,而auto-encoder则可以将它们分开。除了降维之外,auto-encoder还有其他用途,比如图片搜索。 引用: 训练一个auto-encoder的过程通常会先固定一些权重参数,然后逐层训练多个自编码器,每个自编码器的输入和输出维度逐渐逼近目标维度。最后,可以使用反向传播来微调网络参数。现在也可以不进行预训练,直接训练auto-encoder。此外,auto-encoder还可以与卷积神经网络(CNN)一起使用。 引用: 特征区分技术是指在auto-encoder中,通过编码器获取的Embedding向量中,可以区分出不同输入数据的特征信息。比如,对于语音输入,可以分别提取出语音内容和说话者的特征。这就是Feature Disentangle的目标。 根据李宏毅老师的讲解,auto-encoder是一种用于降维、重构和特征提取的深度学习模。它可以将输入数据编码为低维表示,并尽可能地重构原始数据作为输出。除了降维之外,auto-encoder还可以用于图片搜索等任务。训练auto-encoder时,可以使用预训练和微调的方法,也可以直接进行训练。此外,auto-encoder还可以与卷积神经网络(CNN)结合使用。特征区分技术可以用于auto-encoder中,用于提取不同输入数据的特征信息。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值