一些常见的机器学习面试题(不定时更新)。
激活函数的作用?
激活函数为神经网络提供了非线性。如果不使用激活函数,每一层的输入都相当于是上一层输入的线性组合,无论网络有多少层,最终都能写成只有一层的线性组合。激活函数作为非线性函数,使神经网络能够逼近任意一个函数,提高了网络的近似能力。常见的激活函数?
- sigmoid:
sigmoid与神经元的功能类似,并且可微,但缺点就是在输入值特别大或者特别小时,对应的梯度会接近于0,会导致梯度爆炸;不是关于原点对称的,会导致在训练过程中输入的分布发生变化。 - tanh:
tanh解决了关于原点对称的问题,但是梯度爆炸的问题依旧存在。 - ReLU:
ReLU很好的解决了梯度爆炸的问题,收敛速度更快,但是不关于原点对称,并且在负半部分输出会一直为0,导致神经元死亡。
-Leaky ReLU
在负数部分使用了一个斜率很小的线性函数,解决了dead ReLU的问题。
- 激活函数有什么性质?
- 非线性,为神经网络提供非线性映射;
- 可微性,梯度传播;
- 单调性,保证万能逼近定理;
- 输出值有范围
softmax函数是做什么的?
让多分类的神将网络输成为一个和为1的概率分布。
反向传播是什么?
信息通过网络从输入流行输出被称为前向传播。训练中,前向传播会产生一个代价函数。反向传播算法允许代价函数的信息通过网络向后流动,一边计算梯度。梯度下降使用该梯度进行学习。反向传播算法可以由计算图来描述。计算图中每一个节点都表示变量,包括标量,向量,矩阵等。如果y是由一个操作计算在x上得到的,就画一条从x到y的有向边,上面标着操作。静态图和动态图的区别?
神经网络框架分为静态图框架和动态图框架。Tensorfolw使用静态图,每次运行之前都要先定义好计算图,,再把具体的数字放入其中,静态图运行时不需要重新构建计算图,所以运算更快。Pytorch是动态图,每次都会重新构建一个新的计算图。动态图比较直观,方便debug,但是效率相对的不高。动态图中只有叶子节点的梯度会被保留下来,使用.retain_grad()可以保留任意非叶子节点的梯度。什么是梯度下降?
梯度下降是一种优化算法,目的是找到函数的局部的极值,如果要找的是局部最小值,需要向函数当前点的梯度的反方向上以一定步长进行迭代探索;如果要找到是最大值,则是以梯度方向探索。迭代的公式为:
,其中是学习率, 参数,是要求极小值的函数。梯度下降的方法?
- BGD:每个迭代计算整个数据集的所有样本的梯度
- SGD:每次迭代只计算一个样本的梯度
- min-batch GD: 每次迭代计算一个batch的样本的梯度
- momentum:在SGD的基础上加上了一个动量以减小震荡。
- ...
什么是梯度消失和梯度爆炸?解决梯度消失和梯度爆炸的方案都有哪些?
在神经网络里,随着层数的增多,梯度的值也在不断累积。如果梯度大于1,层数增多的时候,最终的求出的梯度更新将以指数形式增加,即发生梯度爆炸,如果小于1,那么随着层数增多,求出的梯度更新信息将会以指数形式衰减,即发生了梯度消失。
解决梯度爆炸可以使用正则化,对权重进行正则化限制过拟合,防止梯度爆炸。
使用ReLU作为激活函数,也可以减少梯度爆炸、梯度消失的问题。
还有一个是使用batch normalization,规范每一层的输出,消除权重放大缩小带来的影响,进而解决梯度爆炸或者消失的问题。
LSTM使用长时记忆,解决了梯度爆炸的问题。
面试题—梯度消失于梯度爆炸什么过拟合和欠拟合,如何避免?
过拟合指的是经过训练的模型,在训练集上表现得十分出色,但是在测试集上表现得很差的情况。可能的原因有训练数据太少,训练次数太多,模型太过复杂等,使模型只会“背答案”,面对没有见过的题型不知所措。
欠拟合则相反,是因为模型没有充分训练,以至于对数据认识不足,在训练集和测试集表现性能都很差。原因可能是模型太简单,训练次数太少,数据没有清洗等。
更多关于过拟合、欠拟合、恰好拟合的处理方法。Dropout的作用是什么?
在前向过程中让神经元以一定的概率被停止工作,可以减少相邻神经元之间的依赖,减少过拟合,提高泛化能力。-
算法分类问题的评价标准有哪些?ROC和AUC分别指是什么, 其中图坐标(横坐标和纵坐标)的意义是?
先介绍一下混淆矩阵
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 常见的循环神经网络都有哪些?他们的优缺点及应用场景?详细描述之前其中一种网络结构及其推导过程.
LSTM:长短期记忆模型,在RNN的基础上加上了遗忘门和记忆单元。
GRU:门控循环单元,LSTM 简化得来的。
应用:文本生成,机器翻译,语音识别等。LSTM和GRU的区别是什么?
从结构上来说,GRU只有两个门(update和reset),LSTM有三个门(forget,input,output),GRU直接将hidden state 传给下一个单元,而LSTM则把hidden state 包装起来。GRU 参数更少因此更容易收敛,但是数据集很大的情况下,LSTM表达性能更好。LSTM为什么能解决梯度爆炸/消失的问题?
LSTM使用的gate选择让一部分的信息通过,gate是由一个sigmoid和一个点乘组成,当gate打开时,梯度接近于1,梯度不会消失;梯度也不会超过1,因此不会梯度爆炸。
https://www.zhihu.com/question/44895610CNN的平移不变性是什么?
平移不变性指的是CNN对于同一特征以及平移之后的版本都能输出相同的结果,由卷积核池化实现的。卷积核能够检测到在任意位置的相同特征。池化操作对应的感受野中,如果最大值(对于最大池化)被移动了,但仍在感受野范围内,那么池化依旧输出相同的输出。扩大感受野的方法?
增加网络深度,池化,空洞卷积有哪些调参技巧?
https://www.notion.so/a30db4067c00479aaa0d71fe1785cb0c#fa2c11ce51d84f25a67323e49f78c704目标检测里如何解决前景少背景多的问题?
- 硬数据挖掘
- 类平衡思路改进过的损失函数
- ROIPooling和 ROIAlign的区别
- ROIPool的候选区相对较大
- ROI采用直接拟合的方式进行候选区域求取
- SVM与LR的区别
LR:logistic regression是基于概率论的方法,通过极大似然估计得到参数的值。每个点都会参与决策。
SVM:最大化间隔,只考虑在分类间隔上的点。SVM可以使用核函数。