久违的学习笔记,在周围大佬们的陪(压)伴(力)下,不得不给自己学习的压力啊!
周五就要做报告了,得赶快写点总结。前面几课笔记周五补上,给自己挖个坑,记得填。废话不说,拿出朕的小本本开写。
CNN(Convolutional Neural Network)卷积神经网络
听名字就觉得很吓人,卷积什么的!
定义1. 一种专门用来处理类似网格结构的数据的神经网络。
eg:时间序列数据(一维网格)、图像数据(二维像素网格)
定义2:至少在网络的一层中使用卷积运算来替代一般的矩阵乘法运算的神经网络。
设x(t),w(t)是R1上的可积函数,则运算s(t)=(x*w)(t),被定义为卷积,*表示卷积。
其中一个参数叫做输入(input),一个参数叫做核函数(kernel function),一般输出叫做特征映射(feature map),核通常都是由学习算法得到的多维数组参数,称为张量。
通过让核的大小远小于输入的大小实现
比如说,需要让神经网络识别一只鸟。当然我们可以直接把这张图扔进一个全连接网络里,然后得到输出。但是,这样太没有效率了。假设说其中某一层隐藏层中的某一个神经元要识别鸟嘴,而要识别出一只鸟嘴,其实并不需要整张图,只需要含有鸟嘴的那一小块图就好了。在这儿,鸟嘴就是一个识别的pattern。
传统的神经网络里,参数矩阵参数中,每一个单独的参数都描述了一个输入单元和一个输出单元间的交互。即每一个输出单元与每一个输入单元都产生交互。然而卷积神经网络并非如此,因此称为稀疏交互,后面会说到。
假设现在有两张有鸟的图,依然有识别鸟嘴这个任务。识别鸟嘴是做一样的事,不需要一个神经元检测左上角的鸟嘴,一个检测中间的鸟嘴。
对应的特征叫做,参数共享,之后会具体解释。
假设把纵轴奇数col拿掉,横轴奇数row拿掉,整张图变为原来的1/4,但还是能识别出是鸟。
上图是一个典型的卷积神经网络层的组件。有两组常用的术语,对于左图:卷积网络被视为少量相对复杂的层,每层有许多级(stage)
对于右图:卷积神经网络被视为更多数量的简单层,每个处理步骤都被认为是一个独立的层,意味着不是每一“层”都有参数。(什么叫做不是每一层都有参数?)
举一个栗子,输入一张image,先通过卷积运算,中间使用激活函数,再pooling,这三个过程可以反复做,然后flatten,再做输入到全连接网络,最后得到输出,即识别结果,猫、狗等等。
这整个过程的参数都是可以通过学习得到的,整套是同时一起被训练得到的。
这个动图实在是太辣鸡了。开始录好屏,然后用格式工厂转成GIF,没想到变这么小,而且时间还被截短了。将就着看下面这一张图吧。
以此类推得到整个一个新的矩阵
每个像素由三个数值描述RGB,红蓝绿的强度,都分别称为channel,所以彩图有三个channel。做convolution时,filter是相当于是一个立方体,3*3*3,前面3*3是filter大小,最后一个3是3个channel,一共就有27个参数。
CNN可以看做是全连接网络的简化版。将feature map拉直可以看做是全连接网络里的输出神经元。
做convolution的时候,用filter中的9个值和image中对应的数做內积得到
feature map 的第二个值-1,也是同样的方式,这其中使用了同一组weight,即前文提到的第二个特征,参数共享。相比全连接网络里的每一个参数都是同时学习得到,进一步减少了参数。
使用池化函数(pooling function)对某一位置的相邻输出的总统计特征来代替网络在该位置的输出。有max pooling、mean pooling。
最近看论文,涉及到了对graph data做pooling。当时我又懵逼了,一时无法理解为什么要pooling。原来是因为经过激活函数处理之后的输出仍然很多。而且就图像而言,图像的特征有一种静态性,因此需要将特征进行统计处理。max pooling和mean pooling都能够很大程度上保持、统计特征。所以,基于特征统计、减少计算的目的诞生了CNN的pooling。
接着上述的那个例子,接下来做max pooling
通过filter得到两个新矩阵,把matrix里的分组,假设分组为2*2,选出其中个每个最大值,就是max pooling。
最后求参数的时候,会用到梯度下降,用maxout network。这里就不细说了。
当关注某个特征是否出现,而非出现的具体位置时
eg.图像中是否含有人脸
- 当最后pooling得到image差不多了,就做flatten,将image里每个像素里每个channel的值拉直
- 经过几次convolution、pooling之后,参数减少,经过flatten拉直的就不会太长,然后放入全连接网络里,就可以得到输出
- 训练可以用梯度下降
稀疏交互、参数共享、等变表示
http://scs.ryerson.ca/~aharley/vis/conv/ 卷积神经网络3D视觉化模型
Ian Goodfellow, Yoshua Bengio, and Aaron Courville,Deep Learning,2016
Hung-yi Lee Machine Learning
博客里的很多图取自李宏毅的ML课件,以及Deep Learning书中的插图。
初学肯定有很多写的不准确或不对的地方,请大家指出,互相进步(^▽^)