卷积神经网络 Convolutional Neural Network (CNN)

时间:2023-01-09 12:52:20

仅供个人学习,不具参考价值!

Image Classification

卷积神经网络 Convolutional Neural Network (CNN)

  • dimension长度表示能辨识多少种

如何把图像作为输入呢?巨大的向量 (内容为某一位置某一颜色的强度)

卷积神经网络 Convolutional Neural Network (CNN)

  • channels: R G B三种颜色

参数很多,flexibility越大,但也增加了overfitting的风险(数学问题,为什么,后续详谈)

卷积神经网络 Convolutional Neural Network (CNN)

考虑到影像辨识的特性,我们不需要每一个Neuron都和input dimension都有一个weight,需要对影像辨识特性有一些观察

Observation 1

A neuron doesn’t have to see the whole image

卷积神经网络 Convolutional Neural Network (CNN)

每一个Neuron只在意自己Receptive field中发生的事情

卷积神经网络 Convolutional Neural Network (CNN)

如何确定Receptive field还是看你自己咯~

卷积神经网络 Convolutional Neural Network (CNN)

  • 彼此之间可重叠
  • 同一范围可以有多个不同Neuron来守卫

我也浮想联翩了~

卷积神经网络 Convolutional Neural Network (CNN)

yeah!!! 你可以任意设计Receptive fields,但是经典是这样的!

卷积神经网络 Convolutional Neural Network (CNN)

  • 会看all channels (所以我们只看高*宽,称为kernel size,常见的kernel size就是3 * 3,原因后续详谈)
  • 同一个Receptive Field会有一组Neuron去守备
  • 我们希望Receptive Field之间有重叠,否则可能会miss交叠处的pattern,移动量stride(一般设1/2) - hyperparameter
  • 超出范围,那就补值(padding)为0,当然有各种padding方法

Observation 2

卷积神经网络 Convolutional Neural Network (CNN)

是不是可以让不同Reception field的Neuron共享参数

卷积神经网络 Convolutional Neural Network (CNN)

  • weight完全一致
  • Two neurons with the same reception field wouldn’t share parameters

经典的共享方法

卷积神经网络 Convolutional Neural Network (CNN)

Benefit of Convolutional Layer

因为convolutional layer是特别为影像设计的,所以虽然model bias较大,但在影像上就不是问题。

卷积神经网络 Convolutional Neural Network (CNN)

Another story based on filter

卷积神经网络 Convolutional Neural Network (CNN)

卷积神经网络 Convolutional Neural Network (CNN)

卷积神经网络 Convolutional Neural Network (CNN)

  • feature map: 数字群,这个feature map可以看做是另一张图片,不过channel数对应的是filter数

Multiple Convolutional Layers

叠第2层,不过channel现在是64(前一个convoluntion layer的filter数)

卷积神经网络 Convolutional Neural Network (CNN)

filter的大小3*3会不会让network无法看到比较大范围的pattern呢?

不会!!!!oh my gosh!!! 原来在第二层映射的是原图像上很大的范围!3 * 3 → 5 * 5

卷积神经网络 Convolutional Neural Network (CNN)

Comparision of Two Stories

story1*用的一组参数就是story2中的filter

卷积神经网络 Convolutional Neural Network (CNN)

story1中不同的Neuron共用参数守备不同的范围,就是story2中 一个filter扫过整张图片-convolution

卷积神经网络 Convolutional Neural Network (CNN)

卷积神经网络 Convolutional Neural Network (CNN)

Observation 3

卷积神经网络 Convolutional Neural Network (CNN)

Pooling - Max Pooling

没有参数,没有要learn的东西,行为都已经规定好

每一组(大小自己决定)选一个代表,Max Pooling中就是选择最大的那个

卷积神经网络 Convolutional Neural Network (CNN)

把图片变小

Convolutional Layers + Pooling

几次convolution一次pooling

卷积神经网络 Convolutional Neural Network (CNN)

  • 4 * 4 → 2 * 2

但对performance有伤害,可能也会丢掉细小的东西,所以今年流行有full convolution network

最终把影像中的矩阵拉直变成一个向量

卷积神经网络 Convolutional Neural Network (CNN)

Application: Playing Go

卷积神经网络 Convolutional Neural Network (CNN)

  • 19*19 解析度的图片
  • 48 channels in Alpha Go,这涉及围棋规则

Why CNN for Go playing???

卷积神经网络 Convolutional Neural Network (CNN)

pooling? 你还可以随意拿掉一个row或column吗?

卷积神经网络 Convolutional Neural Network (CNN)

卷积神经网络 Convolutional Neural Network (CNN)

To learn more …

CNN is not invariant to scaling and rotation

卷积神经网络 Convolutional Neural Network (CNN)

we need data augmentation就是截一小块出来放大/旋转,让CNN看

Spatial Transformer Layer可以解决这个问题,请自行参考