从今天起,豆芽有空也尽己所能,帮助一下大家。

面经来源:https://www.nowcoder.com/discuss/699103?source_id=discuss_experience_nctrack&channel=-1


1. 分类算法常用哪些?

  1. KNN

  2. LR(逻辑回归)

  3. SVM

  4. 决策树、随机森林

  5. 神经网络


2. 回归算法一般用哪些?

  1. 线性回归

  2. 决策树、GBDT

  3. XGboost

  4. 神经网络


3. 回归方法中使用的评价指标是哪些?R方有使用过吗?

有几个指标:

  1. 均方误差(MSE)

  2. 均方根误差(RMSE)

  3. MAE(平均绝对误差)

  4. R Squared


4. 平时使用的损失函数是哪些?

  1. 分类:交叉熵

  2. 回归:均方误差(MSE)

  3. 分割:IOUloss


5. 分类中使用的损失函数是哪些?为什么是交叉熵而不是mae?

  1. 0-1损失函数(zero-one loss):在感知机中,使用的该损失函数

  2. 对数损失函数(log loss):用于最大似然估计,等价于交叉熵损失函数

  3. 指数损失函数(exponential loss):在adaboost中使用的该损失函数

  4. 合页损失函数(hinge loss):在SVM中使用的该损失函数

  5. 交叉熵损失函数(cross-entropy loss):用于分类任务

在LR与神经网络中,分类最常使用的是交叉熵*

  1. 因为平方损失函数权重更新过慢,采用交叉熵损失函数可以完美解决过慢的问题,它具有“误差大的时候,权重更新快;误差小的时候,权重更新慢”的良好性质。

  2. sigmoid作为激活函数的时候,如果采用均方误差损失函数,那么这是一个非凸优化问题,不宜求解,容易陷入局部最优解。而采用交叉熵损失函数依然是一个凸优化问题,更容易优化求解。


6. 对于小数据集一般怎么处理呢?小数据集中如何防止过拟合?

第一个思路:

小数据集配合神经网络时,必须要考虑过拟合的问题。

最有效的方法应该是扩充数据集:数据集越大,网络泛化性能越好,所以努力扩充数据集,通过平移、翻转、旋转、放缩、随机截取、加噪声、色彩抖动等等方式。

其他防止过拟合的方法:比如l1、l2,dropout、BN、验证集、模型集成

第二个思路:

神经网络需要大数据,所以可以考虑其他机器学习方法。


7. 常用什么激活函数?

  1. sigmoid

  2. tanh

  3. ReLU

  4. Leaky ReLU

  5. Mish激活函数


8. sigmoid函数有使用过吗?与relu激活函数有什么不同?

sigmoid型函数是第一个被广泛应用于神经网络的激活函数。经过sigmoid型函数作用后,输出的值范围在[0,1]之间。但是sigmoid型函数的输出存在均值不为0的情况,并且存在梯度消失的问题,在深层网络中被其他激活函数替代。在逻辑回归中使用的该激活函数用于输出分类。

  1. 函数不同

  2. sigmoid存在梯度消失的问题;relu型函数可以有效避免梯度消失的问题




以上所有题的答案其实都来源于我的博客面经,欢迎大家围观:https://blog.nowcoder.net/jiangwenbo