李宏毅老师课程:Unsupervised Learning:Auto-encoder

Introduction

Auto-encoder本质上就是一个自我压缩和解压的过程

我们想要获取压缩后的code,它代表降维结果,这个过程中我们需要:

  • Encoder(编码器),它可以把原先的图像压缩成更低维度的向量
  • Decoder(解码器),它可以把压缩后的向量还原成图像

Encoder和Decoder都是Unsupervised Learning,由于code是未知的,对Encoder来说,我们手中的数据只能提供图像作为NN的input,却不能提供code作为output;对Decoder来说,我们只能提供图像作为NN的output,却不能提供code作为input

因此Encoder和Decoder单独拿出一个都无法进行训练,我们需要把它们连接起来,这样整个神经网络的输入和输出都是我们已有的图像数据,就可以同时对Encoder和Decoder进行训练,而降维后的编码结果就可以从最中间的那层hidden layer中获取
在这里插入图片描述

Recap: PCA

PCA的过程本质上就是按组件拆分,再按组件重构的过程
在这里插入图片描述

Deep Auto-encoder

Structure

中间的hidden layer也可以不止一个,也可以是多个的hidden layer,这种结构就称作deep auto-encoder
在这里插入图片描述

PCA vs Deep Auto-encoder

对于下图中的图像(0,1,2,3,4),如果我们使用PCA,只有中间一个hidden layer,先从784维降到30维,再从30维恢复到784维,可以发现图像变得比较模糊;

如果使用deep auto-encoder,先从784到1000,1000到500,500到250,250到300,再使用类似的encoder恢复图像,可以发现结果图像非常清晰
在这里插入图片描述
如果我们先使用PCA进行降维,把原图从784降到2维,对二维的数据进行可视化,可以发现不同的digit(不同的颜色代表不同的数字)都叠在一起了;

如果使用deep autoencoder,可以发现这个数字都是分开的
在这里插入图片描述

Text Retrieval(文字检索)

下图中蓝色的圆点都表示一个document,我们将输入的query也加入这个document,再计算查询的词汇query和每个document之间的inner product或similarity等,距离最近的document,similarity的值是最大的,因此会retrieval距离红色箭头最近的其他两个蓝色箭头
在这里插入图片描述
还有另外一种方法,使用一个vector来表示所有的词汇,vector对应的值就是每个character出现的次数;但这种方式没有考虑原来的语义顺序,每个character都是independent的

在下图中,假设bag里面有2000个词汇,把输入的document或query变成对应的vector,再输入相应的encoder,降维成2维,对这二维的数据进行可视化,如右图所示,不同的颜色代表不同的document
在这里插入图片描述

Similar Image Search

以图找图,如果我们只是做pixel上的相似程度,那么我们可以得到以下的结果,大部分显然不符合常理
在这里插入图片描述
我们可以把输入的image经过Deep Auto-encoder,变成一个code,再去做搜寻
在这里插入图片描述
用Deep Auto-encoder来找类似图片,也可以得到更好的结果
在这里插入图片描述

Pre-training DNN

在训练神经网络的时候,我们一般都会对如何初始化参数比较困扰,预训练(pre-training)是一种寻找比较好的参数初始化值的方法,而我们可以用Auto-encoder来做pre-training

在下图中,如果我们要对第一个hidden layer的weight进行初始化,那么我们可以使用Auto-encoder,先将784维到1000维,再进行reconstruct,使1000维降到784维,来使 x , x ^ x,\hat{x} x,x^之间的差值最小
在这里插入图片描述
我们可以学习这样的一个Auto-encoder,先将input转化成一个1000维的vector,再把这个vector转化为1000维的code,再把这个code转化为1000维的vector;使input和output越接近越好,把 W 2 W^2 W2的值保存下来
在这里插入图片描述
再继续下一个layer,使用第三个Auto-encoder
在这里插入图片描述
学习到 W 1 , W 2 , W 3 W^1,W^2,W^3 W1,W2,W3之后,就把这个weight作为初始值, W 4 W^4 W4则进行random init,再使用back propagation进行fine-tune(微调)
在这里插入图片描述

De-noising auto-encoder(去噪自动编码器)

对于原来的input x,我们先加入一些noise得到 x ′ x' x,进行encode之后再进行decode,使之和最早的input之间的差值最小;encoder现在不仅学习到了encode这件事,还学习到了把noise过滤掉这件事
在这里插入图片描述

Auto-encoder for CNN

在这里插入图片描述

CNN - Unpooling

在pooling时,会选择四个方框中的最大值,并记住最大值的location;

在upooling时,就会用到上面的location
在这里插入图片描述

Deconvolution

Deconvolution其实就是在做convolution
在这里插入图片描述
本文图片来自李宏毅老师课程PPT,文字是对李宏毅老师上课内容的笔记或者原话复述,在此感谢李宏毅老师的教导。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值