前景提要:
1. linear score function
2.2-layer neural network
A bit of history
1957,Frank Rosenblatt:perceptron 权重靠自己手动调试,没有BP
1960,Widrow and Hoff:Adaline and Madaline 多层感知器网络,没有BP,就是说没有合适的训练方法
1986,Rumelhart: 第一次引入 BP,有了科学的训练方法
2006,Geoff Hinton and Ruslan Salakhutdinov: reinvigorated deep learning 训练了深层网络,但不是现在的迭代方法
2012,Geoff Hinton's lab: 在声音识别上取得strong results
2012,Alex Krizhevsky in Geoff Hinton'slab:CNN,really strong results on ImageNet classification
从此深度学习爆发。
Back to 1950s、60s,Hubel and Wiesel,猫的视觉神经机理研究,意义重大:大脑皮层的细胞也交织着视觉感知的细胞;神经细胞之间存在级联的结构
1980,Fukushima :Neocognitron 新认知机 simple cells had modifiable parameters,complexcells
on top of these that performed a sort of pooling
1998,Yann LeCun:应用BP和基于梯度的学习训练CNN,在文本识别上表现良好(邮局的手写字体)
2012,Alex Krizhevsky:现代CNN,其实与杨乐昆的区别不大,不过加了scale,网络结构更大,更深。但是此时的数据丰富,可以利用GPU加速。
如今ConvNets的研究与应用:
1.分类、检索
2.检测、分割
3.自动驾驶(GPU加速)
4.人脸识别
5.姿势识别
5.游戏/影视/AR
6.医学图像分析与检测
7.image captioning/图像理解
8.艺术创作
CNN
Convolution Layer
Image 32*32*3 --> 5*5*3的滤波器--> 从整个图像上遍历划过,即卷积(细节下面展开)1.滤波器深度和图像深度相同
2.滤波器掩模一次出1个结果,也就是滤波输出是单层的
3. 5*5*3的滤波模板参数有5*5*3+1=76个
使用不同权重的滤波器可以得到不同的输出:
对输出继续使用filters:
这样类似于hubel和wiesel发现的神经细胞之间的级联关系:
下面展示滤波器工作的细节:
Stride=1:
最终7*7的input得到5*5的output
output为3*3
Stride=3:
7*7的输入实施不了3*3的滤波器!doesn't fit!
可以推出输出尺寸和输入尺寸N(图像为方形)、滤波器尺寸F的关系:
可以看出,stride变大的时候,有一个下采样的效果。
这里也有一个问题,我们希望输出层的大小与输入有一种倍数的关系,所以我们需要pading--在边界处补0或者镜像
输入7*7,Stride=1时,输出,7*7
实际上,CNN里,我们通常令stride=1,zero-padding大小就是(F-1)/2。另外假如我们不做padding,那么当深度增加时,输出图像尺寸会迅速减小。
总结:
Torch / Caffe --在API里定制以上参数
回到滤波的例子,与上节课学的加权整个图片不同,CNN加权局部,可以想象成一个神经元一次只接受5*5个像素。
但是同一副图像会有一组filters作用,activation map的深度是滤波器的个数。这组滤波器都会作用到图像的同一块区域,但是不同的滤波器在寻找这块图像不同的特征。
Polling layer
1.使得图像描述更小更易于管理
2.对于每一层activation map独立操作
Max pooling:
用最大的像素代替周围四个像素,polling时是没有重叠区域的,我们要的就是达到下采样的效果
Average polling?
但是最大值也许更有意义,因为我们希望在图像的局部区域输入的激励下对于我们想要的特征产生一个大的响应。
此时我们可以发现,stride和polling的效果都是downsample,确实有人使用stride代替polling,这件事可能要根据你的研究而定,stride和polling有微妙的区别,多尝试,选择最佳的那个。
fully connected layer:
上一节课学习的基本神经网络结构,神经元连接到所有输入,加权后得到score
例如输入1*3072 -->权重10*3072 --> 点乘后得到1*10的结果
CNN完整结构如下所示:
越往后的层在寻找图像越复杂的信息,类似于hubel和wiesel的研究,一个直观感受就是我们还能看清第一层activationmap代表什么,但是再往后就无法识别了。最后的score显示了某个复杂特征对FC层的激活程度。