台大李宏毅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的卷积层的设计对应着前两点,池化层的设计对应着第三点。
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

CNN-Convolution

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

CNN in Keras

就跟搭积木一样简单。
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

What does CNN learn?

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

Deep Dream 与 Deep Style

Deep Dream: 将一张image作为CNN的输入,将CNN某个hidden layer的output(vector)拿出来,让其中正的更正、负的更负,把它作为新的image的target.
台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network
左边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的结构,需要考虑场景本身的性质特点。

相关文章: