在传统的神经网络中,好比多层感知机(MLP),其输入一般是一个特征向量,须要人工设计特征,而后将这些特征计算的值组成特征向量,在过去几十年的经验来看,人工找到的特征并非怎么好用,有时多了,有时少了,有时选择的特征根本就不起做用(真正起做用的特征在浩瀚的未知里面)。这就是为何在过去卷积神经网络一直被SVM等完虐的缘由。算法
若是有人说,任何特征都是从图像中提取的,那若是把整副图像做为特征来训练神经网络不就好了,那确定不会有任何信息丢失!那先不说一幅图像有多少冗余信息,单说着信息量就超级多。。。网络
假若有一幅1000*1000的图像,若是把整幅图像做为向量,则向量的长度为1000000(10^6)。在假如隐含层神经元的个数和输入同样,也是1000000;那么,输入层到隐含层的参数数据量有10^12,什么样的机器能训练这样的网络呢。因此,咱们还得下降维数,同时得以整幅图像为输入(人类实在找不到好的特征了)。因而,牛逼的卷积来了。接下来看看卷积都干了些啥。学习
卷积层是用一个固定大小的矩形区去席卷原始数据,将原始数据分红一个个和卷积核大小相同的小块,而后将这些小块和卷积核相乘输出一个卷积值(注意这里是一个单独的值,再也不是矩阵了)。人工智能
卷积的本质就是用卷积核的参数来提取原始数据的特征,经过矩阵点乘的运算,提取出和卷积核特征一致的值,若是卷积层有多个卷积核,则神经网络会自动学习卷积核的参数值,使得每一个卷积核表明一个特征。spa
卷积首先要定义一个卷积核,卷积核一般是一个正方形,长宽就是卷积核的尺寸,好比(2,2)的卷积核,表示用:设计
[w1,w2blog
w3,w4]数学
大小的卷积核来对原始数据进行卷积。卷积核的权重参数w1-w4就是该卷积核的特征值,卷积结果是输入数据神经网络
首先咱们须要知道什么是卷积计算,它实际上是一种简单数学运算,有两个步骤:一个是矩阵内积乘法,另外一个是将内积乘法的结果进行全加。im
(1)矩阵内积乘法
矩阵的内积乘法很是简单,就是把两个相乘的矩阵,相同位置的元素进行乘法运算,这个时候会获得一个新的矩阵(在这里咱们须要注意一下,卷积是在做矩阵内积乘法,而不是矩阵乘法)。
(2)全加计算
这个新矩阵的所有值会进行相加,而后会获得一个值,这个值才是卷积运算的结果。
二、特征图像与卷积核
对于实际的卷积过程当中,它一方面有输入图像,这些图像被称做是特征图像(注:卷积神经网络中,原始的输入是真实的图像,通过卷积后会生成特征图像),另外一方面还须要有卷积核。
卷积核的值是人为设定的,它是能够调节的,在实际的卷积神经网络中,卷积核的值就是网络的参数。对卷积网络进行训练,就是在调节这些卷积核心的参数。在实际中通常不会用太大的卷积核,常见的卷积核大小有3*3,5*5,1*1的大小。
特征图像和卷积核都是以矩阵的形式存在,所以它们能够进行卷积计算。卷积计算的输入不只能够是图像,还能够是其它的二维矩阵信息(固然还有一维和三维的卷积,这里就很少介绍了)。卷积核首先会对特征图像的第一个区域进行卷积运算,这个卷积计算的结果,会做为输出特征图像上的一个点,以下图所示。
上图中在卷积以后,将像素图中相连的4个像素提取成了一个像素,通俗一点什么意思?读者能够好好体会一下:将一个小区域的图像中的特征提取成一个值来表示。
三、什么是池化
池化(Pooling):也称为欠采样或下采样。主要用于特征降维,压缩数据和参数的数量,减少过拟合,同时提升模型的容错性。好比以(2,2)做为一个池化单位,其含义就是每次将2*2=4个特征值根据池化算法合并成一个特征值,经常使用的池化算法有如下几种:
经过池化层,使得本来4*4的特征图压缩成了2*2,从而下降了特征维度。
最后小结一下:
(1)卷积是从一小块图像区域中提取出特征值来表示这一小块区域的内在特征(或者说内在含义)。
(2)池化是将相临的多个特征用一个特征来代替,压缩特征维度。
卷积和池化是图像人工智能应用场景中绕不过去的两种基本处理过程,因此咱们仍是先了解他俩的内在含义吧。