卷积神经网络 - - Transformer原理篇(三)
前言
前两篇我们先后梳理了神经网络的基本原理与训练技巧:从激活函数、损失函数、梯度下降和反向传播,讲到过拟合、数据增强、正则化与 Dropout,基本上回答了“神经网络如何拟合”和“如何训练得更好”这两个问题。
但此前讨论的网络多为全连接结构,一旦进入图像领域,问题就变得不那么简单:如果把每个像素都作为一个输入,参数量会迅速膨胀,像素与相邻像素之间的空间关系也难以保留。
本篇就从这一困境出发,介绍卷积运算、卷积核以及卷积神经网络的基本结构,并用一个手写数字识别的可视化网站,直观展示卷积层、池化层和全连接层各自的作用。
(本篇内容主要来源于B站UP主“飞天闪客”(BV号:BVNCgVzoEG9),由笔者重新整理。)
目录
1 矩阵
2 卷积
3 卷积神经网络
4 手写数字识别
1 矩阵
这是一个最简单的神经网络,只有一个输入和一个输出。
如果输入变成三个,那么就有三个 w 和三个 x;如果输出变成两个,再加一行公式即可。这里的 w12表示第一个神经元的第二个参数。
不过,在上图中,上面的写法较为复杂,而下面的写法又不便于机器理解。因此,将公式转换为矩阵形式,更有利于让表达式既简洁又实用(具体原理请自学线性代数)。
如果是多层神经网络,层数可以用上标表示:
矩阵运算不仅能把复杂的数学公式转化为简洁明了的矩阵运算,而且对机器擅长的并行运算更友好,能大大加快训练速度。
2 卷积
前面提到的神经网络中,相邻神经元都互相连接,这类网络也叫全连接层(fully connected layer,FC)。
然而,在图像视觉领域,如果把每个像素都作为一个输入,全连接层会导致参数量过于庞大。
而且,把每个像素单独作为输入,无法保留像素与相邻像素之间的关系,不能很好地理解图像的局部模式。如果图片整体平移一个像素,结果就可能完全不同,但这显然是不合理的。
因此,可以对每9个相邻像素的灰度值做如下运算,将对应位置的灰度值与卷积核中的数值相乘后再求和。
这样的运算叫做卷积(convolution)运算,运算中用到的右侧方框叫做卷积核(convolution kernel)。
对于这个卷积核来说,中间的数字为5,即加重像素中心的灰度值;上下左右的数字为-1,即减淡像素上下左右的灰度值;四角的数字为0,即四角的灰度值不变。这样的效果与常见的锐化(sharpen)类似。
当这个卷积运算遍历整个图像后,得到的灰度值就构成了一幅经过锐化后的图像。
3 卷积神经网络
在传统图像处理领域,卷积核的值是已知的;而在卷积神经网络中,卷积核的值是未知的,是需要被训练出来的一组值。
卷积神经网络其实就是将全连接层中的一层改为卷积层,这大大减少了权重参数的数量,同时还能更有效地捕捉局部特征。
由于这样的神经网络看起来仍然比较复杂,可以进一步将示意图简化为长方形方框。
由于卷积层的参数维数仍然较高,通常还会在卷积层后加入池化层(pool layer),对特征进行降维,减少计算量并保留主要特征。
为了应对更复杂的图像,还可以使用多个卷积层、池化层和全连接层。
这种适用于图像识别领域的神经网络结构就叫做卷积神经网络(convolutional neural network)。
卷积神经网络是一类由卷积层、池化层和全连接层组成的深度前馈神经网络,最早由Yann LeCun在1989—1998年间提出。
4 手写数字识别
接下来,我们利用这个网站来直观学习各个层的作用:https://adamharley.com/nn_vis/cnn/3d.html。
这是一个已经训练好的手写数字识别的卷积神经网络。
在左上角的方框中画出数字6,可以看到最下层是我们输入的图像。其上一层是卷积层,共有6个卷积核,对图像特征进行初步识别;再上一层是池化层,对卷积层的特征进行降维;接下来上面一层又是卷积层,共有16个卷积核,对池化层的结果进行特征识别;再上一层是池化层,对应卷积核进行进一步降维;然后连接两层全连接层;最上一层是输出层。可以看到6最亮,因此预测结果是6。
卷积神经网络非常易于可视化,我们可以通过卷积核来判断网络识别到了哪些特征,这也是其魅力所在。
感兴趣的朋友还可以通过以下网站进一步探索:https://felixzhang00.github.io/DL/mnist/
生物学AI模型构建讨论QQ群:1121159210
作者:bioinforiver(CSDN同名)
2026年10月23日
本系列内容来源于网络,仅用于分享学习,不得用于任何商业用途。
参考文献:
1.【闪客】一小时从函数到 Transformer,飞天闪客,2025年7月21日,BVNCgVzoEG9