- Convolutional Neural Network
十、Convolutional Neural Network
为什么CNN会被用于图像?
(1)CNN简化neuron network 架构,过滤掉不需要的参数。
(2)大部分pattern比整张image还要小,一个neuron只需要链接到一小块区域,不需要连接到整张图片;假设现有一张图片,需要侦测是否有“鸟嘴”:
(3)同样的pattern出现在不同的区域,可以用同样的neuron侦测出来;假设现有两张图片,一个的鸟嘴在左上角,一个在中间,要求这两个neuron共享同一组参数,减少参数的用量:
(4)对图片做subsampling(二次抽样),不会对结果造成影响,利用这个概念把图片变小,可以减少需要用的参数:
整个CNN架构为:对图片进行Convolution,再进行Max pooling,以上两步反复数次,反复的次数事先决定,做完这件事情就进行Flatten(压平),之后把结果丢到Fully Connected Feedforward network(全连接前馈网络),得到最终结果:
其中,以上提到的不需要侦测整张图片以及同样pattern出现在不同区域的两种问题使用Convolution解决,两次抽样使用Max pooling解决:
(一)CNN-Convolution
假设network input是一张6x6的image,黑白图片,1代表有墨水,0代表无墨水,现有一组filter(滤波器),每一个filter其实就是一个3x3的矩阵,这个矩阵中每一个element值就是network parameter,是自动学习出来的,因为filter为3x3的矩阵,说明要侦测的pattern也是3x3的:
运作方式:把一个filter放在image的左上角,然后把此处image的9个值和这个filter的9个值做内积运算,然后挪动filter的位置,挪多少事先决定好,用stride表示,假设此处设置stride=1: