台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

本博客主要整理自:
http://blog.csdn.net/xzy_thu/article/details/69808817
本节课主要讲述了CNN的原理结构、操作过程和应用。

Why CNN for Image

CNN的参数比全连接神经网络少得多,为什么CNN只用较少的参数就可以用于处理图像呢?这是因为图像具有以下三点特征:
1、一些模式比整张图片小得多,例如“鸟喙”就比整张图片小得多;
2、同样的模式可能出现在图像的不同区域,例如“鸟喙”可能出现在图片的左上方也可能出现在图像的中间;
3、对图像的降采样不会改变图像中的物体。
CNN的卷积层的设计对应着前两点,池化层的设计对应着第三点。
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

CNN-Convolution

理解卷积操作的动图
每一个卷积核都产生一个feature map,不同的卷积核可以提取出不同的特征。关于卷积和feature map另一篇博客也有比较详细的介绍:
http://blog.csdn.net/Allenlzcoder/article/details/78739346
卷积是一种神经网络的连接方式: 也能用全链接的方式表示出卷积操作,如下两图所示。
这里写图片描述
这里写图片描述
Shared weights: 同色的weight相等。
通过上面两图看出,卷积的通过共享权重大大减少了参数的数量。
CNN中在卷积层后一般跟着池化层(Pooling),池化的方法很多,比如均值池化、最大池化等。
Flatten操作是将feature map拉直成列向量,如下图所示。
这里写图片描述

CNN in Keras

就跟搭积木一样简单。
这里写图片描述
这里写图片描述
这里写图片描述

What does CNN learn?

上例中第二个卷积层有50个11x11的filter,它们的参数是学出来的,定义第k个filter的活跃度为 ak ,固定参数,用梯度上升法求使 ak 最大的input image。
得到的结果是,使各个filter活跃度最大的image是各种条纹。这层filter看的还是局部信息。
而使Flatten后的全连接层的filter活跃度最大的image,就显示出了各种轮廓,说明这些filter看的是整体信息。
这里写图片描述
这里写图片描述
这里写图片描述
固定参数,求input image,让output layer的各neuron的output最大,并没有得到期望中的数字图片,而是很杂乱的图像。(白色表示有墨水。)
对目标output加一个L1正则项,所得结果稍显数字轮廓。
这里写图片描述
这里写图片描述

Deep Dream 与 Deep Style

Deep Dream: 将一张image作为CNN的输入,将CNN某个hidden layer的output(vector)拿出来,让其中正的更正、负的更负,把它作为新的image的target.
这里写图片描述
左边CNN filter output代表内容,后边的CNN的filter output之间的correlation代表风格。
要找一张image,其content (filter output)像左,style (output correlation)像右。

More Applications

阿尔法狗:棋盘作为image,有开篇所讲的前两个特点,但没有第三个特点,所以阿尔法狗没有pooling layer。
语音识别应用,CNN的filter只会在频谱的频率方向扫描,不会在时间方向扫描。
文本分类应用,CNN的filter只会在sentence matrix的时间方向扫描,不会在embedding dimension方向扫描。
所以,在具体场景应用CNN时,如何设计CNN的结构,需要考虑场景本身的性质特点。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值