- 作者:老汪软件技巧
- 发表时间:2024-10-07 10:03
- 浏览量:
想搞懂这个问题,需要先了解我们所说的特征指的是什么?然后再了解卷积核是如何学到的特征。
我们一步步来。
1、我们先来理解图像的特征
对于一张原始图像而言,说原始图像是相对于经过卷积处理而言的。
对于卷积处理后的输出的图像,一般我们叫它特征图。而我这里说的“原始图像”指的是神经网络原始输入的图像。
这里找了一张图像。请你仔细观察。
你会发现图像中有一些明显的“意象”,比如红色的帐篷、美女黑色的长发、黄色的火焰。这些描述都是针对某一“物体”进行的描述。
比如,我们可以说美女的长发是“黑色”,那么这里的黑色就是长发的**一种特征,**相对应的,长发还可以有“红色”、“灰色”等等特征。
这种特征我们很常见,通常可以称之为“颜色特征”。比如帐篷的“红色特征”、火焰的“黄色特征”。
除了常见的颜色特征,还有很多其他更符合我们人类理解的特征:比如形状特征、轮廓特征等等。
形状特征就比如上图帐篷的“三角形”特征。
所以,你可以看到,特征可以认为是“一个物体”在某方面的属性值。
对于我们人类而言,某个物体的特征一般是需要我们人类可以用语言描述出来的,比如美女的特征一般有:黑色的长发、苗条的身材、姣好的面容等等。
而对于AI(神经网络模型)而言,某个物体的特征是AI自己可以认识而我们人类可能无法分辨的特征。
因此,你会看到很多时候,卷积输出的特征图有几百(甚至几千)个通道,每个通道代表了这个卷积经过卷积运算学习到的一个特征。
类比于原始输入的 RGB 图像仅有 3 个颜色通道,你可以粗略的认为原始输入图像仅有 3 个最显著的颜色特征(每个特征通道仅有一个颜色分量),而经过卷积计算之后,输出的通道数则有成百上千个,此时卷积学到了成百上千个特征。
好了,了解了什么是特征以及AI学到的特征之后,接下来看看题主重点问到的问题:卷积核是如何学到特征的?
2、卷积计算是如何学到特征的
这里我默认你是知道卷积的运算逻辑的,也默认你懂一些反向传播来更新卷积核参数的知识。
对于卷积核而言,其中的数值在训练过程中一般是初始值,在训练中经过 N 轮次(N 非常大,取决于你的任务和训练数据集)的迭代训练之后,会逐渐收敛到一个稳定的数值。
收敛之后的卷积核参数便可以被冻结下来,模型便可以拿去进行推理。以图像识别任务为例,如果你的模型训练完成,那么你就可以拿着训练好的模型(包括里面所有卷积层中的冻结的卷积核参数)去识别一张图中画的物体是狗还是猫了。
关键问题有两点:
反向传播无需纠结太多,精髓在于梯度,而梯度就是用来更新卷积核的,这个梯度你可以理解为某次前向传播过程中,利用已经学到的“特征”尝试去预测目标时得到的结果与真正目标之间的差距,然后把这个差距反向告诉卷积核,使其朝着差距更小的方向更新。
这样经过 N 轮次的迭代,卷积核学到的特征就非常接近真实图像中已有的特征了,虽然这些特征我们人类可能无法解释清楚,但是AI模型是知道的。
那我们再看看,在正向传播的时候,卷积做了什么事情。
3、卷积做了什么事情
卷积的核心计算逻辑是内积运算,有时也可以称之为是在特征(通道)维度的乘累加运算。
这个运算事实上和矩阵乘法是类似的。
因此,我将带你通过一个简单的内积运算,来探究一下卷积(也可以同样去理解矩阵乘法)在计算过程中做了什么事情。
这个例子我在很多场合都给一些朋友讲过,我认为对理解乘累加运算非常有用。
假设,你是一个鸡尾酒调酒师,家里储存了很多鸡尾酒的原料,有金酒、利口酒、柠檬汁和可乐等等。
今天家里来了 3 位客人,他们分别喜欢喝“自由古巴”、“长岛冰茶”以及“龙舌兰日出”这 3 款鸡尾酒,并向你下了单。
希望你给他们调配出来各自喜欢的鸡尾酒。
巧的是,这 3 款鸡尾酒的原料都是金酒、利口酒、柠檬汁和可乐。
你作为一个调酒师,分分钟就把客人的爱好的鸡尾酒给调出来了。
你是怎么做的呢?你知道配方:
你在调配鸡尾酒的过程中,是按照这个配方来调配的。
这里的原料,比如利口酒和可乐,就是输入资源,配比(比如可乐的 25% )就是赋予该资源的权重。
将相同的原料按照不同的配比混合起来,就得到了不同口味的鸡尾酒。
这种做法,可以抽象一下,写成一个公式:
我们知道矩阵乘法的规则是,,第一行乘以第二列得到第二个值,...,以此类推
上面这种连乘的操作,就可以用矩阵乘法来表示。
左矩阵是一行四列,代表原料。右矩阵是四行三列,每一列代表对应原料的配比。按照矩阵乘法的规则,他们的结果应该是一个一行三列的矩阵,分别代表调配出来的三种鸡尾酒。
矩阵乘法,通过相乘累加的操作,实际上是对资源(鸡尾酒的原料)的整合和再创(创造出了新的口味,如自由古巴)。
如果把输入资源(左侧的一行四列的矩阵)看作是一些特征呢?
那不就相当于对这些特征进行了进一步的融合,得到了新的特征吗?
因此,你可以看到,如果你把左侧输入资源看做原始图像或者卷积的输入特征图,乘号右侧原料的配比看做卷积核中的权值参数,那么等号右侧的结果不就是对输入特征图进行了一次融合操作吗?
可能原来有 N 个特征,经过卷积的运算后,将这 N 个特征融合成了 M 个特征(M 可能大于 N,小于N,等于N)。
因此,卷积的运算,是对卷积输入特征的融合,这是前向传播发生的事情。
那么我们将前向的特征融合和反向传播结合起来,你是不是可以更加清晰的知道卷积是如何学到特征的了呢?
总结一下就是——
前向不断地去融合出新的特征(就像炼丹一样,不断地练出新的丹药),反向传播不断的再去指导你改进你的炼丹水平,直到整个训练过程收敛,你的炼丹技术也就水到渠成了,而这个过程中,AI 模型也就学到了它想学到的东西(特征),尽管这些特征我们人类并不知道代表了什么。
-----------------
如果你想学习 AI ,欢迎来添加我的微信 (vx: ddcsggcs),会有很多好玩的AI技术分享,可以咨询、也可以围观朋友圈呀~