【auto-encoder】原文链接
虽然不是万众期待,不过,这个大坑的第二部分也新鲜滚热辣的出炉了(符号使用上节的约定),这次的内容是Denoising autoencoder,整个坑我打算分四节,这个就是其中的第二节,再下一节就会简单的讲一讲PCA了,最后一节进行题目所许诺的对比。好了,废话不多说开始正题了,虽然上一节我们已经对什么是好的表示已经有过论述了,但是为了引出denoising autoencoder,我们还是有必要再谈一谈什么是好的表示的问题,不过讲这个之前我们先讲一讲trivially solution的概念,trivially solution其实不是什么难的东西,其实就是Y只是简单拷贝或者说复制了X的情况,这种情况带来的直接后果就是我们所学习到的Y基本是没有任何意义的,为了避免这个情况,或者说为了学习到好的表示而不是简单的输入的copy的话我们需要对Y加上约束,约束这玩意我相信各位看官在看上一节的时候一定看见了很多次,对,加约束是防止出现trivially
solution的有效手段,但是是不是有其他的方法可以确保我们可以的得到好的表示而且防止trivially
solution吗?答案是肯定的,以上的要求都可以用一种新的方法实现,就是使用新的reconstruction criterion,我们现在不再试图将X映射到Y然后再由Y映射回去来重建X(实际是映射到Z层),而是使用corrupted X映射到Y然后再试图重构X(实际是映射到Z层),于是由这种新的reconstruction
criterion我们就引出了我们今天的主要内容denoising auto encoder ,好了,老规矩,上图~
其实denoising autoencoder和autoencoder的差别其实不是很大的,使用一样的loss function,一样都是最大化X和Y之间的互信息(当然,Denoising autoencoder的输入是corrupted input),他们之间最大的区别是,Denoising autoencoder的Y是由corrupted X决定的,而不是X,正是由于这种区别,使得denoising auto encoder 学习到了对corrupted input更鲁棒的表示,也就是说得到的表示更好的反应了输入原本具有的结构。
好了,让我们进入今天的主题,以流行学习的角度看denoising autoencoder
既然讲到流形学习那就不得不提一提流形学习的假设了,我们一般假设数据存在一定的低维内在结构,同时数据是位于一个低维子流形上的,好了,回归正题,其实从某种角度上来说,学习(训练)denoising autoencoder其实就是定义并学习一个流形以下图为例
其实这个图的前提就是假设了X是位于一个低维(非线性)流形上,我们现在做的就是要增大
让我们可以学习到一种映射趋向于从低概率的corrupted X到高概率的X,我们最小化loss function其实也达到的是让
增大的目的(具体参考上节的图片均来自:Stacked Denoising Autoencoders: Learning Useful Representations in
a Deep Network with a Local Denoising Criterion
本人菜鸟,欢迎大家指正