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

CNN

    • Observation 1
    • Observation 2
    • Benefit of Convolutional Layer
    • Multiple Convolutional Layers
    • Comparision of Two Stories
    • Observation 3
    • Convolutional Layers + Pooling
    • Application: Playing Go
    • To learn more ...

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

Image Classification

卷积神经网络 Convolutional Neural Network (CNN)_第1张图片

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

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

卷积神经网络 Convolutional Neural Network (CNN)_第2张图片

  • channels: R G B三种颜色

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

卷积神经网络 Convolutional Neural Network (CNN)_第3张图片

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

Observation 1

A neuron doesn’t have to see the whole image

卷积神经网络 Convolutional Neural Network (CNN)_第4张图片

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

卷积神经网络 Convolutional Neural Network (CNN)_第5张图片

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

卷积神经网络 Convolutional Neural Network (CNN)_第6张图片

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

我也浮想联翩了~

卷积神经网络 Convolutional Neural Network (CNN)_第7张图片

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

卷积神经网络 Convolutional Neural Network (CNN)_第8张图片

  • 会看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)_第9张图片

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

卷积神经网络 Convolutional Neural Network (CNN)_第10张图片

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

经典的共享方法

卷积神经网络 Convolutional Neural Network (CNN)_第11张图片

Benefit of Convolutional Layer

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

卷积神经网络 Convolutional Neural Network (CNN)_第12张图片

Another story based on filter

卷积神经网络 Convolutional Neural Network (CNN)_第13张图片

卷积神经网络 Convolutional Neural Network (CNN)_第14张图片

卷积神经网络 Convolutional Neural Network (CNN)_第15张图片

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

Multiple Convolutional Layers

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

卷积神经网络 Convolutional Neural Network (CNN)_第16张图片

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

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

卷积神经网络 Convolutional Neural Network (CNN)_第17张图片

Comparision of Two Stories

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

卷积神经网络 Convolutional Neural Network (CNN)_第18张图片

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

卷积神经网络 Convolutional Neural Network (CNN)_第19张图片

卷积神经网络 Convolutional Neural Network (CNN)_第20张图片

Observation 3

卷积神经网络 Convolutional Neural Network (CNN)_第21张图片

Pooling - Max Pooling

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

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

卷积神经网络 Convolutional Neural Network (CNN)_第22张图片

把图片变小

Convolutional Layers + Pooling

几次convolution一次pooling

卷积神经网络 Convolutional Neural Network (CNN)_第23张图片

  • 4 * 4 → 2 * 2

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

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

卷积神经网络 Convolutional Neural Network (CNN)_第24张图片

Application: Playing Go

卷积神经网络 Convolutional Neural Network (CNN)_第25张图片

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

Why CNN for Go playing???

卷积神经网络 Convolutional Neural Network (CNN)_第26张图片

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

卷积神经网络 Convolutional Neural Network (CNN)_第27张图片

卷积神经网络 Convolutional Neural Network (CNN)_第28张图片

To learn more …

CNN is not invariant to scaling and rotation

卷积神经网络 Convolutional Neural Network (CNN)_第29张图片

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

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

你可能感兴趣的:(ML,cnn,深度学习,神经网络)