【李宏毅】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把一些不需要的参数拿掉,可以简化neural network的架构,比一般DNN简单。
1. some patterns are much smaller than the whole image.
大部分的pattern比整张图像要小,只要看一部分的图像就可以确定这件事情。
比如一只鸟,侦测有没有鸟嘴的存在,仅需要看鸟嘴的部分。
2. The same patterns appear in different regions
同一个特征出现在图片的不同地方可以使用同一组参数进行侦测,无需重新设计。
3. Subsampling the pixels will not change the object
The Whole 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小。
每个filter和image对应的部分做内积,filter每次挪动的距离叫做步长,自己设定,由此image的维度由6 x 6变成4 x 4, 同时验证了property2,同一个pattern出现在image不同的地方我们可以用同一个filter来侦测。
彩色图:
convolution是fully connected 把一些weight拿掉:
2. max pooling
选择每个框里面最大的(最小的等)。4 x 4 变成 2 x 2
通过一次convolution和max pooling就可以得到一个较小的image。
3. Flatten
把image拉直放到fully connected neural network里
围棋也可以用CNN,可以达到更好的效果,因为它有图像的一下特点,没有用到max pooling(因为围棋的特性)。
参考文章:
对于彩色图像:n x n x 3(RGB)
对于灰度图像:n x n x 1
CNN模型用来训练和测试,每个输入图像经过一系列的卷积层(有filter(kernals)),池化层(pooling),全连接层并且应用softmax function来分类一个对象(用介于0-1之间的概率值)。
参考文章:https://blog.****.net/v_july_v/article/details/51812459
**函数:sigmoid:实际梯度下降中,sigmoid容易饱和、造成终止梯度传递,且没有0中心化。
ReLU:优点是收敛快,求梯度简单
参考文章:https://blog.****.net/ruiyiin/article/details/77113973