021:为什么是卷积呢?

本文为合集收录,欢迎查看合集/专栏链接进行全部合集的系统学习。

合集完整版请查看这里

卷积算法非常重要,但是为什么是卷积呢?

在进一步学习之前,先看一看神经网络(或者叫一个AI模型)是如何完成一张图片的推理的。

你肯定听说过阿尔法狗大战柯洁的故事,当时新闻一出,不知大家什么反应,反正我是被震撼到了:AI 模型竟然学到了那么多的棋谱,而且人类在AI的面前毫无还手可言。

但是,你有没有想过一个问题:阿尔法狗学会了下棋,它下棋的记忆是什么样的呢,存在什么地方呢?

我们都知道,人脑中是由大量的脑神经元组成的,每个脑神经元都可以看做是一个小的记忆体,神经元之间通过树突连接起来,整个大脑的神经元,可以说是一张十分复杂的网络。

人脑处理信息,就是利用这个复杂的网络处理信息,并最终得到一个结果。通过脑神经元组成的这个复杂的网络,我们才能分辨出眼睛看到的是一只猫还是一只狗。

稍微简化一下大脑神经元的复杂结构成如下的网络。

每个黑点可以代表一个神经元脑细胞,每个神经元脑细胞都有自己负责记忆的东西。

当你看到一张画着猫的图片的时候,图片信息通过视神经传给大脑神经元,于是,信息到达了上图最左侧一排竖着的黑点(神经元)。

神经元的激活

假设,上图左侧其中的一个或多个黑点(神经元)之前见过猫,那么这个黑点就会把信息往后传,此时神经元便处于激活状态。

假如一个黑点从来没见过猫,那么这个黑点(神经元)就什么也不知道,它什么也不做,此时神经元便处于静止状态。

一张画着猫的图片的信息,就这样一层一层通过"见过猫且确信它是一只猫的"神经元往后传递,直到在最后输出一个结果:这是一只猫。

这个过程就是大脑的推理。

整个推理过程你应该注意到了一件事,所有的黑点都可能是有记忆的,只不过记得东西各有不同,有的认识猫,有的认识狗,就像下面这样。

所有认识猫的神经元都会让信息通过,其他不认识猫的神经元都静止,但是只要信息能传到最后,人脑就可以得出一个结论:这就是一只猫。

获取记忆

人工智能模型是怎么模拟这个过程呢?答案很简单:计算机只会计算,那就让计算机进行运算即可。

如果某个黑点认识猫,有什么办法可以把"这是一只猫"的信息传递到后面呢?乘以1,任何数乘以1都是它自己,代表一只猫的信息乘以1也还是它自己。

如果某个黑点从来没见过猫,那有什么办法可以什么都不做呢?乘以0,任何数乘以0都是0,信息也就没了,代表一只猫的信息乘以0,猫的信息也就丢失了。

于是,在深度学习网络中,每个黑点(神经元)都有一个与之对应的数字(实际的网络中,不是0或者1这样简单的数字,而是一些复杂的小数,这里用0和1仅仅是为了更通俗的说明这个问题)。

这些数字,在深度学习模型中被称为模型的权值。

其实这就是类似于之前几节介绍的高斯滤波中的滤波器,用来确定让哪些数据通过,哪些数据不通过。

权值乘以输入的信息(猫),然后经过激活函数去激活(类似于人脑神经元的激活)。如果能成功激活,那么信息就往下传。如果没有成功激活,信息就在此丢失。

就如上面说的,在实际使用时,神经网络中的权值不是简单的0或1,经过激活函数后的输出也是一个概率值。也就是说黑点(神经元)觉得它是一只猫的概率,最终如果得到95%的概率觉的它是一只猫,那基本就是一只猫。

人们见猫的图像见的多了,就认识猫了。同样AI被训练"看"的多了,也会逐渐"认识"猫了,AI的权值就是这么被训练出来的!

说到这,就轮到今天的主角登场了------为什么是卷积算法。

这是因为卷积算法就存在一个天然的记忆体,那就是卷积核。

卷积算法

在深度学习中,卷积算法模拟的就是人眼看物体的过程。

上图是深度学习中卷积运算的示意图,还记得之前介绍的么:图像是由像素组成的。

上面示意图中底层 5x5 的像素方格(蓝色)就是卷积算法需要处理的图片(类比于人眼观察的图片),示意图右侧 3x3 的像素方格就是卷积算法的输出(类比于人眼看完一张图片后捕获到的信息)。

在5x5 的方格上移动的灰色阴影------3x3的像素方格就是卷积核。可以把它理解为人眼此时聚焦看到的区域(称之为卷积核的感受野,人眼的视野),只不过,这个示意图中卷积核每次看到的都是一个 3x3 的像素方格。

而卷积的计算过程,就是用3x3的卷积核,去逐步扫描图片:从左往右,从上到下,横着扫完竖着扫,每扫一次,就将输入图像像素点的值与卷积核中的数值进行相乘,然后全部累加到一起,得到一个输出,就像下面这样:

卷积运算,就是这么简单的过程。

我们可以通过调整卷积核的大小,比如把上图3x3的卷积核扩大到5x5,来控制卷积核"看到"的图片范围,从而获取到不同尺度下的图片信息。

比如在一些检测车道线的神经网络中,由于车道线是长实线,车道线的存在趋近于长方形,因此在这类神经网络中,很多卷积核被设计成1x5或1x7的卷积核,用来更好的识别车道线的形状。

当然,在不同的图像处理任务中,会设计不同大小的卷积核,以适应不同的场景序需求,但万变不离其宗,卷积的计算,就是一些模拟的人眼看物体扫描像素点的过程。

说到这,大概对卷积这一算法有一个初步印象了吧。

这也是为什么在图像处理任务中,卷积算法为什么这么重要,因为它几乎可以完美的模拟人眼看到物体的过程:

首先,局部感知图像(感受野,类似于人眼盯着某一处看)

随后,滑动卷积核以获取全局图像特征(类似于人眼上下打量图像)

最后,卷积还存在一个权值矩阵,也就是卷积核(类似于人脑的记忆)

正因如此,卷积算法处理图像具有天然的优势,而且效果出奇的好。

而人们也在普通卷积的基础上,创造了更多各种各样的卷积变种,后面会继续深入探讨。

我创建了一个《小而精的AI学习圈子》的知识星球,星球上会有非常多高质量的技术专栏分享,同时你也可以在星球向我提问。 在星球你还可以学到很多关于 CV 、大模型以及 AIGC 相关的技术,看到别的同学都在如何学习。不要犹豫,戳下面的链接加入吧,这可能是你学习AI 的道路上非常重要的一次点击呀。 点击这里,我们星球见!

相关推荐
m0_dawn2 小时前
《贪心算法:原理剖析与典型例题精解》
python·算法·职场和发展·贪心算法·蓝桥杯
invincible_Tang2 小时前
贪心算法(题2)最大不相交区间数量
算法·贪心算法
AIzealot无4 小时前
力扣hot100之螺旋矩阵
算法·leetcode·矩阵
兑生4 小时前
力扣面试150 长度最小的子数组 滑动窗口
算法·leetcode·面试
miilue4 小时前
[LeetCode] 链表I — 704#设计链表 | 203#移除链表元素 | 206#反转链表 | 递归法
java·开发语言·c++·算法·leetcode·链表
Tisfy4 小时前
LeetCode 2266.统计打字方案数:排列组合
数学·算法·leetcode·动态规划·题解·排列组合
Joyner20184 小时前
python-leetcode-汇总区间
算法·leetcode·职场和发展
win水4 小时前
数据结构(初阶)(二)----顺序表
c语言·数据结构·算法
万事可爱^5 小时前
算法入门(九)—— 无监督学习介绍与K-Means实战(内附Kaggle实战源码与数据集)
人工智能·学习·算法·机器学习·kmeans
小菜鸟博士5 小时前
大模型学习笔记 - 第一期 - Milvus向量数据库
数据库·笔记·学习·算法·milvus