1. Convolutional Neural Network(卷神经网络)
1.1. CNN process
第一步将图片中的信息做Convolution将信息进行过滤压缩,第二步用Max Pooling将第一步中的信息提纯,例如在2X2的信息中选择最大的。重复前两步,得到合适的数据后,将数据放平,方便输入到全连接神经网络进行训练。
1.2. CNN—Convolution是怎样的?
就是将一组Filter(过滤矩阵),对图片信息从左到右,从上到下进行点积(每个矩阵相对应的元素分别相乘再相加),得到过滤后的矩阵,这个过程叫做Convolution。如下图,原图片信息是6X6,经过Filter1过滤压缩后,得到了4X4的图片信息。这个过程看起来不容易理解,初读时经常会想信息经过Filter1处理后,是不是会发生质的变化,但其实Filter1是由机器训练自己得到的,机器在训练过程中就在寻找最好的Filter1来提取有用的信息,所以最后Filter1到的结果肯定是逼近于正确的结果。另外,真实的图片通常都是有1000X1000甚至更多的像素点构成,将其中有用的图片信息提取出来,抛弃一些无用的,类似于对图片进行压缩的过程,可以将Convolution理解为对图片进行有目的的压缩过程。例如:如果一个CNN模型是想判断某张图片是否有鸟嘴,那么Convolution时,就会有意的提取于鸟嘴有关的信息,抛弃无关信息。
对于多种颜色的图片,这时每一个Filter也是多层的,如下图:
为什么说CNN用到的参数相比全连接神经网络要少很多?如下图:首先,Filter,也就相当于全连接神经网络中的参数w,当用的Filter是3X3时,这样一个Neural只需要链接9个输入端,只需要9个参数(w)。其次每个Neural共用同一个Filter。
1.3. CNN—Max Pooling是怎样的
将Convolution后的信息,先分组,然后选出每组中最大的数据保留,其他的抛弃,如下图:
Max Pooling之后的数据:
过程总结:经过一次Convolution和Max Pooling之后得到了新的数据,这个总的过程如下图:
1.4. Flatten是怎样的?
将最后得到的信息拉直,得到平的信息,方便输入到全连接神经网络,进行训练。