BAT机器学习面试1000题系列(126-130题)

126.衡量分类器的好坏。

@我愛大泡泡,来源:blog.csdn.net/woaidapao
  这里首先要知道TP、FN(真的判成假的)、FP(假的判成真)、TN四种(可以画一个表格)。
几种常用的指标:

精度precision = TP/(TP+FP) = TP/~P (~p为预测为真的数量)

召回率 recall = TP/(TP+FN) = TP/ P

F1值: 2/F1 = 1/recall + 1/precision

ROC曲线:ROC空间是一个以伪阳性率(FPR,false positive rate)为X轴,真阳性率(TPR, true positive rate)为Y轴的二维坐标系所代表的平面。其中真阳率TPR = TP / P = recall, 伪阳率FPR = FP / N


127.机器学习和统计里面的auc的物理意义是什么?

  详情参见zhihu.com/question/3984


128.观察增益gain, alpha和gamma越大,增益越小?

@AntZ:xgboost寻找分割点的标准是最大化gain. 考虑传统的枚举每个特征的所有可能分割点的贪心法效率太低,xgboost实现了一种近似的算法。大致的思想是根据百分位法列举几个可能成为分割点的候选者,然后从候选者中计算Gain按最大值找出最佳的分割点。它的计算公式分为四项, 可以由正则化项参数调整(lamda为叶子权重平方和的系数, gama为叶子数量):

第一项是假设分割的左孩子的权重分数, 第二项为右孩子, 第三项为不分割总体分数, 最后一项为引入一个节点的复杂度损失 由公式可知, gama越大gain越小, lamda越大, gain可能小也可能大。 原问题是alpha而不是lambda, 这里paper上没有提到, xgboost实现上有这个参数. 上面是我从paper上理解的答案,下面是搜索到的: zhidao.baidu.com/questi lambda[默认1]权重的L2正则化项。(和Ridge regression类似)。 这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。11、alpha[默认1]权重的L1正则化项。(和Lasso regression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。 gamma[默认0]在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。


129.什么造成梯度消失问题? 推导一下

@许韩,来源:zhihu.com/question/4123

Yes you should understand backdrop-Andrej Karpathy

How does the ReLu solve the vanishing gradient problem?

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

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



130.什么是梯度消失和梯度爆炸?

@寒小阳,反向传播中链式法则带来的连乘,如果有数很小趋于0,结果就会特别小(梯度消失);如果数都比较大,可能结果会很大(梯度爆炸)。 @单车,下段来源:zhuanlan.zhihu.com/p/25 层数比较多的神经网络模型在训练时也是会出现一些问题的,其中就包括梯度消失问题(gradient vanishing problem)和梯度爆炸问题(gradient exploding problem)。梯度消失问题和梯度爆炸问题一般随着网络层数的增加会变得越来越明显。

例如,对于下图所示的含有3个隐藏层的神经网络,梯度消失问题发生时,接近于输出层的hidden layer 3等的权值更新相对正常,但前面的hidden layer 1的权值更新会变得很慢,导致前面的层权值几乎不变,仍接近于初始化的权值,这就导致hidden layer 1相当于只是一个映射层,对所有的输入做了一个同一映射,这是此深层网络的学习就等价于只有后几层的浅层网络的学习了。



而这种问题为何会产生呢?以下图的反向传播为例(假设每一层只有一个神经元且对于每一层

,其中

为sigmoid函数)


可以推导出



而sigmoid的导数

如下图



可见,

的最大值为1/4,而我们初始化的网络权值|w|通常都小于1,因此

,因此对于上面的链式求导,层数越多,求导结果

越小,因而导致梯度消失的情况出现。

这样,梯度爆炸问题的出现原因就显而易见了,即

,也就是w比较大的情况。但对于使用sigmoid激活函数来说,这种情况比较少。因为

的大小也与w有关(z=wx+b),除非该层的输入值x在一直一个比较小的范围内。

其实梯度爆炸和梯度消失问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑用ReLU激活函数取代sigmoid激活函数。另外,LSTM的结构设计也可以改善RNN中的梯度消失问题。

编辑于 2017-12-07

文章被以下专栏收录