0.为什么要使用卷积神经网络
CNN常常被用在影像处理上,如果你今天用CNN来做影像处理,当然也可以用一般的neural network来做影像处理,不一定要用CNN。比如说想要做影像的分类,那么就是training一个neural network,input一张图片,把这张图片表示成里面的pixel,也就是很长很长的vector。output就是(假如你有1000个类别,output就是1000个dimension)dimension。
?
但通常会遇到一些问题:
(1)在training neural network时,我们希望在network的structure里面,每一个neural就是代表了一个最基本的classifier,事实是在文件上根据训练的结果,你有可能会得到很多这样的结论。
(2)直接用fully connect feedforward network来做影像处理的时候,需要太多参数。
1.CNN架构
整个CNN的架构是这样的,首先input一张image以后,这张image会通过convolution layer,接下里做max pooling这件事,然后在做convolution,再做max pooling这件事。这个process可以反复无数次,反复的次数你觉得够多之后,(但是反复多少次你是要事先决定的,它就是network的架构(就像你的neural有几层一样),你要做几层的convolution,做几层的Max Pooling,你再定neural架构的时候,你要事先决定好)。你做完决定要做的convolution和Max Pooling以后,你要做另外一件事,这件事情叫做flatten,再把flatten的output丢到一般fully connected feedforward network,然后得到影像辨识的结果。
基于前面三个影像处理的观察,得出:
(1)要生成一个pattern,不要看整张的image,只需要看image的一小部分。
(2)通用的pattern会出现在一张图片的不同的区域。
(3)可以subsampling。
?2.卷积与全连接
?convolution就是fully connected layer把一些weight拿掉了。经过convolution的output其实就是一个hidden layer的neural的output。如果把这两个link在一起的话,convolution就是fully connected拿掉一些weight的结果。
?
?
?
?
|