卷积神经网络面试题
《卷积神经网络面试题》共 0.4 万字,通篇围绕 标注、架构、面试、Transformer 展开,归在「模型架构与原理」这一层。
适合要跟模型团队对话、得听懂他们在说什么的人
目录骨架(8 节)
- 常见面试题
- 1 卷积神经网络概述
- 2 卷积神经网络的结构
- 3 卷积神网络中的超参数
- 4 感受野 Receptive Field
- 5 CNN总结
- 1.1 什么是卷积?
- 1.2 图像处理中的卷积
目录 · 3 节
常见面试题
- 卷积神经网络概述
- 卷积神经网络的结构
- 卷积神网络中的超参数
- 感受野 Receptive Field
- CNN总结
1 卷积神经网络概述
1.1 什么是卷积?
如果去网上搜什么是“卷积”,可能会看到对于两个连续函数f(x)和g(x),其一维连续卷积为:
但其实不懂这个公式的具体含义,丝毫不影响理解卷积神经网络!本文档不会很详细的去解释什么是卷积、卷积的数学含义,好奇的朋友可以参考知乎的这一页:【知乎】如何通俗易懂地解释卷积?,前几个答案都还不错。
我们只需要知道:在机器学习中,卷积通常用于处理具有局部相关性的数据,例如图像、音频和文本等,就足够了。
1.2 图像处理中的卷积
1.2.1 为什么需要卷积?
• 我们前面用MNIST去训练一个MLP来识别数字的时候,其实就已经在做一个图像处理了。但这里存在一个问题,即全连接层的结构实在是太复杂了。光是上面例子中28*28像素的黑白手写数字,就让我们有13002个参数要去学习。那如果用苹果手机随便拍一张1200万像素、彩色的照片呢(彩色就无法用0~1的灰度来表示了,而需要把一张图片分为三层,分别代表R、G、B)?如果这种时候还用MLP的结构,那模型会复杂到难以想象!
• 为了解决这个问题,一个很自然的想法就是对输入的图片做压缩,从繁多的像素中分区域提取最重要的特征。
1.2.2 图解CNN中的卷积过程
在图像处理中,卷积通常通过在输入图像上滑动一个小的窗口(Sliding Window),称为卷积核或滤波器,对输入图像的像素进行逐点计算。卷积核包含了一组权重参数,它对应于滑动窗口中的每一个位置,通过对输入图像的局部区域进行加权求和来生成输出特征图。参考下图,下图我们对一个55像素的图片,选取了一个33大小的卷积核,以1为步长,对原图片进行了卷积操作,提取出了一个特征图。在下面的案例中,我们采用的卷积核的权重参数为:
;最后我们得到了特征图.
#想象如果我们用一个22的卷积核,其他保持不变;那么最终得到的特征图就是一个44*的矩阵了!*
这种局部计算的方式使得卷积能够捕捉到输入图像的局部特征,例如边缘、纹理和形状等。
1.2.3 定义卷积神经网络
卷积操作在深度学习中被广泛应用于卷积神经网络(Convolutional Neural Networks, CNNs),这是一种包括卷积层和池化层的神经网络,专门用于图像识别、图像生成和图像处理等任务。卷积在CNNs中的作用类似于特征提取器,能够从输入图像中提取有用的特征,并通过后续的神经网络层来进行进一步的处理和分类。
2 卷积神经网络的结构
典型的CNN包括两个部分:
(1)卷积基,由卷积层和池化层的堆栈组成。卷积基的主要目的是由图像生成特征。
(2)分类器,通常是由多个全连接层组成的。分类器的主要目标是基于检测到的特征对图像进行分类。全连接层是其中的神经元与前一层中的所有激活神经元完全连接的层。
在一个CNN输入层、卷积层、池化层、全连接层中,卷积层负责提取特征,池化层负责压缩特征,最后的若干全连接层往往构成一个分类器。(这部分后面我们讲迁移学习的时候会再次提到)
2.1 卷积层 Convolutional Layer
卷积层(Convolutional Layer)是其中的一个主要组件,主要用于从输入数据中提取特征。卷积层通过应用卷积操作对输入数据进行滤波,从而通过学习到的卷积核(也称为滤波器或过滤器)提取出输入数据的局部特征。
- 卷积操作(Convolution):卷积操作是卷积层的核心操作。它通过将卷积核与输入数据进行逐元素相乘,并将相乘的结果进行累加,从而生成卷积特征图(也称为卷积输出或特征映射)。卷积操作可以捕捉输入数据的局部信息,例如边缘、纹理、形状等。
- 激活函数(Activation Function):卷积层通常会在卷积操作之后应用激活函数,对生成的卷积特征图进行非线性变换。常用的激活函数包括ReLU(Rectified Linear Unit)、sigmoid、tanh等,用于引入非线性特性,从而增加网络的表达能力。
填充(Padding):填充是卷积操作中的一种技术,可以在输入数据的周围添加额外的像素或特定的值,从而扩展输入数据的尺寸。填充可以防止在卷积过程中输入数据尺寸的缩小,有助于保留边缘信息、减小特征图的尺寸变化,并且可以改善网络对输入图像边缘区域的处理能力。
- 步长(Stride):步长是卷积操作中的另一种技术,控制卷积核在输入数据上的滑动步长。较大的步长可以减小特征图的尺寸,从而降低计算复杂度,但可能会导致信息的丢失和分辨率的降低;较小的步长可以保留更多的局部信息,但会增加计算复杂度。
