【李宏毅】CNN

Convolutional Neural Network

CNN常常被用在图像处理(image processing)上

Why CNN for image?

当我们用一般的fully connected neural network来做图像处理的时候,往往我们会需要太多的参数,举例来说:

我们有一张100 x 100 的彩色图片(RGB),把它拉成一个vector的时候,它就有100 x 100 x 3(RGB)的pixel(每个pixel需要有三个value来描述它(RGB))

input vector:100 x 100 x 3 = 30000维

hidden layer(假设有 1000 个neuron),则第一个hidden layer的参数就有30000 x 1000(太多)

【李宏毅】CNN

CNN把一些不需要的参数拿掉,可以简化neural network的架构,比一般DNN简单。

1. some patterns are much smaller than the whole image.

大部分的pattern比整张图像要小,只要看一部分的图像就可以确定这件事情。

比如一只鸟,侦测有没有鸟嘴的存在,仅需要看鸟嘴的部分。

【李宏毅】CNN

2. The same patterns appear in different regions

同一个特征出现在图片的不同地方可以使用同一组参数进行侦测,无需重新设计。

【李宏毅】CNN

3. Subsampling the pixels will not change the object

【李宏毅】CNN

The Whole CNN:

【李宏毅】CNN

怎么根据图像的性质来使用CNN的:

【李宏毅】CNN

CNN的各个部分:

1. Convolution

黑白图:

有一个 6 x 6 的黑白的image,0代表无墨水,1代表有墨水。我们有很多个3 x 3 的filter,每个filter相当于fully connected neural network中的一个neuron,每个filter都侦测一个pattern, pattern比整个image小。

【李宏毅】CNN

每个filter和image对应的部分做内积,filter每次挪动的距离叫做步长,自己设定,由此image的维度由6 x 6变成4 x 4, 同时验证了property2,同一个pattern出现在image不同的地方我们可以用同一个filter来侦测。

【李宏毅】CNN           【李宏毅】CNN

彩色图:

【李宏毅】CNN

convolution是fully connected 把一些weight拿掉:

【李宏毅】CNN                 【李宏毅】CNN

2. max pooling

选择每个框里面最大的(最小的等)。4 x 4 变成 2 x 2

【李宏毅】CNN                     【李宏毅】CNN

【李宏毅】CNN

通过一次convolution和max pooling就可以得到一个较小的image。

【李宏毅】CNN            【李宏毅】CNN

3. Flatten

把image拉直放到fully connected neural network里

【李宏毅】CNN

围棋也可以用CNN,可以达到更好的效果,因为它有图像的一下特点,没有用到max pooling(因为围棋的特性)。

【李宏毅】CNN         【李宏毅】CNN

 

参考文章:

https://medium.com/@RaghavPrabhu/understanding-of-convolutional-neural-network-cnn-deep-learning-99760835f148

对于彩色图像:n x n x 3(RGB)

对于灰度图像:n x n x 1

CNN模型用来训练和测试,每个输入图像经过一系列的卷积层(有filter(kernals)),池化层(pooling),全连接层并且应用softmax function来分类一个对象(用介于0-1之间的概率值)。

【李宏毅】CNN

【李宏毅】CNN

 

参考文章:https://blog.****.net/v_july_v/article/details/51812459

**函数:sigmoid:实际梯度下降中,sigmoid容易饱和、造成终止梯度传递,且没有0中心化。

ReLU:优点是收敛快,求梯度简单

【李宏毅】CNN

参考文章:https://blog.****.net/ruiyiin/article/details/77113973