李宏毅深度学习(2017)

3.(先修课②)Convolutional Neural Net

2018-12-07  本文已影响9人  SpareNoEfforts

为什么CNN可以用作图像处理?

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

CNN--卷积层

下面,为大家展示一个神奇的操作:卷积动图
卷积是一种神经网络的连接方式:


CNN in Keras


解释一下
model2.add(Convolution2D(25,3,3,input_shape=(1,28,28)))
25是有25个filter,,filter的大小是3*3
input_shape中第一参数是颜色数目,黑白为1,彩色RGB为3,后两个参数是图像大小是28*28
model2.add(MaxPooling2D(2,2))
在2*2的范围内做max pooling
model2.add(Flatten())

What does CNN learn? CNN到底学到了什么?

上例中第二个卷积层有5011x11filter,它们的参数是学出来的,设第kfilter的活跃度为a^k,固定参数,用梯度上升法求使a^k最大的input image
得到的结果是,使各个filter活跃度最大的image是各种条纹。这层filter看的还是局部信息。
而使flatten后的FC层的filter活跃度最大的image,就显示出了各种轮廓,说明这些filter看的是整体信息。


固定参数,求input image,让output layer的各neuronoutput最大,并没有得到期望中的数字图片,而是很杂乱的图像。
(白色表示有墨水。) 例如:最简单的constrain是大部分图是没有涂笔画的。
对目标output加一个L1正则项,所得结果稍显数字轮廓。

其实这个就是Deep Dream的思想。

Deep Dream 与 Deep Style

左边CNN filter output代表内容,后边的CNNfilter output之间的correlation代表风格。
要找一张image,其content (filter output)像左,style (output correlation)像右。

CNN的其它应用

阿尔法狗:棋盘作为image,表示成一个matrix,有开篇所讲的前两个特点(①某些pattern比整个图小②同样的pattern可能出现在图像的不同位置),但没有第三个特点(③二次采样不会影响整个图像、这个阿尔法狗不符合),所以阿尔法狗没有pooling layer。


根据阿尔法狗的特性,改善了CNN 的结构,没有使用max pooling

语音识别应用,CNN的filter只会在频谱的频率方向扫描,不会在时间方向扫描。
文本分类应用,CNN的filter只会在sentence matrix的时间方向扫描,不会在embedding dimension方向扫描。
所以,在具体场景应用CNN时,如何设计CNN的结构,需要考虑场景本身的性质特点。

To Learn More

上一篇下一篇

猜你喜欢

热点阅读