题目来源:
作者:xfcherish
链接:https://www.nowcoder.com/discuss/65323?type=0&order=0&pos=50&page=1
如果本文有什么错误,欢迎指出,感激不尽!!!
<1> 逻辑回归和线性回归对比有什么优点?
可以用于分类任务,速度快,能容易地更新模型吸收新的数据。
<2> 逻辑回归可以处理非线性问题吗?
不可以,仅能用于线性问题。只有当目标和特征是线性关系时,才能用逻辑回归。在应用逻辑回归时注意两点:一是当知道模型是非线性时,不适用逻辑回归;二是当使用逻辑回归时,应注意选择和目标为线性关系的特征。
<3> 分类问题有哪些评价指标?每种的适用场景。
https://www.cnblogs.com/zhaokui/p/ml-metric.html
<4> 讲一下正则化,L1和L2正则化各自的特点和适用场景。
深度学习可能存在过拟合问题——高方差,有两个解决方法,一个是正则化,另一个是准备更多的数据,这是非常可靠的方法,但你可能无法时时刻刻准备足够多的训练数据或者获取更多数据的成本很高,但正则化通常有助于避免过拟合或减少你的网络误差。
2. L1和L2的异同点
相同点:都用于避免过拟合
不同点:L1可以让一部分特征的系数缩小到0,从而间接实现特征选择。所以L1适用于特征之间有关联的情况。
L2让所有特征的系数都缩小,但是不会减为0,它会使优化求解稳定快速。所以L2适用于特征之间没有关联的情况
<5> 讲一下常用的损失函数以及各自的适用场景。
交叉熵:二分类
均值方差:回归问题
softmax:多分类
sigmoid:二分类
0-1损失函数:二分类
绝对值损失:回归问题
绝对值损失函数
<6> 讲一下决策树和随机森林
<7> 讲一下GBDT的细节,写出GBDT的目标函数。 GBDT和Adaboost的区别与联系
<8> 手推softmax loss公式
<9> 讲一下SVM, SVM与LR有什么联系。
<10>讲一下PCA的步骤。PCA和SVD的区别和联系
<11> 讲一下ensemble
<12> 偏差和方差的区别。ensemble的方法中哪些是降低偏差,哪些是降低方差?
...... 这部分问得太琐碎了,我能记起来的问题就这么多了。我的感觉,这部分问题大多数不是问得很深,所以不至于被问得哑口无言,总有得扯;但是要想给出一个特别深刻的回答,还是需要对机器学习的基础算法了解比较透彻。
(4)深度学习基础
这部分的准备,我推荐花书(Bengio的Deep learning)和 @魏秀参 学长的《解析卷积神经网络-深度学习实践手册》
下面是我在面试中被问到过的问题:
<1> 手推BP
<2> 手推RNN和LSTM结构
<3> LSTM中每个gate的作用是什么,为什么跟RNN比起来,LSTM可以防止梯度消失
<4> 讲一下pooling的作用, 为什么max pooling要更常用?哪些情况下,average pooling比max pooling更合适?
<5> 梯度消失和梯度爆炸的原因是什么? 有哪些解决方法?
是由于反向传播过程中链式求导梯度累积导致的,网络层数过多时,当w乘梯度都大于1时产生梯度爆炸,小于1时产生梯度消失;
解决方法:
-
预训练加微调
-
- 梯度剪切、权重正则(针对梯度爆炸)
-
- 使用不同的激活函数
-
- 使用batchnorm
-
- 使用残差结构
-
- 使用LSTM网络
<6> CNN和RNN的梯度消失是一样的吗?
<6> 有哪些防止过拟合的方法?
使用正则化;加bn层;增加数据量;bagging方法;
<7> 讲一下激活函数sigmoid,tanh,relu. 各自的优点和适用场景?
sigmoid:可以将特征映射到0-1之间,可以用于二分类
tanh:将特征映射到-1到1之间,可以用于大部分网络之中;
relu:非线性激活函数,可以缓解梯度消失,稀疏特征,加快收敛速度,可以用于中间卷积网络层后;
<8> relu的负半轴导数都是0,这部分产生的梯度消失怎么办?
使用leaky relu,可以在负半轴也有较小的梯度。
<9> batch size对收敛速度的影响。
batch size越大,收敛速度越快,但是需要更多的轮数才能获得小batch size同等的精度。
<10> 讲一下batch normalization
相对于正则化,可以减少使用正则化或者不用;
加快收敛速度;
防止过拟合;
减轻梯度消失;
<11> CNN做卷积运算的复杂度。如果一个CNN网络的输入channel数目和卷积核数目都减半,总的计算量变为原来的多少?
1/8
<12> 讲一下AlexNet的具体结构,每层的作用
卷积层提取特征,
池化层下采样来获得更大的感受野,
全连接层整合特征,为后续的分类做基础。
<13> 讲一下你怎么理解dropout,分别从bagging和正则化的角度
直观上理解:不要依赖于任何一个特征,因为该单元的输入可能随时被清除,因此该单元通过这种方式传播下去,并为单元的四个输入增加一点权重,通过传播所有权重,dropout将产生收缩权重的平方范数的效果,和之前讲的L2正则化类似;实施dropout的结果实它会压缩权重,并完成一些预防过拟合的外层正则化;L2对不同权重的衰减是不同的,它取决于激活函数倍增的大小。
<14> data augmentation有哪些技巧?
-
Color Jittering:对颜色的数据增强:图像亮度、饱和度、对比度变化(此处对色彩抖动的理解不知是否得当);
-
PCA Jittering:首先按照RGB三个颜色通道计算均值和标准差,再在整个训练集上计算协方差矩阵,进行特征分解,得到特征向量和特征值,用来做PCA Jittering;
-
Random Scale:尺度变换;
-
Random Crop:采用随机图像差值方式,对图像进行裁剪、缩放;包括Scale Jittering方法(VGG及ResNet模型使用)或者尺度和长宽比增强变换;
-
Horizontal/Vertical Flip:水平/垂直翻转;
-
Shift:平移变换;
-
Rotation/Reflection:旋转/仿射变换;
-
Noise:高斯噪声、模糊处理;
-
Label Shuffle:类别不平衡数据的增广;
<15> 讲一下你了解的优化方法,sgd, momentum, rmsprop, adam的区别和联系
https://blog.csdn.net/u012151283/article/details/78154917
https://blog.csdn.net/u010089444/article/details/76725843
<16> 如果训练的神经网络不收敛,可能有哪些原因?
1、没有对数据进行归一化
2、忘记检查输入和输出
3、没有对数据进行预处理
4、没有对数据正则化
5、使用过大的样本
6、使用不正确的学习率
7、在输出层使用错误的激活函数
8、网络中包含坏梯度
9、初始化权重错误
10、过深的网络
11、隐藏单元数量错误
12、优化算法不对,一般用adam居多。
13、数据随机性太强,同时网络结构太复杂(样本空间太大,同时样本数量不够,网络函数空间也大)
14、学习率过大。网络可能快要收敛了,却忽然在下一个epoch走向了错误的方向,最终导致不收敛。
作者:菜鸟瞎编
链接:https://www.jianshu.com/p/bbd11ad4e973
<17> 说一下你理解的卷积核, 1x1的卷积核有什么作用?
减少参数,整合特征通道,升维和降维。