前面花了两篇文章的篇幅,聊了聊图片相关的背景知识。
[Resnet图像识别入门——像素]
[Resnet图像识别入门—— 图像的色彩空间]
就像上一篇文章说的那样:图片是做深度学习任务的原材料,就像是做饭,不了解原材料的特性,怎么能快速高效的做出一顿美味的大餐?
下面开始想聊聊卷积,但是不聊公式,只聊一下卷积这一算法是如何工作的,以及它的一些原理,至于枯燥的公式,留给后面吧。
人脑是怎么记住东西的?
在说卷积之前,先务虚一下,说说AI的记忆。
或许你已经听说过很多AI故事了,比如大名鼎鼎的阿尔法狗大战柯洁。但是,你有没有想过一个问题。阿尔法狗确实是学会了下棋,但是它下棋的记忆到底是什么样的?存在什么地方呢?
高中生物老师教过我们,人脑中有大量的脑神经元。每个脑神经元都可以看做是一个小的记忆体,神经元之间通过树突连接起来。整个大脑的神经元,可以说是一张十分复杂的网络。
人脑处理信息,就是利用这个复杂的网络处理信息,并最终得到一个结果。通过神经元网络,我们才能知道,眼睛看到的是一只猫,还是是一只狗。
稍微简化一下大脑神经元的复杂结构成如下的网络。
每个黑点代表一个神经元脑细胞,每个神经元都有自己负责记忆的东西。
当我们看到一张画着猫的图片的时候,图片信息通过视神经传给大脑神经元,于是,信息到达了最左边一排竖着的黑点(神经元)。
神经元的激活与静止
假如一个黑点(神经元)之前见过猫,那么这个黑点就会把信息往后传,此时神经元处于激活状态。
假如一个黑点从来没见过猫,那么这个黑点(神经元)就啥也不知道,啥也不做,此时神经元处于静止状态。
像不像初中课堂上,老师问了你一个超难的问题,而你不知道的时候,你也只能站着,可怜又无助,啥也不会做?
没错,神经元如果没见过猫,他啥也不会做!
图片的信息就这样,一层一层的通过“见过猫且确信它是一只猫的”神经元往后传递,直到在最后输出一个结果。
这是一只猫。
这个过程叫做大脑的推理。
整个推理过程你应该注意到了一件事:所有的黑点(神经元),都可能是有记忆的,只不过记得东西各有不同,有的认识猫,有的认识狗,就像下面这样。
所有认识猫的神经元都会让信息通过,其他不认识猫的神经元都静止了。但是只要信息能传到最后,人脑最终就可以得出一个结论,这就是一只猫。
那神经元的这些记忆是怎么获取的呢?
当然是训练!人们在日常生活中不断地训练大脑,时刻观察着周围的事物。见得多了,就会了。
训练——人工智能获取记忆
那么计算机又该怎么模拟这个记忆过程呢?
答案很简单:因为计算机只会计算,那就让它计算好了。
如果某个黑点认识猫,有什么办法可以把“这是一只猫”这一信息传递到后面呢?乘以1啊,任何数乘以1都是它自己,一只猫乘以1也还是他自己。
如果某个黑点压根没见过猫,有什么办法可以什么都不做呢?乘以0啊,任何数乘以0都是0,信息也就没了,一只猫乘以零,猫也就没了。
于是乎。在深度学习的网络中,每个黑点(神经元)都有一个与之对应的数字(实际的网络中,不是0或者1这样简单的数字,而是一对复杂的数字,这里仅仅是为了说明示意),这些数字,在深度学习中,我们称之为权值。
神经元可以通过与权值的加权计算来判断是否让某一信息经过神经元,到达下一层。
权值乘以输入的信息(猫),然后经过激活函数去激活(类似于人脑神经元的激活)。
- 如果能成功激活,那么信息就往下传。
- 如果没有成功激活,信息就在此丢失。
当然神经网络中的权值不是简单的0或1,所以经过激活函数计算出来的只是一个概率值,也就是说黑点(神经元)觉得它是一只猫的概率。最终如果得到95%的概率觉的它是一只猫,那基本就是一只猫。
- 这个权值,就是 AI 的记忆。
- 这个权值,就是 AI 在训练的过程中学到的东西:千百万次计算得出的最优解。
- 这个权值,可以保证,只要 AI 在训练过程中看过猫,那么新的猫咪来的时候,猫咪乘以权值有很高的概率能通过激活函数,确保神经元被激活。
为什么可以这么确定呢。
因为 AI 的训练过程早已经模拟了成千上万次“识猫”的过程了。权值就是训练出来的!就像我们的记忆被训练出来的一样!
而卷积这一算法,就天然存在一个记忆体,或者说权值,那就是卷积核。
开始说卷积 | Convolution
首先不要被这个名字吓到了。
不管数学好不好的同学,看到卷积的第一反应,可能是记得有一个卷积公式,貌似可以进行信号处理。 图片
一个代表卷积核的曲线在原始信号曲线上滑来滑去,得到不同的输出。在什么地方学过来着?好像是时频转换的时候,又好像不是。(当然不是!)但是,不用回忆之前的知识,不用管它!
因为,深度学习中的卷积,和信号处理中的卷积,有相似之处,但又不完全一样。深度学习中的卷积,完完全全模拟的,就是人眼看物体的过程!
卷积模拟人眼
上图是深度学习中卷积的示意图。还记得之前说过的么,图片是由像素组成的。
示意图下方的 4x4 的像素方格就是卷积需要处理的图片(模拟人眼观看图片的过程)。示意图上方的 2x2 的像素方格就是卷积的输出(人眼看到图片之后得出的结论)。
那么卷积核在哪?4x4方格上移动的灰色阴影,3x3的像素方格就是卷积核!
可以理解为人眼此时聚焦看到的区域(称之为感受野,人眼的视野),只不过,这个示意图中每次看到的都是一个3x3的像素方格!
而卷积过程,就是用3x3的卷积核,去逐步扫描图片。横着扫完竖着扫。每扫一次,就将逐个像素点的值相乘然后加一起,得到一个输出。
再换个更直观的角度看一眼。卷积,就是这么简单的过程。
不仅如此,我们还可以通过调整卷积核的大小,比如把上图3x3的卷积核扩大到5x5,来控制 “人眼” 看到的图片范围,从而获取到不同的图片信息。
当然,在实际神经网络中,存在这个各种各样的卷积变种。
科学家或工程师们通过设计不同的卷积核以及卷积每次移动的多少等参数,来实现不同的功能。但卷积操作万变不离其宗!
总结一下
这一篇文章主要聊了聊几个概念。
AI 之所以能够记住它所学的东西,关键在于神经网络有权值这一参数的存在,它的存在就类似人脑的记忆。并且,权值和人脑的记忆一样,都是通过大量的实践来训练出来的。
而卷积这一算法,天然就存在一个权值参数,称之为卷积核,人们可以通过设计卷积核的大小,调整希望神经网络“看到”的图片的视野,也叫作感受野,从而不同的卷积获取到不同的信息。
实际上,卷积这一算法,除了本文说的利用“感受野”获取到不同图片区域的信息,从而将图片在长宽两个维度的尺寸缩放之外,还存在channel维度的升降。而这,才是卷积这一算法的核心,称之为特征提取。