[39题] 牛客深度学习专项题

2023-11-12

1. [卷积核大小] 提升卷积核(convolutional kernel)的大小会显著提升卷积神经网络的性能,这种说法是

  • 正确的
  • 错误的

这种说法是错误的。提升卷积核的大小并不一定会显著提升卷积神经网络的性能。卷积核的大小会影响网络的感受野(receptive field),即网络能够感知到的输入图像中的区域大小。增大卷积核的大小会增大感受野,但这并不一定会提升网络的性能。

实际上,选择合适的卷积核大小是一个重要的超参数调优问题。过大或过小的卷积核都可能导致网络性能下降。因此,我们需要根据具体问题来选择合适的卷积核大小,以达到最佳性能。

此外,增大卷积核的大小还会增加网络的计算量和参数数量,可能导致过拟合和训练时间增加。因此,在实际应用中,我们通常会使用较小的卷积核(例如 3x3 或 5x5),并通过堆叠多层卷积层来增大感受野。这种方法可以在保持计算量和参数数量可控的同时,提高网络性能。

2. [混沌度] 混沌度(Perplexity)是一种常见的应用在使用深度学习处理NLP问题过程中的评估技术,关于混沌度,哪种说法是正确的?

  • 混沌度没什么影响
  • 混沌度越低越好
  • 混沌度越高越好
  • 混沌度对于结果的影响不一定

混沌度越低越好。

混沌度(Perplexity)是一种常用于评估语言模型的指标。它衡量了模型对测试数据的预测能力,表示模型在预测测试数据中每个词的平均不确定性。混沌度越低,表示模型对测试数据的预测能力越强,即模型的性能越好。

混沌度与交叉熵损失(Cross Entropy Loss)有密切关系。交叉熵损失衡量了模型预测的概率分布与真实概率分布之间的差异。混沌度实际上就是交叉熵损失的指数,因此两者之间具有一一对应的关系。在评估语言模型时,我们通常希望混沌度和交叉熵损失都尽可能小。

3. [Dropout] 假设我们有一个5层的神经网络,这个神经网络在使用一个4GB显存显卡时需要花费3个小时来完成训练。而在测试过程中,单个数据需要花费2秒的时间。 如果我们现在把架构变换一下,当评分是0.2和0.3时,分别在第2层和第4层添加Dropout,那么新架构的测试所用时间会变为多少?

  • 少于2s
  • 大于2s
  • 仍是2s
  • 说不准

在架构中添加Dropout这一改动仅会影响训练过程,而并不影响测试过程。

4. [感受野] 在CNN网络中,图A经过核为3×3,步长为2的卷积层,ReLU激活函数层,BN层,以及一个步长为2,核为2×2的池化层后,再经过一个3×3的的卷积层,步长为1,此时的感受野是()

  • 10
  • 11
  • 12
  • 13

l n − 1 = ( l n − 1 ) × s n − 1 + k n − 1 l_{n - 1} = (l_n - 1) \times s_{n - 1} + k_{n - 1} ln1=(ln1)×sn1+kn1
其中: l n = 1 l_n = 1 ln=1,因此我们可以推出(从后往前推):
l 0 = 1 l 1 = ( 1 − 1 ) × 1 + 3 = 3 l 2 = ( 3 − 1 ) × 2 + 2 = 6 l 3 = ( 6 − 1 ) × 2 + 3 = 13 \begin{aligned} & l_0 = 1 \\ & l_1 = (1 - 1) \times 1 + 3 = 3 \\ & l_2 = (3 - 1) \times 2 + 2 = 6 \\ & l_3 = (6 - 1) \times 2 + 3 = 13 \end{aligned} l0=1l1=(11)×1+3=3l2=(31)×2+2=6l3=(61)×2+3=13

即导数第三层特征图的感受野为13。

5. [梯度下降法的顺序] 梯度下降算法的正确步骤是什么?

a. 计算预测值和真实值之间的误差
b. 重复迭代,直至得到网络权重的最佳值
c. 把输入传入网络,得到输出值
d. 用随机值初始化权重和偏差
e. 对每一个产生误差的神经元,调整相应的(权重)值以减小误差

  • abcde
  • edcba
  • cbaed
  • dcaeb

dcaeb 这几个步骤面试的时候最好是能够背着说出来吧

6. [卷积核可视化] 下图所示的网络用于训练识别字符H和T,如下所示

在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 可能是A或B,取决于神经网络的权重设置

训练出来的就是个二分类器,简单举例,如果分类器认为中间一列全为黑就是 T,否则就是H,那么输出全黑,如果分类器认为右下角为黑就是 H,否则就是T,那么输出全白,具体还得看分类器权重是怎么学的
我在做这道题的时候,其实第一反应就是,直接选择D的。因为网络的中间权重不知道,我怎么判断特定的结果呢? 换句话说,权重是random的, 只有两个输入和两个对应的输出,是不能说,中间的权重一定是啥啥啥。
首先你网络学习到的结果就两种结果,可以把他当做一个分类问题。

7. [调整超参数] 假设你需要调整超参数来最小化代价函数(cost function),会使用下列哪项技术?

  • 穷举搜索
  • 随机搜索
  • Bayesian优化
  • 都可以

穷举搜索法,随机搜索法,贝叶斯优化都可以优化超参数,各有优劣。所以ABC三种都可实现调整优化超参数。
穷举搜索:如网格法grid search 随机搜索快于穷举 bayesian优化:在上一次结果较好的参数取值附近查找

我们可以使用上述所有技术来调整超参数以最小化代价函数。

  • 穷举搜索:穷举搜索是一种简单的超参数调优方法,它通过遍历超参数空间中的所有可能组合来寻找最优解。这种方法适用于超参数空间较小的情况,但当超参数数量较多时,计算量会非常大。

  • 随机搜索:随机搜索是一种更高效的超参数调优方法。它通过在超参数空间中随机采样来寻找最优解。与穷举搜索相比,随机搜索可以更快地找到较好的解,但它不能保证找到全局最优解。

  • Bayesian优化:Bayesian优化是一种更先进的超参数调优方法。它使用贝叶斯统计方法来建立代价函数的概率模型,并利用这个模型来指导超参数的选择。与其他方法相比,Bayesian优化可以更快地找到较好的解,且具有更高的准确性。

8. [Pooling] 当在卷积神经网络中加入池化层(pooling layer)时,平移变换的不变性会被保留,是吗?

  • 不知道
  • 看情况

当在卷积神经网络中加入池化层时,平移变换的不变性会被保留。

池化层的作用是对输入特征图进行下采样,减少特征图的尺寸。它通过对局部区域内的特征值进行聚合运算(例如最大值或平均值)来实现这一目的。由于池化层对局部区域内的特征值进行聚合,因此它具有一定的平移不变性。这意味着,当输入图像发生平移变换时,池化层的输出仍然保持不变。

例如,假设我们有一个最大池化层,它对输入特征图进行2×2的最大池化。当输入图像发生1个像素的水平平移时,池化层的输出仍然保持不变。这是因为池化层对每个2×2的局部区域内的最大值进行聚合,而这些局部区域内的最大值在平移变换后仍然保持不变。

[ResNet] 9. ResNet-50 有多少个卷积层? ()

  • 48
  • 49
  • 50
  • 51

ResNet-50就是因为它有50层网络,这50层里只有一个全连接层,剩下的都是卷积层,所以是50-1=49

10. [防止过拟合] 深度学习中,以下哪些方法可以降低模型过拟合?()

  • 增加更多的样本
  • Dropout
  • 增大模型复杂度,提高在训练集上的效果
  • 增加参数惩罚

防止模型过拟合:

  1. 引入正则化(参数范数惩罚)
  2. Dropout
  3. 提前终止训练
  4. 增加样本量
  5. 参数绑定与参数共享
  6. 辅助分类节点(auxiliary classifiers)
  7. Batch Normalization

正则化(regularization)会给给代价函数增加一个惩罚项,使得系数不会达到很大的值。

11. [激活函数] 深度学习中的激活函数需要具有哪些属性?()

  • 计算简单
  • 非线性
  • 具有饱和区
  • 几乎处处可微
  1. 非线性:即导数不是常数。这个条件是多层神经网络的基础,保证多层网络不退化成单层线性网络。这也是激活函数的意义所在。
  2. 几乎处处可微:可微性保证了在优化中梯度的可计算性。传统的激活函数如sigmoid等满足处处可微。对于分段线性函数比如ReLU,只满足几乎处处可微(即仅在有限个点处不可微)。对于SGD算法来说,由于几乎不可能收敛到梯度接近零的位置,有限的不可微点对于优化结果不会有很大影响。
  3. 计算简单:非线性函数有很多。极端的说,一个多层神经网络也可以作为一个非线性函数,类似于Network In Network中把它当做卷积操作的做法。但激活函数在神经网络前向的计算次数与神经元的个数成正比,因此简单的非线性函数自然更适合用作激活函数。这也是ReLU之流比其它使用Exp等操作的激活函数更受欢迎的其中一个原因。
  4. 非饱和性(saturation)饱和指的是在某些区间梯度接近于零(即梯度消失),使得参数无法继续更新的问题。最经典的例子是Sigmoid,它的导数在x为比较大的正值和比较小的负值时都会接近于0。更极端的例子是阶跃函数,由于它在几乎所有位置的梯度都为0,因此处处饱和,无法作为激活函数。ReLU在x>0时导数恒为1,因此对于再大的正值也不会饱和。但同时对于x<0,其梯度恒为0,这时候它也会出现饱和的现象(在这种情况下通常称为dying ReLU)。Leaky ReLU和PReLU的提出正是为了解决这一问题。
  5. 单调性(monotonic):即导数符号不变。这个性质大部分激活函数都有,除了诸如sin、cos等。个人理解,单调性使得在激活函数处的梯度方向不会经常改变,从而让训练更容易收敛
  6. 输出范围有限:有限的输出范围使得网络对于一些比较大的输入也会比较稳定,这也是为什么早期的激活函数都以此类函数为主,如Sigmoid、TanH。但这导致了前面提到的梯度消失问题,而且强行让每一层的输出限制到固定范围会限制其表达能力。因此现在这类函数仅用于某些需要特定输出范围的场合,比如概率输出(此时loss函数中的log操作能够抵消其梯度消失的影响)、LSTM里的gate函数。
  7. 接近恒等变换(identity):即约等于x。这样的好处是使得输出的幅值不会随着深度的增加而发生显著的增加,从而使网络更为稳定,同时梯度也能够更容易地回传。这个与非线性是有点矛盾的,因此激活函数基本只是部分满足这个条件,比如TanH只在原点附近有线性区(在原点为0且在原点的导数为1),而ReLU只在x>0时为线性。这个性质也让初始化参数范围的推导更为简单。这种恒等变换的性质也被其他一些网络结构设计所借鉴,比如CNN中的ResNet和RNN中的LSTM。
  8. 参数少:大部分激活函数都是没有参数的。像PReLU带单个参数会略微增加网络的大小。还有一个例外是Maxout,尽管本身没有参数,但在同样输出通道数下k路Maxout需要的输入通道数是其它函数的k倍,这意味着神经元数目也需要变为k倍;但如果不考虑维持输出通道数的情况下,该激活函数又能将参数个数减少为原来的k倍。
  9. 归一化(normalization):这个是最近才出来的概念,对应的激活函数是SELU,主要思想是使样本分布自动归一化到零均值、单位方差的分布,从而稳定训练。在这之前,这种归一化的思想也被用于网络结构的设计,比如Batch Normalization。

12. [权重共享] 下列哪个神经网络结构会发生权重共享?

  • 卷积神经网络
  • 循环神经网络
  • 全连接神经网络
  • 选项A和B

权值共享就是说,给一张输入图片,用一个卷积核去扫这张图,卷积核里面的数就叫权重,这张图每个位置是被同样的卷积核扫的,所以权重是一样的,也就是共享。可以极大地减少参数数量,这是全连接神经网络不具备的优势。
CNN,RNN

  • 卷积神经网络:在卷积神经网络中,卷积层的权重是共享的。这意味着,对于同一层中的所有卷积核,它们都使用相同的权重。这种权重共享机制使得卷积神经网络能够有效地提取图像中的局部特征,同时减少了模型的参数数量。

  • 循环神经网络:在循环神经网络中,每个时间步的权重也是共享的。这意味着,对于同一层中不同时刻的神经元,它们都使用相同的权重。这种权重共享机制使得循环神经网络能够处理任意长度的序列数据,同时减少了模型的参数数量。

13. [dropout] 下面哪项操作能实现跟神经网络中Dropout的类似效果?

  • Boosting

  • Bagging

  • Stacking

  • Mapping

  • Boosting:Boosting 是一种集成学习方法,它通过迭代地训练多个弱学习器来构建一个强学习器。在每次迭代中,Boosting 算法会根据上一轮的预测结果调整样本权重,使得被错误分类的样本在下一轮中获得更大的关注。最终,Boosting 算法会将所有弱学习器的预测结果进行加权组合,得到最终的预测结果。

  • Bagging:Bagging 是一种集成学习方法,它通过对训练数据进行自助采样(bootstrap sampling)来生成多个不同的模型,然后对这些模型的预测结果进行平均或投票来得到最终的预测结果。由于每个模型都是在不同的训练数据子集上训练的,因此它们之间具有一定的差异性。Bagging 的过程类似于神经网络中的 Dropout 操作。

  • Stacking:Stacking 是一种集成学习方法,它通过将多个不同模型的预测结果作为输入来训练一个元模型(meta-model),从而实现对多个模型的集成。与其他集成学习方法不同,Stacking 不仅考虑了每个模型单独的预测能力,还考虑了它们之间的相互关系。

  • Mapping:Mapping 不是一种机器学习技术。在计算机科学中,Mapping 通常指将一个数据结构映射到另一个数据结构的过程。例如,在关系数据库中,我们可以使用对象关系映射(Object-Relational Mapping, ORM)技术将数据库表映射为程序中的对象。

14. [BN] 批规范化(Batch Normalization)的好处都有啥?

  • 让每一层的输入的范围都大致固定
  • 它将权重的归一化平均值和标准差
  • 它是一种非常有效的反向传播(BP)方法
  • 这些均不是

是对数据进行归一化,而不是权重

  • 让每一层的输入的范围都大致固定:这是批规范化(Batch Normalization)的一个好处。批规范化通过对每一层的输入进行规范化,使其均值为0,标准差为1,从而让每一层的输入的范围都大致固定。这样可以防止梯度消失或梯度爆炸问题,加快网络收敛速度。

  • 它将权重的归一化平均值和标准差:这个说法是错误的。批规范化并不会对权重进行归一化,它只对每一层的输入进行规范化。

  • 它是一种非常有效的反向传播(BP)方法:这个说法也是错误的。批规范化并不是一种反向传播方法,它只是一种用于加速神经网络训练的技术。

  • 这些均不是:这个选项也是错误的,因为批规范化确实有让每一层的输入的范围都大致固定这个好处。

15. [BN] BatchNorm 层对于 input batch 会统计出 mean 和 variance 用于计算 EMA。如果input batch 的 shape 为(B, C, H, W),统计出的 mean 和 variance 的 shape 为: ()

  • B * 1 * 1 * 1
  • 1 * C * 1 * 1
  • B * C * 1 * 1
  • 1 * 1 * 1 * 1

如果 input batch 的 shape 为 (B, C, H, W),那么统计出的 mean 和 variance 的 shape 为 1 * C * 1 * 1。

BatchNorm 层会对每个通道(channel)单独计算均值(mean)和方差(variance)。这意味着,对于一个形状为 (B, C, H, W) 的输入批次,BatchNorm 层会计算出 C 个均值和方差,分别对应每个通道。因此,统计出的 mean 和 variance 的 shape 为 1 * C * 1 * 1。

16. [Loss] CNN常见的Loss函数不包括以下哪个()

  • softmax_loss
  • sigmoid_loss
  • Contrastive_Loss
  • siamese_loss

CNN 常见的损失函数不包括 siamese_loss。

  • softmax_loss:softmax_loss 是一种常用于分类问题的损失函数。它通过计算模型预测的概率分布与真实标签之间的交叉熵来衡量模型的预测能力。softmax_loss 通常用于多分类问题,例如图像分类。

  • sigmoid_loss:sigmoid_loss 也是一种常用于分类问题的损失函数。它与 softmax_loss 类似,也是通过计算交叉熵来衡量模型的预测能力。不同的是,sigmoid_loss 通常用于二分类问题或多标签分类问题。

  • Contrastive_Loss:Contrastive_Loss 是一种常用于度量学习(metric learning)问题的损失函数。它通过计算同类样本之间的距离和异类样本之间的距离来衡量模型的预测能力。Contrastive_Loss 的目标是使同类样本之间的距离尽可能小,而异类样本之间的距离尽可能大。

  • siamese_loss:siamese_loss 并不是一个真实存在的损失函数。在机器学习领域中,并没有名为 siamese_loss 的损失函数。

17. [caffe] 下列是caffe支持的loss优化的方法的是()

  • Adam
  • SGD
  • AdaDelta
  • Nesterov

caffe六种优化方法:

  • Stochastic Gradient Descent (type: “SGD”): 随机梯度下降
  • AdaDelta (type: “AdaDelta”): 自适应学习率
  • Adaptive Gradient (type: “AdaGrad”): 自适应梯度
  • Adam (type: “Adam”): 自适应学习,推荐使用
  • Nesterov’s Accelerated Gradient (type: “Nesterov”): 加速梯度法
  • RMSprop (type: “RMSProp”)

18. [矩阵计算] 深度学习是当前很热门的机器学习算法,在深度学习中,涉及到大量的矩阵相乘,现在需要计算三个稠密矩阵A,B,C 的乘积ABC,假设三个矩阵的尺寸分别为m∗n,n∗p,p∗q,且m <n < p < q,以下计算顺序效率最高的是()

  • (AB)C
  • AC(B)
  • A(BC)
  • 所以效率都相同

维度低的先相乘效率更高

计算三个稠密矩阵 A,B,C 的乘积 ABC 时,效率最高的计算顺序是 (AB)C。

矩阵乘法的计算复杂度取决于矩阵的尺寸。假设我们要计算两个矩阵 X 和 Y 的乘积,其中 X 的尺寸为 m×n,Y 的尺寸为 n×p,则计算 XY 的时间复杂度为 O(mnp)。

在本题中,我们需要计算三个稠密矩阵 A,B,C 的乘积 ABC,其中 A 的尺寸为 m×n,B 的尺寸为 n×p,C 的尺寸为 p×q。如果我们按照 (AB)C 的顺序进行计算,则总时间复杂度为 O(mnp + mpq)。由于 m < n < p < q,因此这种计算顺序的效率最高。

19. [深度学习定义] 已知:(1)大脑是有很多个叫做神经元的东西构成,神经网络是对大脑的简单的数学表达。(2)每一个神经元都有输入、处理函数和输出。(3)神经元组合起来形成了网络,可以拟合任何函数。(4)为了得到最佳的神经网络,我们用梯度下降方法不断更新模型。给定上述关于神经网络的描述,什么情况下神经网络模型被称为深度学习模型?

  • 加入更多层,使神经网络的深度增加
  • 有维度更高的数据
  • 当这是一个图形识别的问题时
  • 以上都不正确

正确答案A,更多层意味着网络更深。没有严格的定义多少层的模型才叫深度模型,目前如果有超过2层的隐层,那么也可以及叫做深度模型

深度学习模型之所以被称为“深度”,是因为它们具有很多层。这些层可以捕捉数据中不同层次的抽象特征,从而实现对复杂数据的建模。因此,当我们加入更多层,使神经网络的深度增加时,神经网络模型就被称为深度学习模型。

20. [学习率] 如果我们用了一个过大的学习速率会发生什么?

  • 神经网络会收敛
  • 不好说
  • 都不对
  • 神经网络不会收敛

正确答案是:D 学习率过大,会使得迭代时,越过最低点。

如果我们使用了一个过大的学习速率,神经网络可能不会收敛。

学习速率是一个超参数,它决定了神经网络在每次迭代中更新权重的幅度。如果学习速率过大,神经网络在每次迭代中更新权重的幅度也会过大,这可能导致神经网络在训练过程中不稳定,无法收敛到最优解。

例如,假设我们正在训练一个分类问题的神经网络。如果我们使用了一个过大的学习速率,那么神经网络在每次迭代中更新权重的幅度可能会过大,导致损失函数在不断震荡,无法收敛到最小值。这样,神经网络就无法正确地拟合数据,模型的性能也会受到影响。

因此,在训练神经网络时,选择合适的学习速率是非常重要的。通常,我们会通过交叉验证(Cross Validation)或网格搜索(Grid Search)等方法来选择合适的学习速率。

21. [非线性] 下列哪一项在神经网络中引入了非线性?

  • 随机梯度下降
  • 修正线性单元(ReLU)
  • 卷积函数
  • 以上都不正确

卷积函数是线性的,一般情况下,卷积层后会跟一个非线性函数。Relu函数是非线性激活函数

22. [Attention-Based] 关于Attention-based Model,下列说法正确的是()

  • 相似度度量模型
  • 是一种新的深度学习网络
  • 是一种输入对输出的比例模型
  • 都不对

Attention-based Model其实就是一个相似性的度量,当前的输入与目标状态越相似,那么在当前的输入的权重就会越大,说明当前的输出越依赖于当前的输入。
严格来说,Attention并算不上是一种新的model,而仅仅是在以往的模型中加入attention的思想,所以Attention-based Model或者Attention Mechanism是比较合理的叫法,而非Attention Model。

关于 Attention-based Model,正确的说法是它是一种相似度度量模型。

  • 相似度度量模型:这是正确的。Attention-based Model 是一种相似度度量模型,它通过计算输入序列中每个元素与输出序列中每个元素之间的相似度来实现对输入序列的加权表示。这种加权表示能够捕捉输入序列中与输出序列相关的重要信息,从而提高模型的预测能力。

  • 是一种新的深度学习网络:这是错误的。Attention-based Model 并不是一种新的深度学习网络,而是一种可以与其他深度学习模型(如 RNN、CNN 等)结合使用的技术。

  • 是一种输入对输出的比例模型:这也是错误的。Attention-based Model 并不是一种输入对输出的比例模型,而是一种相似度度量模型。

  • 都不对:这个选项也是错误的,因为 Attention-based Model 确实是一种相似度度量模型。

23. [网络深度] 在选择神经网络的深度时,下面哪些参数需要考虑?

  1. 神经网络的类型(如MLP,CNN)
  2. 输入数据
  3. 计算能力(硬件和软件能力决定)
  4. 学习速率
  5. 映射的输出函数
  • 1,2,4,5
  • 2,3,4,5
  • 都需要考虑
  • 1,3,4,5

在选择神经网络的深度时,所有这些参数都需要考虑。

  1. 神经网络的类型(如MLP,CNN):不同类型的神经网络有不同的结构和深度,因此在选择深度时需要考虑神经网络的类型。
  2. 输入数据:输入数据的特征数量和复杂性会影响神经网络的深度,因此在选择深度时需要考虑输入数据。
  3. 计算能力(硬件和软件能力决定):神经网络的深度会影响计算时间和内存需求,因此在选择深度时需要考虑计算能力。
  4. 学习速率:学习速率会影响神经网络训练的速度和效果,因此在选择深度时需要考虑学习速率。
  5. 映射的输出函数:映射的输出函数会影响神经网络的预测能力,因此在选择深度时需要考虑映射的输出函数。

24. [微调][fine-tune] 考虑某个具体问题时,你可能只有少量数据来解决这个问题。不过幸运的是你有一个类似问题已经预先训练好的神经网络。可以用下面哪种方法来利用这个预先训练好的网络?

  • 把除了最后一层外所有的层都冻结,重新训练最后一层
  • 对新数据重新训练整个模型
  • 只对最后几层进行调参(fine tune)
  • 对每一层模型进行评估,选择其中的少数来用

(样本少,相似性低)–> 冻结训练
(样本多,相似性低)–> 重新训练
(样本少,相似性高)–> 修改输出层
(样本多,相似性高)–> 预训练权+重新训练


不同数据集下使用微调:

  • 数据集1:数据量少,但数据相似度非常高:在这种情况下,我们所做的只是修改最后几层或最终的softmax图层的输出类别。
  • 数据集2:数据量少,数据相似度低:在这种情况下,我们可以冻结预训练模型的初始层(比如 k k k 层),并再次训练剩余的 n − k n-k nk 层。由于新数据集的相似度较低,因此根据新数据集对较高层进行重新训练具有重要意义。
  • 数据集3:数据量大,数据相似度低:在这种情况下,由于我们有一个大的数据集,我们的神经网络训练将会很有效。但是,由于我们的数据与用于训练我们的预训练模型的数据相比有很大不同,使用预训练模型进行的预测不会有效。因此,最好根据你的数据从头开始训练神经网络(Training from scratch)。
  • 数据集4:数据量大,数据相似度高:这是理想情况。在这种情况下,预训练模型应该是最有效的。使用模型的最好方法是保留模型的体系结构和模型的初始权重。然后,我们可以使用在预先训练的模型中的权重来重新训练该模型。

我认为A没错 少量数据就应该冻结更多的层 不然会过拟合

25. [H-K算法] 基于二次准则函数的H-K算法较之于感知器算法的优点是()?

  • 计算量小
  • 可以判别问题是否线性可分
  • 其解完全适用于非线性可分的情况

正确答案是:B H-K算法思想很朴实,就是在最小均方误差准则下求得权矢量。他相对于感知器算法的优点在于,他适用于线性可分和非线性可分得情况:

  • 对于线性可分的情况: 给出最优权矢量
  • 对于非线性可分得情况: 能够判别出来,以退出迭代过程。

26. [优化器] 下列哪些项所描述的相关技术是错误的?

  • AdaGrad使用的是一阶差分(first order differentiation)
  • L-BFGS使用的是二阶差分(second order differentiation)
  • AdaGrad使用的是二阶差分
  • 牛顿法、拟牛顿法、adam,rmsgrad用到了二阶导
  • momentum、adgrad用的是一阶导,adgrad的特点是历史梯度正则。

27. [caffe] caffe中基本的计算单元为()

  • blob
  • layer
  • net
  • solver

blob: caffe的数据存储单元
layer: caffe的计算单元

28. [Perception][多层感知机] 如果增加多层感知机(Multilayer Perceptron)的隐藏层层数,分类误差便会减小。这种陈述正确还是错误?

  • 正确
  • 错误

B并不总是正确。层数增加可能导致过拟合,从而可能引起错误增加。

29. [train][val] 有关深度神经网络的训练(Training)和推断(Inference),以下说法中不正确的是:()

  • 将数据分组部署在不同GPU上进行训练能提高深度神经网络的训练速度。
  • TensorFlow使用GPU训练好的模型,在执行推断任务时,也必须在GPU上运行。
  • 将模型中的浮点数精度降低,例如使用float16代替float32,可以压缩训练好的模型的大小。
  • GPU所配置的显存的大小,对于在该GPU上训练的深度神经网络的复杂度、训练数据的批次规模等,都是一个无法忽视的影响因素。

C也有问题吧?改变已训练好的模型的数值精度难道不会改变结果精度?那模型量化还要校准表干什么
训练好的模型大小不变,在执行推断的时候改变精度影响后续推断效果

30. [梯度] 在下面哪种情况下,一阶梯度下降不一定正确工作(可能会卡住)?

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 在这里插入图片描述

B这是鞍点(Saddle Point)的梯度下降的经典例子。
本题来源于:https://www.analyticsvidhya.com/blog/2017/01/must-know-questions-deep-learning/。

在这里插入图片描述

除了局部极小值,还有一类值为“鞍点”,简单来说,它就是在某一些方向梯度下降,另一些方向梯度上升,形状似马鞍,如下图红点就是鞍点。

在这里插入图片描述

对于深度学习模型的优化来说,鞍点比局部极大值点或者极小值点带来的问题更加严重。

31. [特征图计算] 假设你有5个大小为7×7、边界值为0的卷积核,同时卷积神经网络第一层的深度为1。此时如果你向这一层传入一个维度为224×224×3的数据,那么神经网络下一层所接收到的数据维度是多少?

  • 218x218x5
  • 217x217x8
  • 217x217x3
  • 220x220x5

注意区分深度、卷积核个数对特征图的影响

卷积层输出大小的计算公式为:

output size = input size − kernel size + 2 × padding stride + 1 \text{output size} = \frac{\text{input size} - \text{kernel size} + 2 \times \text{padding}}{\text{stride}} + 1 output size=strideinput sizekernel size+2×padding+1

其中, input size \text{input size} input size 是输入数据的大小, kernel size \text{kernel size} kernel size 是卷积核的大小, padding \text{padding} padding 是边界填充的大小, stride \text{stride} stride 是卷积核移动的步长。

在这个例子中,输入数据大小为224,卷积核大小为7,边界填充大小为0,步长为1。将这些值代入上述公式中,可以得到输出大小为:

224 − 7 + 2 × 0 1 + 1 = 218 \frac{224 - 7 + 2 \times 0}{1} + 1 = 218 12247+2×0+1=218

32. [GoogLeNet] GoogLeNet提出的Inception结构优势有()

  • 保证每一层的感受野不变,网络深度加深,使得网络的精度更高
  • 使得每一层的感受野增大,学习小特征的能力变大
  • 有效提取高层语义信息,且对高层语义进行加工,有效提高网络准确度
  • 利用该结构有效减轻网络的权重

GoogLeNet提出的Inception结构的优势之一是利用该结构有效减轻网络的权重。Inception结构采用了模块化的设计,可以方便地增添和修改。它使用了1x1卷积来进行升降维,可以有效减少计算量。此外,它还在多个尺度上同时进行卷积再聚合,能够提取到不同尺度的特征。

33. [sigmoid] sigmoid导数为()

  • f(z)
  • f(1-z)
  • f(1+z)f(1-z)
  • f(z)(1-f(z))

Sigmoid函数由下列公式定义:
S ( x ) = 1 1 + e − x S(x) = \frac{1}{1+e^{-x}} S(x)=1+ex1
其对 x x x的导数可以用自身表示:
S ′ ( x ) = e − x ( 1 + e − x ) 2 = S ( x ) ( 1 − S ( x ) ) S'(x) = \frac{e^{-x}}{ (1 + e^{-x})^2} = S(x)(1 - S(x)) S(x)=(1+ex)2ex=S(x)(1S(x))

34. [loss][lr] 在训练神经网络时,损失函数(loss)在最初的几个epochs时没有下降,可能的原因是?

  • 学习率(learning rate)太低
  • 正则参数太高
  • 陷入局部最小值
  • 以上都有可能

在训练神经网络时,损失函数(loss)在最初的几个epochs时没有下降,可能的原因有很多。以下是一些可能的原因:

  • 学习率(learning rate)太低:如果学习率太低,模型参数更新的速度会很慢,导致损失函数下降缓慢。
  • 正则参数太高:如果正则参数太高,模型可能会过度惩罚复杂模型,导致损失函数下降缓慢。
  • 陷入局部最小值:如果模型陷入局部最小值,损失函数可能不会下降。

35. [过拟合] 下列的哪种方法可以用来降低深度学习模型的过拟合问题?

  1. 增加更多的数据
  2. 使用数据扩增技术(data augmentation)
  3. 使用归纳性更好的架构
  4. 正规化数据
  5. 降低架构的复杂度
  • 1 4 5
  • 1 2 3
  • 1 3 4 5
  • 所有项目都有用

下列的所有方法都可以用来降低深度学习模型的过拟合问题:

  1. 增加更多的数据:增加更多的数据可以帮助模型更好地泛化,从而降低过拟合的风险。
  2. 使用数据扩增技术(data augmentation):数据扩增技术可以通过对原始数据进行变换来增加数据量,从而降低过拟合的风险。
  3. 使用归纳性更好的架构:使用归纳性更好的架构可以帮助模型更好地泛化,从而降低过拟合的风险。
  4. 正规化数据:正规化数据可以帮助模型更好地处理不同尺度的特征,从而降低过拟合的风险。
  5. 降低架构的复杂度:降低架构的复杂度可以减少模型参数数量,从而降低过拟合的风险。

使用归纳性更好的架构是指使用更好的框架来提取特征。这样的框架具有更强的特征提取能力,可以更好地捕捉数据中的模式,从而降低过拟合的风险。例如,深度残差网络(ResNet)就是一种归纳性更好的架构,它通过引入残差连接来解决深度神经网络训练中的梯度消失问题,从而可以训练更深层次的网络。

36. [GPU][TPU][FPGA] 有关深度学习加速芯片,以下的说法中不正确的是:()

  • GPU既可以做游戏图形加速,也可以做深度学习加速
  • 用于玩游戏的高配置显卡,也可以用于深度学习计算。
  • Google TPU已经发展了三代,它们只能用于推断(Inference)计算,不能用于训练(Training)计算
  • FPGA最早是作为CPLD的竞争技术而出现的
  • GPU既可以做游戏图形加速,也可以做深度学习加速:这个说法是正确的。GPU(图形处理器)最初是为了加速计算机图形处理而设计的,但它也可以用于深度学习计算。GPU具有大量的并行处理单元,能够快速处理大量数据,因此非常适合用于深度学习计算。
  • 用于玩游戏的高配置显卡,也可以用于深度学习计算:这个说法也是正确的。高配置显卡通常具有更多的计算能力和更大的显存,因此可以用于深度学习计算。不过,不同型号的显卡在深度学习计算方面的性能可能会有所不同。
  • Google TPU已经发展了三代,它们只能用于推断(Inference)计算,不能用于训练(Training)计算:这个说法是不正确的。Google TPU(Tensor Processing Unit)是一种专门为神经网络机器学习设计的应用特定集成电路(ASIC),它使用Google自己的TensorFlow软件。Google TPU不仅可以用于推断计算,还可以用于训练计算。目前,Google TPU已经发展到第四代。
  • FPGA最早是作为CPLD的竞争技术而出现的:这个说法也是正确的。FPGA(现场可编程门阵列)最早是作为CPLD(复杂可编程逻辑器件)的竞争技术而出现的。FPGA和CPLD都属于可编程逻辑器件,它们都可以通过编程来实现特定功能。FPGA比CPLD更复杂,具有更多的逻辑单元和更灵活的互连结构,因此可以实现更复杂的功能。

37. [梯度] 下图是一个利用sigmoid函数作为激活函数的含四个隐藏层的神经网络训练的梯度下降图。这个神经网络遇到了梯度消失的问题。下面哪个叙述是正确的?

在这里插入图片描述

  • 第一隐藏层对应D,第二隐藏层对应C,第三隐藏层对应B,第四隐藏层对应A
  • 第一隐藏层对应A,第二隐藏层对应C,第三隐藏层对应B,第四隐藏层对应D
  • 第一隐藏层对应A,第二隐藏层对应B,第三隐藏层对应C,第四隐藏层对应D
  • 第一隐藏层对应B,第二隐藏层对应D,第三隐藏层对应C,第四隐藏层对应A

由于反向传播算法进入起始层,学习能力降低,这就是梯度消失。换言之,梯度消失是梯度在前向传播中逐渐减为0, 按照图标题所说, 四条曲线是4个隐藏层的学习曲线, 那么第一层梯度最高(损失函数曲线下降明显), 最后一层梯度几乎为零(损失函数曲线变成平直线). 所以D是第一层, A是最后一层。

由于反向传播,在梯度消失情况下越接近输入层,其梯度越小;在梯度爆炸的情况下越接近输入层,其梯度越大。

38. [深度学习][机器学习] 深度学习与机器学习算法之间的区别在于,后者过程中无需进行特征提取工作,也就是说,我们建议在进行深度学习过程之前要首先完成特征提取的工作。这种说法是:

  • 正确的
  • 错误的

这种说法是错误的。深度学习与机器学习算法之间的一个重要区别在于,深度学习可以自动进行特征提取。深度学习模型通过多层神经网络来学习数据的层次结构,能够自动提取出有用的特征。因此,在进行深度学习过程之前,无需手动完成特征提取工作。相反,机器学习算法通常需要人为地选择和提取特征。

Q:意思就是说,机器学习需要我们手动完成特征工程,而深度学习不需要,这样的理解正确吗?
A:是的。机器学习通常需要人为地选择和提取特征,这个过程被称为特征工程。相反,深度学习可以自动进行特征提取。深度学习模型通过多层神经网络来学习数据的层次结构,能够自动提取出有用的特征。因此,在进行深度学习过程之前,无需手动完成特征提取工作。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[39题] 牛客深度学习专项题 的相关文章

  • 保存为 HDF5 的图像未着色

    我目前正在开发一个将文本文件和 jpg 图像转换为 HDF5 格式的程序 用HDFView 3 0打开 似乎图像仅以灰度保存 hdf h5py File Sample h5 img Image open Image jpg data np
  • 中断 Select 以添加另一个要在 Python 中监视的套接字

    我正在 Windows XP 应用程序中使用 TCP 实现点对点 IPC 我正在使用select and socketPython 2 6 6 中的模块 我有三个 TCP 线程 一个读取线程通常会阻塞select 一个通常等待事件的写入线程
  • 使用 python requests 模块时出现 HTTP 503 错误

    我正在尝试发出 HTTP 请求 但当前可以从 Firefox 浏览器访问的网站响应 503 错误 代码本身非常简单 在网上搜索一番后我添加了user Agent请求参数 但也没有帮助 有人能解释一下如何消除这个 503 错误吗 顺便说一句
  • 元组有什么用?

    我现在正在学习 Python 课程 我们刚刚介绍了元组作为数据类型之一 我阅读了它的维基百科页面 但是 我无法弄清楚这种数据类型在实践中会有什么用处 我可以提供一些需要一组不可变数字的示例吗 也许是在 Python 中 这与列表有何不同 每
  • 如何用python脚本控制TP LINK路由器

    我想知道是否有一个工具可以让我连接到路由器并关闭它 然后从 python 脚本重新启动它 我知道如果我写 import os os system ssh l root 192 168 2 1 我可以通过 python 连接到我的路由器 但是
  • 如何使用 opencv.omnidir 模块对鱼眼图像进行去扭曲

    我正在尝试使用全向模块 http docs opencv org trunk db dd2 namespacecv 1 1omnidir html用于对鱼眼图像进行扭曲处理Python 我正在尝试适应这一点C 教程 http docs op
  • 需要在python中找到print或printf的源代码[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在做一些我不能完全谈论的事情 我
  • 使用字典映射数据帧索引

    为什么不df index map dict 工作就像df column name map dict 这是尝试使用index map的一个小例子 import pandas as pd df pd DataFrame one A 10 B 2
  • 您可以格式化 pandas 整数以进行显示,例如浮点数的“pd.options.display.float_format”?

    我见过this https stackoverflow com questions 18404946 py pandas formatdataframe and this https stackoverflow com questions
  • Pandas Merge (pd.merge) 如何设置索引和连接

    我有两个 pandas 数据框 dfLeft 和 dfRight 以日期作为索引 dfLeft cusip factorL date 2012 01 03 XXXX 4 5 2012 01 03 YYYY 6 2 2012 01 04 XX
  • 在Python中连接反斜杠

    我是 python 新手 所以如果这听起来很简单 请原谅我 我想加入一些变量来生成一条路径 像这样 AAAABBBBCCCC 2 2014 04 2014 04 01 csv Id TypeOfMachine year month year
  • 如何在不丢失注释和格式的情况下更新 YAML 文件 / Python 中的 YAML 自动重构

    我想在 Python 中更新 YAML 文件值 而不丢失 Python 中的格式和注释 例如我想改造 YAML 文件 value 456 nice value to value 6 nice value 界面类似于 y yaml load
  • Cython 和类的构造函数

    我对 Cython 使用默认构造函数有疑问 我的 C 类 Node 如下 Node h class Node public Node std cerr lt lt calling no arg constructor lt lt std e
  • 加快网络抓取速度

    我正在使用一个非常简单的网络抓取工具抓取 23770 个网页scrapy 我对 scrapy 甚至 python 都很陌生 但设法编写了一个可以完成这项工作的蜘蛛 然而 它确实很慢 爬行 23770 个页面大约需要 28 小时 我看过scr
  • python import inside函数隐藏现有变量

    我在我正在处理的多子模块项目中遇到了一个奇怪的 UnboundLocalError 分配之前引用的局部变量 问题 并将其精简为这个片段 使用标准库中的日志记录模块 import logging def foo logging info fo
  • 将 Python 中的日期与日期时间进行比较

    所以我有一个日期列表 datetime date 2013 7 9 datetime date 2013 7 12 datetime date 2013 7 15 datetime date 2013 7 18 datetime date
  • Scipy Sparse:SciPy/NumPy 更新后出现奇异矩阵警告

    我的问题是由大型电阻器系统的节点分析产生的 我基本上是在设置一个大的稀疏矩阵A 我的解向量b 我正在尝试求解线性方程A x b 为了做到这一点 我正在使用scipy sparse linalg spsolve method 直到最近 一切都
  • 如何应用一个函数 n 次? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 假设我有一个函数 它接受一个参数并返回相同类型的结果 def increment x return x 1 如何制作高阶函数repeat可以
  • 如何计算Python中字典中最常见的前10个值

    我对 python 和一般编程都很陌生 所以请友善 我正在尝试分析包含音乐信息的 csv 文件并返回最常听的前 n 个乐队 从下面的代码中 每听一首歌曲都是一个列表中的字典条目 格式如下 album Exile on Main Street
  • 使用 z = f(x, y) 形式的 B 样条方法来拟合 z = f(x)

    作为一个潜在的解决方案这个问题 https stackoverflow com questions 76476327 how to avoid creating many binary switching variables in gekk

随机推荐

  • mathjax 数学公式的使用

    这里使用的是mathjax2 7 5版本 其他版本或有不同 下载地址 https github com mathjax MathJax releases tag 2 7 5 MathJax默认样式在被鼠标focus的时候 会有蓝色边框出现
  • 电脑分盘怎么分?分盘详细教程来了,图文教学

    电脑作为小伙伴日常生活使用的工具 很多事情都需要使用电脑来进行处理 虽然小伙伴使用电脑比较多 但是还是有不少的小伙伴不知道电脑分盘怎么分 其实电脑分盘很简单 下面小编就以图文教学的方式 详细的向小伙伴介绍电脑分盘教程 电脑分盘怎么分 很多小
  • 复化中矩形matlab函数法,MATLAB–Mupad 初学者(四)~(八)

    四 函数的创建 一 用赋值运算符创建函数 y 2 x 1 二 用映射创建函数 格式 f x gt body 简化函数后再创建函数 f x gt body直接创建函数 f x gt x 2 1 注意有无等号的区别 三 创建分段函数 1 pie
  • 计算机组成原理(2)-软件设计(二十三)

    计算机组成原理 1 软件设计 二十二 https blog csdn net ke1ying article details 129372288 一 层次化存储结构 速度由慢到快 外存 辅存 硬盘 光盘 U盘 gt 内存 主存 gt cac
  • 【无标题】如何实现权限过滤

    springboot mybatis plus关于数据权限过滤应该怎么实现 spring boot java 角色和部门关联 每个角色可以设置一个数据范围 1全部数据权限 2自定数据权限 3本部门数据权限 4本部门及以下数据权限 5仅本人数
  • PaxosStore解读

    PaxosStore解读 1 QuorumKV NWR 微信有大量分布式存储 QuorumKV 使用这个算法保证一致性 我们对这个算法做了改进 创造性地把数据副本分离出版本编号和数据存到不同设备 其中N 3 数据只有2份 版本编号有3份 在
  • Qt/C++开发经验小技巧281-285

    悬停窗体QDockWidget默认在标题栏右键会弹出悬停模块的显示隐藏菜单 如果需要去掉 会发现设置Qt NoContextMenu或者事件过滤器拦截都是无效的 必须设置 dockWidget gt setContextMenuPolicy
  • adb logcat命令查看并过滤android输出log

    http blog csdn net hansel article details 38088583 cmd命令行中使用adb logcat命令查看Android系统和应用的log dos窗口按ctrl c中断输出log记录 logcat日
  • 小米路由器3潘多拉固件刷机教程

    小米路由器的官方固件优化不够好 很多人都出现限速 断流的现象 我之前也出现过限速的情况 最后没办法只能设置路由器定时重启 前几天突发奇想把定时重启关了 发现路由器居然连着好几天都没啥问题 我以为从此以后就能安心用了 可惜今天又出现了无法上网
  • Flutter Firebase身份验证教程

    在Flutter Firebase身份验证的这篇文章中 我们将了解如何使用Firebase的flutter插件向我们的Firebase应用程序验证用户身份 如果您不熟悉颤动 建议您先阅读此内容 然后再继续 它将为您提供有关抖动的基本概念 并
  • html 调高德地图 导航,地图控件-参考手册-地图 JS API

    在线插件是在基础地图服务上增加的额外功能 您可以根据自己的需要选择添加 插件分为两类 一类是地图控件 它们是用户与地图交互的UI元素 例如缩放控制条 ToolBar 等 一类是功能型插件 用来完成某些特定地图功能 比如鼠标工具 MouseT
  • Java多线程读取本地照片为二进制流,并根据系统核数动态确定线程数

    Java多线程读取图片内容并返回 1 ExecutorService线程池 2 效率截图 3 源码 1 ExecutorService线程池 ExecutorService线程池 并可根据系统核数动态确定线程池最大数 最大 最小线程数一致
  • vue打包上线如此简单

    大家好 我是大帅子 最近好多人私信我 要我出一期vue的打包上线的文章 那么今天他来了 废话不多说 我们直接开始吧 我们顺便给大家提一下vue项目中的优化 项目打包 1 打开终端 直接在终端输入 我把npm 跟 yarn的打包命令都放在这里
  • CMake增加版本号

    为工程设置版本号 当然可以在源文件中增加版本号变量 但也可以使用CMakeLists txt设置可变的版本号 提供更多的便利性 1 修改CMakeLists txt 用set命令设置版本号 设置最大版本号和最小版本号 set Calcula
  • python 历史版本下载大全

    历史版本下载地址 https www python org ftp python
  • java 对接OmniLayer钱包

    上代码 如果帮助到了你 请点点关注 谢谢 Data public class BtcApi Logger logger Logger getLogger BtcApi class private String rpcUrl private
  • 详解八大排序算法-附动图和源码(插入,希尔,选择,堆排序,冒泡,快速,归并,计数)

    目录 一 排序的概念及应用 1 排序的概念 2 排序的应用 3 常用的排序算法 二 排序算法的实现 1 插入排序 1 1直接插入排序 1 2希尔排序 缩小增量排序 2 选择排序 2 1直接选择排序 2 2堆排序 3 比较排序 3 1冒泡排序
  • Java接口幂等性设计场景解决方案v1.0

    Java接口幂等性设计场景解决方案v1 0 1 面试 实际开发场景 1 1面试场景题目 分布式服务接口的幂等性如何设计 比如不能重复扣款 1 2 题目分析 一个分布式系统中的某个接口 要保证幂等性 如何保证 这个事 其实是你做分布式系统的时
  • JSP session的生命周期简介说明

    转自 JSP session的生命周期简介说明 下文笔者将讲述session生命周期的相关简介说明 如下所示 Session存储在服务器端 当客户端关闭浏览器 并不意味着Session对象的销毁 如果不是显式调用invalidate 去销毁
  • [39题] 牛客深度学习专项题

    1 卷积核大小 提升卷积核 convolutional kernel 的大小会显著提升卷积神经网络的性能 这种说法是 正确的 错误的 这种说法是错误的 提升卷积核的大小并不一定会显著提升卷积神经网络的性能 卷积核的大小会影响网络的感受野 r