李宏毅:Auto-encoder

1. 什么是auto-encoder

在这里插入图片描述

  • 主要有两个部件:encoder和decoder,简单采用背靠背的全连接层,形成一个瓶颈neck就为经典AutoEncoder的架构核心,层数一般不多,以1或2层隐含层为主
  • 一个encoder,作用好比输入一张图片丢入网络输出一个code(code是一个输入目标的压缩代表),
  • 一个decoder,输入一个code,丢入该网络,生成一个图片,能够重建原来的图像

在这里插入图片描述

这两个NN,不能单独训练,需要一起学

2. PCA

与PCA有类似的思想
在这里插入图片描述
PCA就是输入图片x (x 往往减去平均x,这里省略掉了,因为往往图片起手就是标准化) ,x会乘上w,得到c,c再乘上wT,得到 ⌢ x \frown x x

如果把它当成NN来看,

  • 输入x 就是input layer,输出的x就是 output layer
  • 中间component的weight就是hidden layer(往往叫bottleneck later,因为得到code数目要小,所以layer都特别窄)
  • w就是做encode,wT是decode,那么code就是我们想要的

3. deep auto-encoder

提出了更深层次的auto-encoder
在这里插入图片描述

中间窄的layer可以作为encode,input layer-bottle之间就是encode,bottle-output layer就是decode,这里的对称每个层weight是互为转置的,这样就会使得参数少一半,不会overfit的,但也不一定这样做,往往就是直接整个网络训练过来

4. PCA与deep auto-encoder的结果

(后者更加清晰)
在这里插入图片描述
如果将30维降到2维,你会发现PCA会混起来(不同颜色代表不同数字),而auto-enocder是分开的
在这里插入图片描述

5. auto-encoder用途

5.1 auto-encoder 可以做图片搜索

我们可以使用像素上面的 Euclidean 距离,你会发现搜索上面的结果可以会有偏差,比如用迈克尔杰克逊,上面就是搜索的结果
在这里插入图片描述

使用auto-encoder后
在这里插入图片描述
上面的图片就是code再重建回来的结果,如果在code上面算相似度,找到的都是人脸
在这里插入图片描述

5.2 auto-encoder 预训练DNN

在这里插入图片描述
我们会先训练一个auto encoder,使得输入与输出接近,训练之后,把w1固定住,我们崽训练下一个auto-encoder,也就是当作输入1000维,输出1000维,使两者越接近越好,以此类推,最后w4随机初始化,之后用backpropagation微调
在这里插入图片描述
现在不预训练也可以训练

5.3 auto-encoder CNN

在这里插入图片描述

pooling与unpooling
在这里插入图片描述
pooling每四个选取最大的,并记录位置,unpooling时候把除了记录的位置补0,这样会使得图片变大,效果如下
在这里插入图片描述
当然还有其他做法,也可以使用maxpooling后结果,每个赋值四份

convolution和deconvolution
其实deconvolution就是convultion
我们使用一维的
使用窗口为3的进行filter,下面的是convolution
在这里插入图片描述
convolution3个值变一个值,那么deconvlution就是一个值变成3个值,但是会出现重复的值,也是下面图并列的,所以我们把他们相加,其实我们可以将图片转化为右边的计算过程(里面计算的是一模一样的),也就是padding之后进行convlution操作
在这里插入图片描述

6. 有趣的事情

我们用训练encoder产生vector
我们也可以使用decoder生成新的image,将784的image通过hidden layer 输出vector后映射到2维,再把2维的 通过hidden layer解回图片,在encoder的部分,二维画出来如左图,不同颜色不同数字,我们在红色中间,等间隔sample,得到如右图的结果,发现神奇的现象,一个过度化的现象

在这里插入图片描述

会发现左上角比较差,因为这边是没有图片的,这里是如何选出sample的地方(也就是红框)呢?是有值的像图片的,这是人为将映射到2维观察出来的,那我们不降维的话,我们可以使用regularization,保证接近0的地方,然后就可以0为中心等距sample,就像下面的图
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yilyil

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值