今天让我们来看一下深度学习与神经网络里边的自编码.
其实自编码严格来说不能算作是深度学习的内容,我们在之前的机器学习算法中也了解到自编码,并且我们会通过一个简单的例子来去说说自编码的理解.
首先,我们听到自编码,一定会想到,AutoEncoder会是个什么码呢?是条形码,二维码 NO.NO.NO,和他们都没有关系,其实自编码是一种神经网络形式.
现在我们先构架一个神经网络模型,这个模型是收集一张图片,接受这个图片后,神经网络给这个图片压缩,最后再从压缩的图片中还原,是不是感觉有点抽象,其实我也觉得这样的解释不太恰当,那就让我们更加的具体一点来深入了解下这个自编码。
现在假设我们刚才构建的模型是这个样子,我们可以从图片中看出来,我们刚才上传给自编码模型的图片实质上是经过压缩以后再进行解压的一个过程。当压缩的时候,原有的图片的质量被缩减(降维),解压的时候,用信息量小却包含了所有信息的文件来恢复出原来的图片(还原)。
那么,为什么要这么做呢?当神经网络要输入大量的信息,比如高清图片的时候,输入的图像数量可以达到上千万,要神经网络直接从输入的数据量中进行学习,是一件非常费力不讨好的工作,因此我们就想,为什么不压缩一下呢?提取出原图片中最具有代表性的信息,缩减输入中的信息量,然后在把缩减过后的信息放入到神经网络中学习,这样学习起来就变得轻松了,所以自编码就是能在这个时候发挥作用,现在我们假设从上图中的输入层中的信息A解压缩到隐含层中得到a,然后用隐含层的a和输入层的A进行对比,得到预测误差,再进行反向传递,然后逐步的提高自编码的准确率,训练一段时间后在中间隐含层获得的一个部分的数据a就是源数据的精髓,可以从上面那个模型看出,从头到尾,我们只用到了这个输入的信息A,并没有用到数据A所对应的数据标签,所以我们这时候可以得出结论,自编码是一种非监督学习,通常我们在使用自编码的时候通常只会使用自编码的前半部分,这个部分也叫作EnCode,编码器,编码器可以得到源数据的精髓,如下图所示:
然后我们只需要在创建一个小的神经网络模型再去学习这个精髓中的数据,不仅可以减少神经网络的负担,并且同样可以达到一个很好的效果。
同样的如果我们通过自编码整理数据,他能从各种数据中筛选总结出各种数据的特征,如果把这个图片的类型特征都整理好放到一个图片上,那么数据类型都可以很好的用源数据的类型区分出来,如果你了解PCA主成分分析,自编码的功能和他类似,甚至在某些部分超出了PCA,换句话说,自编码可以和PCA一样可以给特殊属性降维.
而下一篇文章,我们来说一说稀疏自编码,当我们给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构。
祝大家五一快乐,玩的开心(*^▽^*)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。