《越难懂的东西是不是越有动力搞懂?自编码器实现原理.docx》由会员分享,可在线阅读,更多相关《越难懂的东西是不是越有动力搞懂?自编码器实现原理.docx(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、越难懂的东西是不是越有动力搞懂?自编码器实现原理越难懂的东西是不是越有动力搞懂?自编码器实现原理导语:自编码器,就是一个程序,目的是让它的输出值等于输入值trytocopyitsinputtoitsoutput,但是要经过函数变化生成一个中间值,使这个中间值不等于输入值。 ,就是一个程序,目的是让它的输出值等于输入值trytocopyitsinputtoitsoutput,但是要经过函数变化生成一个中间值,使这个中间值不等于输入值。例如xyz,x为输入值,y为经过函数变换后的一个中间值,z是y经过变换后的一个输出值,自编码器的目的是为了让z等于x,同时y不等于x。这样的一个变换中,y就承载了x
2、的全部信息,是极其有意义的。详细有如何的意义?进步数据分类效率! 在深化解析实现原理之前,首先要明白一个前提,我们利用的是人工神经网络。那什么是神经网络呢?简单来讲,神经网络就是在对原始信号逐层地做非线性变换,如下列图所示。 神经网络往往用于分类,其目的是去逼近从输入层x到输出层y的变换函数,h为多层的隐藏层。因此,我们会定义一个目的函数来衡量当前的输出和真实结果的差异,利用该函数去逐步调整如梯度下降系统的参数,以使得整个网络尽可能去拟合训练数据。假如有正那么约束的话,还同时要求模型尽量简单防止过拟合。 实现原理 假如给定一个神经网络,我们假设其输出与输入是一样的,然后训练调整其参数,得到每一
3、层中的权重。自然地,我们就得到了输入的几种不同表示每一层代表一种表示,这些表示就是特征。就是一种尽可能复现输入信号的神经网络。为了实现这种复现,自动编码器就必须捕捉可以代表输入数据的最重要的因素,找到可以代表原信息的主要成分。 1给定无标签数据,用无监视学习去学习特征: 如上图,我们将input输入一个encoder,就会得到一个code,这个code也就是输入的一个表示,那么我们怎么知道这个code表示的就是input呢?我们加一个decoder解码器,这时候decoder就会输出一个信息,那么假如输出的这个信息和一开场的输入信号input是很像的理想情况下就是一样的,那很明显,我们就有理由
4、相信这个code是可靠的。所以,我们就通过调整encoder和decoder的参数,使得输出和输入之间的误差重构误差最小,这时候我们就得到了输入input信号的第一个表示,就是编码code了。而此时,输出的解码器就已经不重要了,因为code已经表示了input的所有信息,即code已经代表了input。 2通过编码器产生特征,然后训练下一层。这样逐层训练: 然后第二层的训练就以第一层的code作为第二层的input,然后同样使其输出等于输入,获得code2表示code,第三层code3表示code2直至多层。我们通常所讲的深度学习之中,深度一词就源于此神经网络的多层,层数越多,学习深度也就越深
5、。 3有监视微调: 经过上面的方法,我们就可以得到很多层了。至于需要多少层或深度需要多少,这个目前本身就没有一个科学的评价方法需要自己试验调了。每一层都会得到原始输入的不同的表达。当然了,我们觉得它是越抽象越好了,就像人的视觉系统一样。 到这里,这个自编码器还不能用来分类数据,因为它还没有学习怎样去连结一个输入和一个类。它只是学会了怎样去重构或复现它的输入而已。或讲,它只是学习获得了一个可以良好代表输入的特征,这个特征可以最大程度上代表原输入信号。那么,为了实现分类,我们就可以在自编码器的最顶的编码层添加一个分类器例如逻辑回归、SVM等,然后通过标准的多层神经网络的监视训练方法梯度下降法去训练。 也就是讲,这时候,我们需要将最后层的特征code输入到最后的分类器,通过有标签样本,通过监视学习进展微调,这也分两种,一个是只调整分类器黑色局部: 另一种:通过有标签样本,微调整个系统:假如有足够多的数据,这个是最好的。即端对端学习 一旦最后的监视训练完成,这个系统就可以用来分类了。神经网络的最顶层可以作为一个线性分类器,然后我们加上自编码器,做成性能更优的分类器去取代它。
限制150内