本文对应的B站地址:https://www.bilibili.com/video/av35087157 知乎文章地址:https://zhuanlan.zhihu.com/p/49184702
卷积神经网络用在计算机视觉领域,是人工智能的一个分支。计算机视觉就是告诉计算机如何理解图像,包括人脸识别,自动驾驶等。不仅可以用于处理图像还可以处理音频,文本,只要数据能变成图像格式,他都能处理。
卷积神经网络大佬李飞飞博士,建立了imgNet网站,发动全世界志愿者进行标签,筛选,整理,然后大家都用这些资源进行训练。
卷积神经网络是一个黑箱(函数),有输入,有输出,输入就是二维的像素阵列(也就是图片),输出就是这个图片是什么(比如有一只猫)。
还是那个图片,经过缩放,旋转,部分扭曲,还是可以识别出来。鲁棒性和抗干扰性比较强。
对于计算机来说,怎么把数字进行特征提取是非常重要的。识别出扭曲图片的新特征,比如中间的x,左上角的绿色框,这都是新图片的特征,可以拿回去跟原图比对,发现相似性。
比如说我们提取了三个特征,如下。这就叫卷积核,或者叫特征提取器。
如果用某个卷积核进行操作,就相当于把原图中包含这种特征的部分提取了出来。卷积核能把原图中跟卷积核一样的特征提取出来。
来说说卷积运算,如下图。黄色在原图上进行扫面,绿色是原图。运算方法是卷积核的每一个小格乘以扫描到的覆盖的原图的绿色小格,最后9个运算结果求和然后除以卷积核的格子数,形成的新矩阵就叫做feature map。
求和的结果除以卷积核的格子数(9),得到的就是扫描到的区域与卷积核的相似程度。如下图就是0.55的相似程度,完全相似就是1.
如果用卷积核对原图整个做一遍扫描,就可以得到下图:
可以看到对角线的部分是1,原图中该位置有跟卷积核一样的特征,所以卷积完之后,就是1.
尝试一下不同的卷积核:
需要注意,这里用的卷积核是原图中包含了的,如果随便整一个卷积核,大概率得到的是乱码。上面说的就是卷积神经网络最重要的一步叫做卷积。
举一个复杂的例子,两组卷积核,原图用红黄蓝三通道,做卷积运算。最后2组卷积核得到2个结果。
如果人脸的几十万个特征,用这些卷积核做运算,计算量是非常大的,人脸识别很明显不允许那么慢。所以为了解决这个问题,需要把图像缩小,这个过程叫做池化。也叫做下采样。它的作用就是把得到的feature map 进行缩小。如下图,那么大的一张图被缩小为2x2.
池化的方式,常见的:max / avg 两种方式。
max pooling 之后依旧保留了对角线的特征。
图像边缘也充满了信息,如果需要提取,则需要用到padding,对边缘进行填充,一般是补0.
上面的矩阵里面可能是因为有负数,我们需要把负数抹成0.因为好运算。这个过程叫做用ReLUs函数激活。不光对卷积有好处,在梯度下降中对别别的函数也是有好处的。
原图经过卷积,抹除0,池化之后,就有了如下这个过程,最中间这个过程就是卷积神经网络了。类似人的思维,先接受外界的感知,触发一个激活信号,然后抓住重点特征,得出结论。
这三个可以任意的排列组合:卷积,relu,池化。如下:
比如识别一个4,对原图进行6个卷积,生成6个feature map。然后进行下采样得到6个小图,对小图再进行卷积,在进行下采样,然后进行2层全连接,然后得到是4。
全连接层要做的是就是把上一步得到的矩阵,排排坐,变成一个一维矩阵。每个位置都有权重,可以投票。
把每个位置的值乘以权重,加起来,就得到了结果,如下图,这个过程是需要训练得到的。
为什么叫全连接呢?是因为结果跟每一个神经元都是相连的。如下图:
全连接也可以放很多层,这就是所说的隐藏层,web案例是2层全连接,如下:
全连接层的权重通过反向传播算法,训练而来,就需要大量的数据集了。将神经网络u预测的结果和真是结果进行比对,得到一个损失函数,目标就是把损失函数降到最低,可以用数学里的求导,导数等于0,找极值。是一层一层把误差反向回去的,所以叫反向传播。最后他自己就会了,用哪些卷积核,全连接的权重是多少。这个过程就叫做机器学习了,卷积核和权重,不是人指定的,而是机器学会的。
最后把误差加起来,然后把它弄到最小,这个过程就是梯度下降了。
当找到损失函数的最小值的时候,我们就认为它成功了。
但是我们总得让他有个初始的参数,也叫超参数,我们事先指定好卷积核的尺寸,数目,然后随机生成一些数字放到卷积核里。(交通大数据:历史均值)。如下图,这个框架是要提前订好的,然后通过训练,得到损失函数的最小值,从而得到最优的模型。
多少层比较合适?什么顺序比较合适,都是人类随意的,这里的可以创新做文章(论文!)
只要数据的结构呈现出类似图像的特征,就可以用它来处理。比如随时间的图像:视频。比如声音,可以转成图像。
如果你的数据,列换一下,还是一个意思,那就不能用卷积神经网络。
卷积神经网络在发现特征,分类图片上,特别有用。这一句话(CNN+聚类算法—上下车点)
补充资料看前面的知乎~