Convolutional Network 1
Convolutional Neural Network¶
What if MLP ?¶
我们需要把矩阵 unfold 成向量, 这时
- 参数太多了
- Spatial info is lost
It is hard to adapt scenarios of viewpoint variation, scale variation, illumination conditions and so on.
Idea 1: Local Connectivity¶
每个神经元有一个感受野(Receptive field)
- [Locality Assumption]: Local information is enough for recognition
- Connect each neuron to only a local region of the input volume
Idea 2: Parameter Sharing¶
- [Shift Invariance Assumption]: If a feature is useful at spatial position \((x,y)\), then it should also be useful for all positions \((x', y')\)
- Share the weights of sliding window over different spatial locations
Convolutional Neural Network¶
Convolution¶
加权函数\(g\)对原函数各个部分的重要性进行一个建模。
Cross-Correlation¶
Convolution vs. Cross-Correlation¶
Notations¶
CNN的输入是一个 tensor,\(height \times width \times channels\)
卷积核:“滤波器” 、kernel
Convolution: Local Connnection
所谓的卷积操作就是将 kernel 在原来的图像上 "slide over",然后算 dot products.
Convolution: Parameter Sharing
做一遍卷积之后,得到一个新的图,我们称它为特征图。每一个特征图上的点,都对应一个神经元。
每个神经元都用的同一个卷积核,参数量就是卷积核的大小。我们换一个卷积核,就可以得到另一个特征图,也就是又得到了一个通道。
Dilated Convolution (空洞卷积)¶
这个操作虽然没有扩大卷积核,但是把感受野整大了, 特征图就会变小。
还有一种操作是 Stride Convolution
Stride & Padding¶
这是网络中用于缩小 size 的最重要的技术。
有时我们会在图旁边填一堆零,这个操作称为 Padding
Leaky ReLU¶
Convolutional Layer: Hyperparameters¶
需要以下四个超参数
- # filters: \(D2\)
- Receptive field (kernel size): \(K\)
- Stride: \(S\)
- The Amount of zero padding
Pooling¶
将一个\(2 \times 2\)的变成一个。
- max pooling
- avarage pooling
人们曾经认为Pooling能带来平移不变性。
Spatial Pyramid Pooling¶
用不同尺度的格子去做Pooling。然后把他们串起来
LeNet¶
Y. LeCun, L. Bottou, Y. Bengio, Gradient-based learning applied to document recognition, Proc. IEEE, 1998.
这个东西最初被用于文字识别。
AlexNet¶
Visualization¶
Backpropagation Algorithm¶
Error Computation of Pooling¶
做一个Expanding,前向传播是一个downSample,这时候整一个upSample,还是有两种方式
- max
- average
Error Computation of Convolution¶
PracticalTraining Strategie¶
现实中有很多个局部极值。我们希望在比较多的局部极值中找到比较好的局部极值
Weight Initialization¶
网络初始值选的不好,可能会导致梯度消失或爆炸之类的东西。甚至会完全无法学习。
Xavier Initialization¶
考虑隐藏层中的一个 unit 的值
对方差啥的进行分析,设边权初始化均值为\(0\),方差为\(\sigma^2\)
我们需要保证方差不变
He Initialization : for ReLu activations
Batch Normalization¶
在一个 batch 中做一个 Normalization,然后加两个 shifting factor。
在做推断的时候,把\(\mu\)和\(\sigma\)做一个指数滑动平均(Exponential moving average, EMA)
Invariance vs. Equivariance¶
等变性
不变性
Limitation of CNN¶
CNN 有一些问题,比如很难处理形变、Background clutter、Flipped、Deformation、Scale variation、Viewpoint variation。
- 首先,这些 limitations 来自 CNN modules 的固定结构
Solution: Data Argumentation¶
把能整的活都加入训练数据,它们的 label 都和原来是一样的。
Advanced Data Augmentation¶
- CNNs trained on real-world dataset are bias towards texture.
CNN 会更倾向于学更“简单的”特征,比如学到纹理,于是有了一种数据增广技术 “Stylization”
- CNNs are sensitive to context
比如它会把猴和车在一起识别成人和猴在一起……。我们能做的就是大力增广。
Deep Networks are not Shift-Invariant¶
这和 curse of dimensions 有关,维度过高,平移一点点就会撞进没有数据出现的地方。
之前提到过的 max-pooling 也和这种现象有关。
Still Ongoing¶
比如我把眼睛和嘴换一下位置置信度还提高了……
某大佬: “It is actually unfortunate that CNNs work so well, because they have serious shortcomings which will be hard to get rid of.”
有时CNN还不具有重建的能力,比如一个歪着的4,它会给你重建出一个正着的4……