標籤:

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中的梯度消失問題。


推薦閱讀:

TAG:机器学习 |