1、当在卷积神经网络中加入池化层(pooling layer)时,平移变换的不变性会被保留,是吗?
正常答案: C
A
不知道
B
看情况
C
是
D
否
平移变换不变性的概念
平移变换不变性指的是当输入图像发生小范围的平移时,模型的输出结果不会发生改变。例如,在图像分类任务中,一张猫的图片在图像中稍微向左或向右移动了一些像素,模型仍然能够正确地将其分类为猫。
池化层的工作原理
池化层通常有最大池化(Max Pooling)和平均池化(Average Pooling)等常见类型,以最大池化为例,它会在输入特征图上划分出多个不重叠的区域(池化窗口),然后对每个区域内的元素取最大值作为该区域的输出。
池化层如何保留平移变换不变性
- 局部特征聚合:池化层通过对局部区域进行聚合操作(如取最大值或平均值)来减少特征图的维度。当输入图像发生小范围的平移时,只要特征(如边缘、纹理等)仍然落在池化窗口内,池化操作的输出就不会改变。
- 例如,假设在一个2x2的最大池化窗口中,原始输入区域的值为[[1, 2], [3, 4]],最大池化的输出为4。如果图像发生小范围平移,使得这个特征移动到相邻的2x2区域,只要4仍然在新的池化窗口内,最大池化的输出依然是4。
- 忽略位置信息:池化层只关注局部区域内的统计信息(最大值或平均值),而不关心这些值具体出现在区域内的哪个位置。这使得模型对输入图像的局部平移具有一定的鲁棒性,从而保留了平移变换的不变性。
2、考虑以下问题:假设我们有一个5层的神经网络,这个神经网络在使用一个4GB显存显卡时需要花费3个小时来完成训练。而在测试过程中,单个数据需要花费2秒的时间。 如果我们现在把架构变换一下,当评分是0.2和0.3时,分别在第2层和第4层添加Dropout,那么新架构的测试所用时间会变为多少?
正确答案: C
A
少于2s
B
大于2s
C
仍是2s
D
说不准
在架构中添加Dropout这一改动仅会影响训练过程,而并不影响测试过程。
测试时间分析
Dropout是一种在神经网络训练过程中用于防止过拟合的技术,它通过以一定概率随机“丢弃”神经元来实现。在测试阶段,Dropout并不会起作用,所有的神经元都会被使用,网络只是单纯地进行前向传播计算输出。所以添加Dropout并不会影响测试时单个数据的计算量和计算流程,因此测试时间仍然是2秒。
训练时间分析
如果改成训练过程,新架构的训练时间会大于3小时。
因为添加Dropout后,在每次训练的前向传播过程中,都需要按照设定的概率随机决定哪些神经元要被“丢弃”,这额外增加了计算量 。并且在反向传播更新参数时,也需要考虑被“丢弃”神经元的情况。所以相比于原架构,添加Dropout后的新架构在训练时的计算量增大,花费的训练时间也会变长。
3、深度学习中的激活函数需要具有哪些属性?()
正确答案:ABD
A
计算简单
B
非线性
C
具有饱和区
D
几乎处处可微
神经网络中激活函数的属性:
- 非线性:
即导数不是常数。这个条件是多层神经网络的基础,保证多层网络不退化成单层线性网络。这也是激活函数的意义所在。 - 几乎处处可微:
可微性保证了在优化中梯度的可计算性。保证在反向传播算法中能计算梯度,使模型可利用梯度信息进行参数更新,实现基于梯度的优化算法,如梯度下降法等。 - 计算简单:
降低模型训练和推理的计算成本,提高计算效率,减少计算资源消耗和训练时间,提升模型的实用性和可扩展性。
非线性函数有很多。极端的说,一个多层神经网络也可以作为一个非线性函数,类似于Network In Network中把它当做卷积操作的做法。但激活函数在神经网络前向的计算次数与神经元的个数成正比,因此简单的非线性函数自然更适合用作激活函数。这也是ReLU之流比其它使用Exp等操作的激活函数更受欢迎的其中一个原因。 - 非饱和性(saturation):
饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题。最经典的例子是Sigmoid,它的导数在x为比较大的正值和比较小的负值时都会接近于0。更极端的例子是阶跃函数,由于它在几乎所有位置的梯度都为0,因此处处饱和,无法作为激活函数。ReLU在x>0时导数恒为1,因此对于再大的正值也不会饱和。但同时对于x<0,其梯度恒为0,这时候它也会出现饱和的现象(在这种情况下通常称为dying ReLU)。Leaky ReLU和PReLU的提出正是为了解决这一问题。 - 单调性(monotonic):
即导数符号不变。这个性质大部分激活函数都有,除了诸如sin、cos等。个人理解,单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛。
6. 输出范围有限:
有限的输出范围使得网络对于一些比较大的输入也会比较稳定,这也是为什么早期的激活函数都以此类函数为主,如Sigmoid、TanH。但这导致了前面提到的梯度消失问题,而且强行让每一层的输出限制到固定范围会限制其表达能力。因此现在这类函数仅用于某些需要特定输出范围的场合,比如概率输出(此时loss函数中的log操作能够抵消其梯度消失的影响)、LSTM里的gate函数。 - 接近恒等变换(identity):
即约等于x。这样的好处是使得输出的幅值不会随着深度的增加而发生显著的增加,从而使网络更为稳定,同时梯度也能够更容易地回传。这个与非线性是有点矛盾的,因此激活函数基本只是部分满足这个条件,比如TanH只在原点附近有线性区(在原点为0且在原点的导数为1),而ReLU只在x>0时为线性。这个性质也让初始化参数范围的推导更为简单。这种恒等变换的性质也被其他一些网络结构设计所借鉴,比如CNN中的ResNet和RNN中的LSTM。 - 参数少:
大部分激活函数都是没有参数的。像PReLU带单个参数会略微增加网络的大小。还有一个例外是Maxout,尽管本身没有参数,但在同样输出通道数下k路Maxout需要的输入通道数是其它函数的k倍,这意味着神经元数目也需要变为k倍;但如果不考虑维持输出通道数的情况下,该激活函数又能将参数个数减少为原来的k倍。
4、假设我们想估计A和B这两个参数,在开始状态下二者都是未知的,但如果知道了A的信息就可以得到B的信息,反过来知道了B也就得到了A。可以考虑首先赋予A某种初值,以此得到B的估计值,然后从B的当前值出发,重新估计A的取值,这个过程一直持续到收敛为止,该算法是( )的算法思想。
正确答案:C
A
极大似然法
B
朴素贝叶斯分类器
C
EM算法
D
贝叶斯决策论
- 选项A:极大似然法是在已知样本分布和样本观测值的情况下,寻找使得似然函数(样本出现概率)最大的参数值,和题目中通过迭代相互估计参数的思想不同,所以A选项错误。
- 选项B:朴素贝叶斯分类器基于贝叶斯定理和特征条件独立假设,用于分类任务,是根据先验概率和条件概率计算后验概率来分类,并非这种相互迭代估计参数的方式,所以B选项错误。
- 选项C:EM算法(期望最大化算法)是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计。在本题中,A和B可以看作相互关联的“隐变量”,先对A赋初值估计B,再根据B重新估计A,不断迭代直至收敛,符合EM算法的思想,所以C选项正确。
- 选项D:贝叶斯决策论是在概率框架下,基于先验概率和类条件概率,利用贝叶斯公式计算后验概率,以最小化错误率或风险进行决策,与题目中描述的算法思想不相符,所以D选项错误。
5、下列说法不正确的是( )
正确答案为B。
A
梯度下降法是利用当前位置的负梯度作为搜索方向的方法
B
批量梯度下降和随机梯度下降相比,批量梯度下降优势是对于大规模样本效率很高
C
牛顿法和梯度下降法相比,一个劣势是求解复杂,一个优势是收敛速度加快
D
共轭梯度法仅需利用一阶导数的信息,但是收敛速度高于梯度下降法
解析
- 选项A:梯度下降法的核心原理就是沿着当前点的负梯度方向进行搜索,以找到函数的最小值,因为负梯度方向是函数值下降最快的方向,该选项说法正确。
- 选项B:批量梯度下降在更新参数时需要使用整个训练数据集来计算梯度,当面对大规模样本时,计算量巨大,计算成本高,效率较低。而随机梯度下降每次更新参数只使用一个样本,在处理大规模样本数据时具有更高的效率和更快的收敛速度。因此批量梯度下降在大规模样本下并不具有效率高的优势,该选项说法错误。
- 选项C:牛顿法需要计算目标函数的二阶导数及其逆矩阵,计算过程较为复杂,尤其是在高维数据和复杂函数的情况下,计算量和难度都会显著增加。但牛顿法具有二次收敛性,在接近最优解时收敛速度很快,相比之下梯度下降法的收敛速度较慢,该选项说法正确。
- 选项D:共轭梯度法是一种用于求解线性方程组或优化问题的迭代算法,它只需要利用目标函数的一阶导数信息,就可以在迭代过程中逐步找到共轭方向,从而实现快速收敛,其收敛速度通常比梯度下降法要快,该选项说法正确。
6、以下方法属于集成方法的是()
正确答案为ABCD。
A
bagging
B
stacking
C
blending
D
boosting
集成学习是一种机器学习技术,它将多个基学习器组合在一起,以获得比单个学习器更好的性能。Bagging、Stacking、Blending和Boosting都属于集成方法,以下是具体介绍:
- Bagging:即自助聚合(Bootstrap Aggregating),它从原始训练数据集通过有放回抽样构建多个不同的子数据集,然后在每个子数据集上训练一个基学习器,最后将这些基学习器的预测结果进行综合,如对分类任务通常采用投票法,对回归任务常采用平均法来得到最终的预测结果。随机森林就是基于Bagging的一种典型集成学习算法。
- Stacking:是一种分层的集成学习方法,它使用多个不同的基学习器对原始数据进行训练,然后将这些基学习器的输出作为新的特征,再使用一个元学习器对这些新特征进行学习和预测。通常会将数据集划分为训练集和测试集,在训练集上训练基学习器,用训练好的基学习器对测试集进行预测,得到的预测结果作为元学习器的输入特征,元学习器再根据这些特征进行最终的预测。
- Blending:与Stacking类似,也是将多个基学习器的结果进行组合,但Blending通常是将数据集简单地划分为两部分,一部分用于训练基学习器,另一部分用于生成用于训练元学习器的数据。基学习器在训练集上训练后,直接对留出的那部分数据进行预测,将这些预测结果作为元学习器的输入,训练元学习器进行最终的预测。
- Boosting:是一种迭代的集成学习方法,它从初始训练数据集开始,每次训练一个基学习器,然后根据上一轮基学习器的预测结果调整样本的权重,使得被上一轮基学习器错误分类的样本在本轮训练中得到更多的关注,依次类推,不断训练基学习器并调整样本权重,最后将所有基学习器进行加权组合得到最终的预测结果。Adaboost、GBDT、XGBoost等都是基于Boosting的算法。
7、以下说法正确的是()
正确答案为 D
A
增加模型复杂度,模型在测试集上的准确率就能更好
B
L2正则化的解通常是稀疏的,L1正则化可以使得参数趋向于更平滑
C
对于PCA,我们应该选择使得模型具有最小variance的主成分
D
每次使用K-means算法得到的聚类结果可能会不一样
- 选项A:增加模型复杂度并不一定能使模型在测试集上的准确率更好。当模型复杂度增加时,可能会出现过拟合现象,即模型在训练集上表现很好,但在测试集上的泛化能力下降,准确率反而降低。只有在合适的范围内增加模型复杂度,才可能提高模型的性能,该选项说法错误。
- 选项B:L1正则化的解通常是稀疏的,即会使很多参数变为0,起到特征选择的作用;而L2正则化可以使得参数趋向于更平滑,它是通过惩罚参数的平方和来实现的,会使参数值变小但不一定为0,该选项说法错误。
- 选项C:对于主成分分析(PCA),我们应该选择使得模型具有最大方差的主成分,而不是最小方差。因为方差越大,说明该主成分所包含的原始数据的信息越多,能够更好地代表原始数据,该选项说法错误。
- 选项D:K-means算法是基于距离的聚类算法,它的聚类结果依赖于初始聚类中心的选择。由于初始聚类中心通常是随机选择的,所以每次运行K-means算法得到的聚类结果可能会不一样,该选项说法正确。
8、在测试一假设h时,发现在一包含n=1000个随机抽取样例的样本s上,它出现r=300个错误,计算Errors(h)的标准差( )
正确答案:A
A
0.0145
B
0.145
C
1.45
D
14.5
已知样本数量 n = 1000 n = 1000 n=1000,错误数量 r = 300 r = 300 r=300,根据错误率的计算公式 p = r n p=\frac{r}{n} p=nr,可得 p = 300 1000 = 0.3 p=\frac{300}{1000} = 0.3 p=1000300=0.3。
将 p = 0.3 p = 0.3 p=0.3, n = 1000 n = 1000 n=1000代入标准差公式 p ( 1 − p ) n \sqrt{\frac{p(1 - p)}{n}} np(1−p),即:
0.3 × ( 1 − 0.3 ) 1000 = 0.3 × 0.7 1000 = 0.21 1000 = 0.00021 ≈ 0.0145 \sqrt{\frac{0.3\times(1 - 0.3)}{1000}}=\sqrt{\frac{0.3\times0.7}{1000}}=\sqrt{\frac{0.21}{1000}}=\sqrt{0.00021} \approx 0.0145 10000.3×(1−0.3)=10000.3×0.7=10000.21=0.00021≈0.0145
补充
这可以看作是一个二项分布的问题,即样本中每个样本点只有“正确”和“错误”两种结果。对于二项分布,其方差公式为 V a r ( X ) = n p ( 1 − p ) Var(X)=np(1 - p) Var(X)=np(1−p),其中 n n n是试验次数(这里即样本数量), p p p是每次试验中某一结果发生的概率 。
将 n = 1000 n = 1000 n=1000, p = 0.3 p = 0.3 p=0.3, 1 − p = 0.7 1 - p = 0.7 1−p=0.7代入公式 V a r ( X ) = n p ( 1 − p ) Var(X)=np(1 - p) Var(X)=np(1−p),可得:
V a r ( X ) = 1000 × 0.3 × 0.7 = 210 Var(X)=1000×0.3×0.7 = 210 Var(X)=1000×0.3×0.7=210
所以,在这种情况下的方差是210。
9、.BatchNorm 层对于 input batch 会统计出 mean 和 variance 用于计算 EMA。如果input batch 的 shape 为(B, C, H, W),统计出的 mean 和 variance 的 shape 为: ()
A
B * 1 * 1 * 1
B
1 * C * 1 * 1
C
B * C * 1 * 1
D
1 * 1 * 1 * 1
正确答案:B
人话:批量归一化层会针对输入批次(input batch)统计出均值(mean)和方差(variance),用于计算指数移动平均(EMA)。如果输入批次的形状为 (B, C, H, W),那么统计出的均值和方差的形状是:( )
-
回顾BatchNorm层的原理
在BatchNorm层中,对于输入形状为 ( B , C , H , W ) (B, C, H, W) (B,C,H,W)的数据,其中 B B B表示批量大小(batch size), C C C表示通道数(number of channels), H H H表示特征图的高度(height), W W W表示特征图的宽度(width)。BatchNorm层会在每个通道上分别计算均值和方差。 -
分析均值和方差的形状
在计算均值和方差时,是在批量大小、高度和宽度这三个维度上进行统计的,而通道维度C保持不变。因为是对每个通道分别计算统计量,所以对于每个通道都会有一个对应的均值和方差值。
因此,统计出的均值和方差的形状为 ( 1 , C , 1 , 1 ) (1, C, 1, 1) (1,C,1,1),其中第一个维度为 1 1 1表示在批量维度上进行了聚合,第二个维度为 C C C表示每个通道都有一个统计值,后两个维度为 1 1 1表示在高度和宽度维度上进行了聚合。
10、下列方法中,可以用于特征降维的方法包括()
A
主成分分析PCA
B
线性判别分析LDA
C
深度学习SparseAutoEncoder
D
矩阵奇异值分解SVD
E
最小二乘法LeastSquares
正确答案选ABCD
-
A. 主成分分析(PCA)
主成分分析(Principal Component Analysis,PCA)是一种经典的无监督特征降维方法。它通过线性变换将原始数据转换到一个新的坐标系统中,使得数据在新坐标系统下的方差最大化。在这个过程中,选取方差最大的前(k)个主成分来表示原始数据,从而实现数据的降维。所以PCA可以用于特征降维。 -
B. 线性判别分析(LDA)
线性判别分析(Linear Discriminant Analysis,LDA)是一种有监督的特征降维方法。它的目标是找到一个投影方向,使得不同类别的数据在投影后尽可能地分开,同一类别的数据尽可能地聚集在一起。通过将数据投影到低维空间中,LDA可以实现特征降维。所以LDA可以用于特征降维。 -
C. 深度学习稀疏自编码器(SparseAutoEncoder)
稀疏自编码器(Sparse AutoEncoder)是一种深度学习模型,属于自编码器的一种变体。自编码器的基本思想是将输入数据编码为低维表示,然后再从这个低维表示中解码重构出原始输入。稀疏自编码器在编码过程中引入了稀疏性约束,使得编码后的表示更加紧凑和具有代表性。通过学习到的低维编码,稀疏自编码器可以实现特征降维。所以SparseAutoEncoder可以用于特征降维。 -
D. 矩阵奇异值分解(SVD)
矩阵奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解方法。对于一个矩阵,SVD可以将其分解为三个矩阵的乘积,其中包含奇异值矩阵。在实际应用中,可以通过保留较大的奇异值及其对应的奇异向量,丢弃较小的奇异值及其对应的奇异向量,从而实现对矩阵的近似表示,达到特征降维的目的。所以SVD可以用于特征降维。 -
E. 最小二乘法(LeastSquares)
最小二乘法(Least Squares)是一种数学优化技术,它通过最小化误差的平方和来寻找数据的最佳函数匹配。最小二乘法主要用于回归分析,通过拟合一个函数来预测连续变量的值,它本身并不直接用于特征降维。所以LeastSquares不可以用于特征降维。