面试题

1、relu激活函数的好处

  • relu激活函数计算简单,可以减少很多计算量。反向传播求误差梯度时,计算量较大,采用relu激活函数,可以节省很多计算量。
  • 避免梯度消失问题。对于深层网络,sigmoid函数反向传播时,很容易会出现梯度消失问题(sigmoid接近饱和区时,变换太缓慢,导数趋于0,这种情况造成信息丢失),从而无法完成深层网络的训练。
  • 可以缓解过拟合的问题。relu会使一部分神经元的输出为0,这样造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合的发生。
  • 相比sigmoid函数,relu函数有利于随机梯度下降方法收敛。

2、为什么要使用非线性激活函数

如果使用线性激活函数(恒等激活函数),那么无论神经网络有多少层,一直在做线性组合,线性函数的组合还是线性函数,除非引入非线性函数,所以中间的隐藏层没有用了,还不如去掉中间的隐藏层。

3、神经网络为什么权值需要随机初始化

对于逻辑回归,可以将权重初始化为0,但如果将神经网络的权重初始化为0,再使用梯度下降方法,那么完全无效。如果权重一样,隐藏层单元都在做一样的运算,隐藏层的单元完全一样,这就是所谓的完全对称,在这种情况下多个隐藏层单元没有意义,所以权重都是随机初始化的。权重初始化一般很小,如果权重太大, z i = w i x i + b z_{i}=w_{i}x_{i}+b zi=wixi+b过大, a i = g ( z i ) a_{i}=g(z_{i}) ai=g(zi)过大,使用tanh或者sigmoid激活函数时,梯度非常小,梯度下降会非常慢。

4、神经网络中的epoch、batch、batch size和iteration

epoch:所有数据进行一个正向传播和一个反向传播
iteration:一个正向传播和一个反向传播
batch:在不能将数据一次性通过神经网络的时候,就需要将数据集分成几个 batch
batch size:一个 batch 中的样本总数
在一个 epoch 中,batch 数和迭代数是相等的。
举个例子:
CIFAR10 数据集有 50000 张训练图片,10000 张测试图片。现在选择 Batch Size = 256 对模型进行训练。
每个 Epoch 要训练的图片数量: 50000
训练集具有的 Batch 个数: 50000 / 256 = 195 + 1 = 196(不能整除时+1)
每个 Epoch 需要完成的 Batch 个数: 196
每个 Epoch 具有的 Iteration 个数: 196
每个 Epoch 中发生模型权重更新的次数: 196
训练 10 代后,模型权重更新的次数: 196 * 10 = 1960
不同代的训练,其实用的是同一个训练集的数据。第 1 代和第 10 代虽然用的都是训练集的五万张图片,但是对模型的权重更新值却是完全不同的。因为不同代的模型处于代价函数空间上的不同位置,模型的训练代越靠后,越接近谷底,其代价越小。
为什么要使用多于一个 epoch?
在神经网络中传递完整的数据集一次是不够的,而且需要将完整的数据集在同样的神经网络中传递多次。但是请记住,使用的是有限的数据集,并且使用一个迭代过程即梯度下降,因此仅仅更新权重一次或者说使用一个 epoch 是不够的。

5、小卷积核

小卷积核(如3x3)通过多层叠加可取得与大卷积核(如7x7)同等规模的感受野,比如一张12x12的图片,使用两种不同大小的卷积核(3x3、7x7)来卷积,步长为1,7x7的卷积核卷积一次得到6x6大小的特征图,3X3的卷积核卷积三次得到6x6大小的特征图。

小卷积核需多层叠加,加深了网络深度进而增强了网络容量(model capacity)和复杂度(model complexity)。

增强了网络容量的同时减少了参数个数。

更多的非线性变换。3个3x3的卷积可以使用3次relu激活函数,1个7x7的卷积只用一次relu激活函数。

6、CNN结构特点

局部连接,权值共享,池化操作,多层次结构。

  • 局部连接使网络可以提取数据的局部特征
  • 权值共享大大降低了网络的训练难度,一个Filter只提取一个特征,在整个图片(或者语音/文本) 中进行卷积
  • 池化操作与多层次结构一起,实现了数据的降维,将低层次的局部特征组合成为较高层次的特征,从而对整个图片进行表示。

7、pooling层作用

  • 增加特征平移不变性。pooling可以提高网络对微小位移的容忍能力。
  • 减小特征图大小。pooling层对空间局部区域进行下采样,使下一层需要的参数量和计算量减少,并降低过拟合风险,提高模型的泛化能力。
  • max pooling可以带来非线性。这是目前max pooling更常用的原因之一。

8、Overfitting怎么解决

首先所谓过拟合,指的是一个模型过于复杂之后,它可以很好地“记忆”每一个训练数据中随机噪音的部分而忘记了去“训练”数据中的通用趋势。过拟合具体表现在:模型在训练数据上损失函数较小,预测准确率较高;但是在测试数据上损失函数比较大,预测准确率较低。
解决Overfitting的常用手段:

  • Parameter Norm Penalties(参数范数惩罚);
  • Dataset Augmentation (数据集增强);
  • Early Stopping(提前终止);
  • Parameter Tying and Parameter Sharing (参数绑定与参数共享);
  • Bagging and Other Ensemble Methods(Bagging 和其他集成方法);
  • dropout;
  • regularization;
  • batch normalization;

9、什么是梯度消失和爆炸,怎么解决?

当训练较多层数的模型时,一般会出现梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。注意在反向传播中,当网络模型层数较多时,梯度消失和梯度爆炸是不可避免的。

深度神经网络中的梯度不稳定性,根本原因在于前面层上的梯度是来自于后面层上梯度的乘积。当存在过多的层次时,就出现了内在本质上的不稳定场景。前面的层比后面的层梯度变化更小,故变化更慢,故引起了梯度消失问题。前面层比后面层梯度变化更快,故引起梯度爆炸问题。

神经网络的训练中,通过改变神经元的权重,使网络的输出值尽可能逼近标签以降低误差值,训练普遍使用BP算法,核心思想是,计算出输出与标签间的损失函数值,然后计算其相对于每个神经元的梯度,进行权值的迭代。

梯度消失会造成权值更新缓慢,模型训练难度增加。造成梯度消失的一个原因是,许多激活函数将输出值挤压在很小的区间内,在激活函数两端较大范围的定义域内梯度为0,造成学习停止。

解决梯度消失和梯度爆炸问题,常用的有以下几个方案:

  • 预训练模型 + 微调
  • 梯度剪切 + 正则化
  • relu、leakrelu、elu等激活函数
  • BN批归一化

10、训练过程中模型不收敛,是否说明这个模型无效,致模型不收敛的原因有哪些?

不一定。导致模型不收敛的原因有很多种可能,常见的有以下几种:

  • 没有对数据做归一化。
  • 没有检查过结果。这里的结果包括预处理结果和最终的训练测试结果。
  • 忘了做数据预处理。
  • 忘了使用正则化。
  • Batch Size设的太大。
  • 学习率设的不对。
  • 最后一层的激活函数用的不对。
  • 网络存在坏梯度。比如Relu对负值的梯度为0,反向传播时,0梯度就是不传播。
  • 参数初始化错误。
  • 网络太深。隐藏层神经元数量错误。

11、数据为什么要归一化

归一化就是将数据映射到[0,1]或者[-1,1]区间或者其它区间。

  • 输入数据单位不一样,有些数据的范围可能特别大,导致神经网络收敛慢、训练时间长
  • 数据范围大的输入在模式识别中的作用可能会偏大,而数据范围小的输入的作用就可能偏小。
  • 由于神经网络输出层的激活函数的值域是有限制的,因此需要将网络训练目标数据映射到激活函数的值域。例如神经网络的输出层若采用sigmoid激活函数,它的值域(0,1),也就是说神经网络的输出只能限制在(0,1)之间,所以训练数据的输出要归一化到[0,1]区间。
  • S型激活函数在(0,1)区间以外的区间很平缓,区分度太小。

12、特征是否必须要归一化,请结合逻辑回归和决策树算法做简要分析。
特征并不一定要归一化;
在主要基于梯度下降优化算法的模型如逻辑回归,GBDT,需要将特征归一;
在决策树模型中,如XGBoost,不需要特征归一化。

13、L1正则化和L2正则化的区别
L1是模型各个参数的绝对值之和;L2是模型各个参数的平方和的开方值。
L1正则化让大部分变量解为0,这就让有效的变量的解减少,从而达到一种稀疏的目的,会产生稀疏权重矩阵,具有特征选择的功能;L2正则化相当于给每个变量相同的权值,不强调某一个(些)变量,考虑每个变量(即考虑全局特性),L2正则化具有比较好的鲁棒性。

14、PCA和特征选择的区别
特征选择是从已存在的特征中选取信息量最多的特征,特征选择之后所选择出来的特征仍然具有可解释性,可以在原数据中找到这些特征;
PCA是将已存在的特征进行压缩,将维后的特征不是原本特征矩阵中任何一个特征,而是通过某些方式组合起来的新特征,降维后的特征不具有可解释性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值