机器学习常见面试问题及答案汇总

一些常见的机器学习面试题(不定时更新)。

  1. 激活函数的作用?
    激活函数为神经网络提供了非线性。如果不使用激活函数,每一层的输入都相当于是上一层输入的线性组合,无论网络有多少层,最终都能写成只有一层的线性组合。激活函数作为非线性函数,使神经网络能够逼近任意一个函数,提高了网络的近似能力。

  2. 常见的激活函数?

  • sigmoid:

    sigmoid与神经元的功能类似,并且可微,但缺点就是在输入值特别大或者特别小时,对应的梯度会接近于0,会导致梯度爆炸;不是关于原点对称的,会导致在训练过程中输入的分布发生变化。
  • tanh:

    tanh解决了关于原点对称的问题,但是梯度爆炸的问题依旧存在。
  • ReLU:

    ReLU很好的解决了梯度爆炸的问题,收敛速度更快,但是不关于原点对称,并且在负半部分输出会一直为0,导致神经元死亡。
    -Leaky ReLU
    在负数部分使用了一个斜率很小的线性函数,解决了dead ReLU的问题。
  1. 激活函数有什么性质?
  • 非线性,为神经网络提供非线性映射;
  • 可微性,梯度传播;
  • 单调性,保证万能逼近定理;
  • 输出值有范围
  1. softmax函数是做什么的?
    让多分类的神将网络输成为一个和为1的概率分布。

  2. 反向传播是什么?
    信息通过网络从输入流行输出被称为前向传播。训练中,前向传播会产生一个代价函数。反向传播算法允许代价函数的信息通过网络向后流动,一边计算梯度。梯度下降使用该梯度进行学习。反向传播算法可以由计算图来描述。计算图中每一个节点都表示变量,包括标量,向量,矩阵等。如果y是由一个操作计算在x上得到的,就画一条从x到y的有向边,上面标着操作。

  3. 静态图和动态图的区别?
    神经网络框架分为静态图框架和动态图框架。Tensorfolw使用静态图,每次运行之前都要先定义好计算图,,再把具体的数字放入其中,静态图运行时不需要重新构建计算图,所以运算更快。Pytorch是动态图,每次都会重新构建一个新的计算图。动态图比较直观,方便debug,但是效率相对的不高。动态图中只有叶子节点的梯度会被保留下来,使用.retain_grad()可以保留任意非叶子节点的梯度。

  4. 什么是梯度下降?
    梯度下降是一种优化算法,目的是找到函数的局部的极值,如果要找的是局部最小值,需要向函数当前点的梯度的反方向上以一定步长进行迭代探索;如果要找到是最大值,则是以梯度方向探索。迭代的公式为:
    ,其中是学习率, 参数,是要求极小值的函数。

  5. 梯度下降的方法?

  • BGD:每个迭代计算整个数据集的所有样本的梯度
  • SGD:每次迭代只计算一个样本的梯度
  • min-batch GD: 每次迭代计算一个batch的样本的梯度
  • momentum:在SGD的基础上加上了一个动量以减小震荡。
  • ...
  1. 什么是梯度消失和梯度爆炸?解决梯度消失和梯度爆炸的方案都有哪些?
    在神经网络里,随着层数的增多,梯度的值也在不断累积。如果梯度大于1,层数增多的时候,最终的求出的梯度更新将以指数形式增加,即发生梯度爆炸,如果小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失。
    解决梯度爆炸可以使用正则化,对权重进行正则化限制过拟合,防止梯度爆炸。
    使用ReLU作为激活函数,也可以减少梯度爆炸、梯度消失的问题。
    还有一个是使用batch normalization,规范每一层的输出,消除权重放大缩小带来的影响,进而解决梯度爆炸或者消失的问题。
    LSTM使用长时记忆,解决了梯度爆炸的问题。
    面试题—梯度消失于梯度爆炸

  2. 什么过拟合和欠拟合,如何避免?
    过拟合指的是经过训练的模型,在训练集上表现得十分出色,但是在测试集上表现得很差的情况。可能的原因有训练数据太少,训练次数太多,模型太过复杂等,使模型只会“背答案”,面对没有见过的题型不知所措。
    欠拟合则相反,是因为模型没有充分训练,以至于对数据认识不足,在训练集和测试集表现性能都很差。原因可能是模型太简单,训练次数太少,数据没有清洗等。
    更多关于过拟合、欠拟合、恰好拟合的处理方法。

  3. Dropout的作用是什么?
    在前向过程中让神经元以一定的概率被停止工作,可以减少相邻神经元之间的依赖,减少过拟合,提高泛化能力。

  4. 算法分类问题的评价标准有哪些?ROC和AUC分别指是什么, 其中图坐标(横坐标和纵坐标)的意义是?
    先介绍一下混淆矩阵

    混淆矩阵 (https://blog.csdn.net/quiet_girl/article/details/70830796)

    true postive: 正确分类,真实数据为正,预测为正
    true negetive: 正确分类,真实数据为负,样本为负
    false positive: 错误分类, 真实样本为负,预测为正
    false negative: 错误分类,真实样本为正,预测为负
    算法分类的指标有:
    准确率 accuracy:正确分类的样本占所有样本的比例
    召回率 recall:预测为正且正确的样本占真实样本的比例
    精确率 precision:预测为正且正确的样本占所有预测为正的样本的比例
    f1 score: Precison 和 Recall的结合
    ROC曲线:横轴为false positive rate,纵轴为true positive rate,曲线越贴近左上角,说明表现越好
    AUC:ROC曲线下的面积,越接近1说明越好
    机器学习:准确率(Precision)、召回率(Recall)、F值(F-Measure)、ROC曲线、PR曲线:https://blog.csdn.net/quiet_girl/article/details/70830796

  5. 常见的循环神经网络都有哪些?他们的优缺点及应用场景?详细描述之前其中一种网络结构及其推导过程.
    LSTM:长短期记忆模型,在RNN的基础上加上了遗忘门和记忆单元。
    GRU:门控循环单元,LSTM 简化得来的。
    应用:文本生成,机器翻译,语音识别等。

  6. LSTM和GRU的区别是什么?
    从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM则把hidden state 包装起来。GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。

  7. LSTM为什么能解决梯度爆炸/消失的问题?
    LSTM使用的gate选择让一部分的信息通过,gate是由一个sigmoid和一个点乘组成,当gate打开时,梯度接近于1,梯度不会消失;梯度也不会超过1,因此不会梯度爆炸。
    https://www.zhihu.com/question/44895610

  8. CNN的平移不变性是什么?
    平移不变性指的是CNN对于同一特征以及平移之后的版本都能输出相同的结果,由卷积核池化实现的。卷积核能够检测到在任意位置的相同特征。池化操作对应的感受野中,如果最大值(对于最大池化)被移动了,但仍在感受野范围内,那么池化依旧输出相同的输出。

  9. 扩大感受野的方法?
    增加网络深度,池化,空洞卷积

  10. 有哪些调参技巧?
    https://www.notion.so/a30db4067c00479aaa0d71fe1785cb0c#fa2c11ce51d84f25a67323e49f78c704

  11. 目标检测里如何解决前景少背景多的问题?

  • 硬数据挖掘
  • 类平衡思路改进过的损失函数
  1. ROIPooling和 ROIAlign的区别
  • ROIPool的候选区相对较大
  • ROI采用直接拟合的方式进行候选区域求取
  1. SVM与LR的区别
    LR:logistic regression是基于概率论的方法,通过极大似然估计得到参数的值。每个点都会参与决策。
    SVM:最大化间隔,只考虑在分类间隔上的点。SVM可以使用核函数。

https://bbs.cvmart.net/topics/1699

你可能感兴趣的:(机器学习常见面试问题及答案汇总)