填坑——经典网络结构——AlexNet
问题1,卷积是什么?作用什么?
卷积(Convolution)是一种数学运算,常用于信号处理和图像处理领域。在信号处理中,卷积用于将输入信号与卷积核(也称为滤波器)进行运算,产生输出信号。
卷积的作用有以下几个方面:
- 信号滤波:卷积可以用于信号滤波,通过将输入信号与合适的卷积核进行卷积运算,可以实现对信号的滤波操作。滤波可以用于去除信号中的噪声、平滑信号、强调信号中的某些频率成分等。
- 特征提取:在图像处理中,卷积可以用于特征提取。通过将图像与不同的卷积核进行卷积运算,可以提取出图像中的不同特征,例如边缘、纹理、角点等。这些特征可以用于图像识别、目标检测和图像处理中的其他任务。
- 信号压缩:卷积可以用于信号压缩。通过将输入信号与适当的卷积核进行卷积运算,可以将信号表示转换为另一种表示形式,通常具有更紧凑的表示。这种表示形式可以用于信号压缩和数据压缩。
- 卷积神经网络:卷积神经网络(Convolutional Neural Network,CNN)是一种基于卷积运算的深度学习模型,广泛应用于图像识别、计算机视觉和自然语言处理等领域。卷积在 CNN 中用于提取图像或文本的特征,并通过多层卷积和池化操作来实现对输入数据的高级表示和分类。如果输入数据为图片,那么卷积层的作用就是提取图片中的信息,这些信息被称为图像特征,这些特征是由图像中的每个像素通过组合或者独立的方式所体现,比如图片的纹理特征、颜色特征、空间特征。
卷积的操作过程:
请参考参考博客。image的图片大小为5x5,卷积核为3x3,输出的特征的大小为3x3
特征图计算公式:一般情况下,输入的图片矩阵以及后面的卷积核,特征图矩阵都是方阵,这里设输入矩阵大小为w,卷和核大小为k,步幅为s,补零层数为p,则卷积后产生的特征图大小计算公式为:W = (w+2p-k)/s + 1. 比如说上面5x5的图片与3x3的卷积核进行卷积操作,特征图的大小为: W = (5 + 2*0 -3)/1 + 1 =3
特征图相对与下一层的卷积层是图片。
卷积核的参数量计算,卷积核尺寸: K, 前一层的通道数:Cin 当前层的卷积核的个数: Cout 。单个卷积核的参数量: params kernel = Cin x K x K, 有
假设有卷积神经网络,输入为大小224224的RGB图,第一层为卷积层,有12个大小为55的卷积核,填充为2,步长为4。该层参数共有( 912 )个。计算过程权重参数量:每个卷积核有 75 (5 x 5 x 3)个权重参数,共有12 个卷积核,所以权重参数量为 75×12=900.偏置参数量:每个卷积核有一个偏置项,共有 12 个卷积核,所以偏置参数量为 12。
执行卷积的过程的动态图
关于卷积其实还有很多问题,比如说输入一张(3x255x255)的图片,输入后经过卷积后输出的特征图大小为: 要考虑卷积核的大小(kernel size ) 步幅(stride),边界填充(padding) 计算公式入上式所示。
。1x1卷积为什么可以实现升维和降维。)
1x1 卷积可以实现升维和降维的原因在于:(通道数可以自定义数量)
升维:当输入特征图的通道数较少时,可以使用 1x1 卷积来增加通道数,从而增加网络的表示能力。这是因为 1x1 卷积可以将输入特征图中的每个通道与卷积核中的权重相乘并求和,从而生成一个新的特征图。
降维:当需要减少特征图的通道数时,可以使用 1x1 卷积并调整输出通道数为所需的值。通过调整卷积核中的输出通道数,可以实现特征图通道数的降维。
问题2,池化是什么?作用是什么?
池化(Pooling)是一种常用的操作,通常与卷积神经网络(CNN)结合使用。池化操作通过对输入数据的局部区域进行聚合或采样来减小数据的空间尺寸,从而减少参数数量、降低计算量,并提取出输入数据的重要特征。
池化的作用有以下几个方面
- 降采样:池化操作可以减小输入数据的空间尺寸,从而降低后续层的计算复杂度。通过降低数据的维度,池化可以在保留重要特征的同时减少冗余信息,提高计算效率。
- 平移不变性:池化操作具有一定的平移不变性。在图像处理中,通过对局部区域进行池化操作,可以使得输入图像在平移、旋转和缩放等变换下具有一定的不变性。这对于图像识别和目标检测等任务是有益的。
- 特征提取:池化操作可以提取输入数据的重要特征。通过对局部区域进行池化,池化操作会选择区域中的最大值(最大池化)或平均值(平均池化)作为输出值,从而提取出输入数据的显著特征。这有助于减少数据的维度,并保留重要的特征信息。
- 减少过拟合:池化操作可以在一定程度上减少过拟合。通过减小数据的空间尺寸,池化操作可以降低模型的参数数量,从而减少过拟合的风险。此外,池化操作还可以通过丢弃一些冗余信息来提高模型的泛化能力。
池化的种类
- 最大池化(Max Pooling):最大池化是一种常见的池化操作。在最大池化中,输入数据的局部区域被分割成不重叠的块,然后在每个块中选择最大值作为输出。最大池化可以提取出输入数据的显著特征,同时减小数据的空间尺寸。
- 平均池化(Average Pooling):平均池化是另一种常见的池化操作。在平均池化中,输入数据的局部区域被分割成不重叠的块,然后计算每个块中元素的平均值作为输出。平均池化可以平滑输入数据并减小数据的空间尺寸。
- 自适应池化(Adaptive Pooling):自适应池化是一种具有灵活性的池化操作。与最大池化和平均池化不同,自适应池化不需要指定池化窗口的大小,而是根据输入数据的尺寸自动调整池化窗口的大小。这使得自适应池化可以适应不同尺寸的输入数据。
- 全局池化(Global Pooling):全局池化是一种特殊的池化操作,它将整个输入数据的空间尺寸缩减为一个单一的值或向量。全局池化可以通过对输入数据的所有位置进行池化操作,从而提取出输入数据的全局特征。常见的全局池化有全局平均池化(Global Average Pooling)和全局最大池化(Global Max Pooling)。
问题3,全连接是什么?作用是什么?
的是神经网络中的一种连接方式,也称为密集连接(dense connection)。在全连接中,每个神经元都与前一层的所有神经元相连。这意味着前一层的每个神经元的输出都将作为输入传递给下一层的每个神经元。
全连接层的作用是将输入数据进行线性变换,并应用激活函数来产生输出。这种连接方式允许神经网络学习输入数据中的复杂关系,从而实现各种任务,例如分类、回归等。
请问如上DNN神经网络共有几层: 5层
请问该DNN神经网络用来解决二分类问题,那么最后一层的激活函数是 Sigmoid
请问如上所示的DNN神经网络的第一个隐藏层有多少个参数: 2 x 3 + 3 = 9 (前一层输入量 乘以 后一层的神经元数量 + 偏执项。)
问题4,AlexNet论文使用的loss函数是什么?
CrossEntropy交叉损失函数:
问题5,AlexNet论文中使用的梯度优化方式是什么,梯度怎么实现下降?
AlexNet论文中使用的梯度优化算法是随机梯度下降(Stochastic Gradient Descent,SGD)。在训练过程中,SGD通过计算损失函数关于网络参数的梯度,并根据该梯度更新参数,以使损失函数最小化。
SGD参考博客
问题6,AlexNet论文中使用的评价指标是什么?
错误率 : ACC 的相反数,计算方法为1-ACC
问题7,AlexNet中的创新点是什么?
- ReLU激活函数的引入,采样非线性单元(ReLU)的深度卷积神经网络训练时间要比tanh单元要快几倍。而时间开销是进行模型训练过程中的很重要的因数。同时ReLU有效的防止了过拟合的现象。
- 层叠池化操作,以往池化的大小PoolingSize与步长stride一般是相等的,例如:图像大小为256*256,PoolingSize=2×2,stride=2,这样可以使图像或是FeatureMap大小缩小一倍变为128,此时池化过程没有发生层叠。但是AlexNet采用了层叠池化操作,即PoolingSize > stride。这种操作非常像卷积操作,可以使相邻像素间产生信息交互和保留必要的联系。论文中也证明,此操作可以有效防止过拟合的发生。
- Dropout操作, Dropout操作会将概率小于0.5的每个隐层神经元的输出设为0,即去掉了一些神经节点,达到防止过拟合。那些“失活的”神经元不再进行前向传播并且不参与反向传播。这个技术减少了复杂的神经元之间的相互影响。在论文中,也验证了此方法的有效性。
- 网络层数更深,与原始的LeNet相比,AlexNet网络结构更深,LeNet为5层,AlexNet为8层。在随后的神经网络发展过程中,AlexNet逐渐让研究人员认识到网络深度对性能的巨大影响。当然,这种思考的重要节点出现在VGG网络(下一篇博文VGG论文中将会讲到)。
问题8,优化函数的具体实现是什么?
请参考博客:
以逻辑回归为例讲的梯度下降算法矩阵化
结合看
代码实现
问题10,什么是过拟合合和欠拟合?
过拟合:过拟合指的是模型在训练数据上表现良好,但在未见过的测试数据上表现较差的情况。过拟合通常发生在模型过于复杂或训练数据过少的情况下。当模型过度学习了训练数据中的噪声或特定的样本特征时,会导致过拟合问题。在过拟合的情况下,模型可能会过度拟合训练数据,导致泛化能力较差,无法很好地适应新的、未见过的数据。
欠拟合:欠拟合指的是模型在训练数据上表现不佳,无法捕捉数据中的足够的信息和结构,导致模型过于简单或不够复杂。欠拟合通常发生在模型复杂度过低或训练数据量不足的情况下。在欠拟合的情况下,模型可能无法捕捉数据中的关键特征或模式,导致训练误差和测试误差都较高。
参考博客
问题9,论文中怎么证明,层叠池化可以有效防止过拟合的发生?
验对比:作者可能会设计实验,对比使用层叠池化和不使用层叠池化的模型在同一数据集上的性能表现。通过比较两种模型的训练误差和测试误差,可以观察到使用层叠池化的模型是否在测试数据上表现更好,从而证明其能够有效防止过拟合。
交叉验证:作者可能会使用交叉验证来评估模型的泛化能力。通过在不同的训练集和测试集上多次进行实验,可以更客观地评估模型的性能,并观察使用层叠池化的模型是否具有更好的泛化能力。
可视化分析:作者可能会对模型的训练过程进行可视化分析,比如绘制训练损失曲线和验证损失曲线。通过观察损失曲线的变化趋势,可以了解模型是否存在过拟合问题,并观察是否使用层叠池化的模型更加稳定。
问题10, softMax的机制是怎么样的?
Softmax函数是一种常用的激活函数,通常用于多分类问题中的输出层。Softmax函数可以将一个具有任意实数值的向量转换成一个概率分布,使得各个元素的值都在 (0, 1) 范围内,并且所有元素的和为1。
问题15,Dropout的运行机制是什么,论文中怎么证明他们有效(理论证明和实验证明)?
Dropout是一种常用的正则化技术,用于减少神经网络的过拟合现象。其运行机制如下:
训练阶段:在每次训练迭代时,以概率 p 将神经网络中的某些神经元(或者称为节点)临时从网络中删除(置为零)。这样,在每次迭代中,都会随机删除一部分神经元,从而导致每次迭代得到的网络结构都不同。
预测阶段:在预测阶段,不再使用Dropout,而是使用所有的神经元,但需要对每个神经元的输出值乘以 p,以保持期望的输出值不变。
问题16, 什么是超参数?
超参数(Hyperparameters)是机器学习模型训练过程中的配置参数,其值不能通过训练过程自动学习,而是需要人工设置。与模型的参数(例如权重和偏置)不同,超参数通常用于控制模型的结构、学习过程的行为和性能调优。
一些常见的超参数包括:
学习率(Learning Rate):用于控制每次参数更新的步长。
迭代次数(Number of Iterations/Epochs):训练模型时数据集遍历的次数。
批量大小(Batch Size):每次迭代中用于更新参数的样本数量。
网络结构参数:例如隐藏层的数量、每个隐藏层的神经元数量、卷积核大小等。
正则化参数:用于控制模型的复杂度,例如L1和L2正则化的权重。
优化算法参数:例如动量(momentum)、adam的参数等。
损失函数参数:例如softmax交叉熵的参数、权重类别平衡等。
问题17, 什么是监督学习和无监督学习,半监督学习?
监督学习(Supervised Learning)是一种机器学习任务,其目标是从有标签的数据中学习出一个输入到输出的映射关系,即从输入数据预测出相应的输出标签。在监督学习中,训练数据包括了输入和对应的输出标签,模型通过学习输入和输出之间的关系来进行预测。典型的监督学习任务包括分类和回归。
无监督学习(Unsupervised Learning)是一种机器学习任务,其目标是从没有标签的数据中学习出数据的内在结构或者特征表示,而无需事先给定标签信息。在无监督学习中,训练数据只包括输入数据,没有对应的输出标签。无监督学习可以用于聚类、降维、异常检测等任务。
半监督学习(Semi-Supervised Learning)是介于监督学习和无监督学习之间的一种学习方式,其目标是利用少量有标签数据和大量无标签数据来训练模型。在半监督学习中,训练数据同时包括有标签的数据和无标签的数据。半监督学习可以通过结合监督学习和无监督学习的方法,利用无标签数据的信息来提升模型性能,尤其在标注数据有限或者成本较高的情况下具有重要意义。