【深度學(xué)習(xí)-6】Normalization and Evaluation

在上一篇文章中,我們學(xué)會了如何計(jì)算一個人工神經(jīng)元的輸出。人工神經(jīng)網(wǎng)絡(luò)的計(jì)算實(shí)際上就是從input層開始,按照同樣的方法依次計(jì)算網(wǎng)絡(luò)各層中的神經(jīng)元,直到得到最終的output。神經(jīng)網(wǎng)絡(luò)的權(quán)重值(weights)決定了網(wǎng)絡(luò)最終的輸出值。訓(xùn)練(training)神經(jīng)網(wǎng)絡(luò)的過程實(shí)際上就是不斷地調(diào)整權(quán)重,從而使網(wǎng)絡(luò)輸出的結(jié)果更優(yōu)的過程。

在學(xué)習(xí)具體的神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法之前,我們先來學(xué)習(xí)如何對input數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化(normalization),以及如何對神經(jīng)網(wǎng)絡(luò)的output進(jìn)行評估(evaluation)。這一部分內(nèi)容并不僅僅針對神經(jīng)網(wǎng)絡(luò),對其他類型的模型也適用。

Normalization

我們拿到的原始數(shù)據(jù)往往不能直接使用,一般需要經(jīng)過數(shù)據(jù)清洗和標(biāo)準(zhǔn)化之后才能用來訓(xùn)練。下面我們學(xué)習(xí)一些常用的標(biāo)準(zhǔn)化方法。

One-of-N Encoding
對于無序分類(各個類別不能排序)數(shù)據(jù),我們使用的標(biāo)準(zhǔn)化方法是One-of-N encoding,有時也稱之為one-hot encoding。在神經(jīng)網(wǎng)絡(luò)中,每個輸出神經(jīng)元對應(yīng)一個類別(class)。比如在識別手寫數(shù)字的問題中,一共有10個class(0-9),我們的神經(jīng)網(wǎng)絡(luò)就有10個輸出神經(jīng)元,每個輸出神經(jīng)元的softmax激活函數(shù)給出input屬于該class(具體數(shù)字)的概率。這十個數(shù)字的編碼結(jié)果如下:

0 -> [1,0,0,0,0,0,0,0,0,0]
1 -> [0,1,0,0,0,0,0,0,0,0]
2 -> [0,0,1,0,0,0,0,0,0,0]
3 -> [0,0,0,1,0,0,0,0,0,0]
4 -> [0,0,0,0,1,0,0,0,0,0]
5 -> [0,0,0,0,0,1,0,0,0,0]
6 -> [0,0,0,0,0,0,1,0,0,0]
7 -> [0,0,0,0,0,0,0,1,0,0]
8 -> [0,0,0,0,0,0,0,0,1,0]
9 -> [0,0,0,0,0,0,0,0,0,1]

如果我們使用tanh激活函數(shù),需要把0替換成-1。

Range Normalization
對于實(shí)數(shù)數(shù)據(jù)或者有序分類(類別可以排序)的數(shù)據(jù),我們可以使用range標(biāo)準(zhǔn)化,也就是將input數(shù)據(jù)的range映射到激活函數(shù)的range。比如,Sigmoid的range是0到1,tanh的range是-1到1。
range標(biāo)準(zhǔn)化的公式:

range_normalization.png

dH and dL:high and low values of the data to be normalized
nH and nL: high and low values to normalize into (usually 0 and 1)
有時候我們需要normalization的逆運(yùn)算(denormalization),公式如下:
range_denormalization.png

Z-Score Normalization
Z-score是針對實(shí)數(shù)數(shù)據(jù)或者有序分類數(shù)據(jù)最常用的normalization方法。Z-score的計(jì)算公式如下:

mean.png

sd.png

z-score.png

Evaluation

訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目標(biāo)是讓網(wǎng)絡(luò)的output更加接近我們的期望值,下面我們來學(xué)習(xí)如何評價神經(jīng)網(wǎng)絡(luò)的output。

二元分類(Binary Classification)問題
二元分類實(shí)際上就是二選一的問題,比如 true or false, yes or no, correct or incorrect。處理此類問題的神經(jīng)網(wǎng)絡(luò)一般只有一個輸出神經(jīng)元,輸出的是input屬于某一類(比如true)的概率p。由于只有2個類別,且概率之和為1,所以屬于另一類(false)的概率就是1-p。概率p是一個從0到1的值,當(dāng)p大于某個cutoff(比如0.5)的時候,我們就認(rèn)為input屬于true類,小于cutoff就認(rèn)為input屬于false類。這個世界上沒有完美的事物,所以我們在做判斷的時候總會出現(xiàn)錯誤。如果真實(shí)情況是false,而我們預(yù)測結(jié)果是true,就犯了假陽性(False Positive,type-1)錯誤;如果真實(shí)情況是true,而我們的預(yù)測結(jié)果是false,就犯了假陰性(False Negative,type-2)錯誤。

在二元分類問題中還有2個重要指標(biāo):

  1. 敏感性(Sensitivity)或者稱為真陽性率(True Positive Rate),TPR=TP/(TP+FN)
  2. 特異性(Specificity)或者稱為真陰性率(True Negative Rate),TNR=TN/(TN+FP)

敏感性和特異性就像魚肉和熊掌一樣不可兼得,提高特異性的時候,敏感性降低;提高敏感性的時候,特異性降低。


sensitivity_vs_specificity.png

我們在評價模型的時候不能片面地追求某一個指標(biāo),比如我們在檢測某種疾病的時候,如果把所有人都診斷為陰性(就不會有假陽性,F(xiàn)P=0),特異性就會達(dá)到100%,;如果把所有人都診斷為陽性(就不會有假陰性,F(xiàn)N=0),敏感性也會達(dá)到100%,而這些都是毫無意義的。

我們可以使用總體預(yù)測率(Total Prediction Rate)來綜合考慮敏感性和特異性:


total_prediction_rate.png

也可以使用ROC(Receiver Operator Characteristic)曲線來可視化敏感性和特異性的關(guān)系:


ROC.png

ROC曲線的y軸是模型的真陽性率(敏感性),我們訓(xùn)練模型的目的就是為了盡可能找出我們需要找到的case,所以真陽性率越高越好,但是這樣努力是有代價的,通過ROC曲線我們可以看到,隨著敏感性的提高,假陽性率也在不斷提高(特異性下降)。我們在ROC曲線上找到自己想要的敏感性(y),就可以知道它所對應(yīng)的假陽性率(x)。通過ROC曲線下的面積(Area Under the Curve, AUC),我們還可以比較不同分類器的性能。

多元分類(Multi-Class Classification)問題
我們可以使用log loss來評估多元分類器的性能。二元分類可以看成是多元分類的一個特例,所以我們先看如何用log loss來處理二元分類問題,然后擴(kuò)展到多元分類。

Log Loss的公式:


log_loss.png

N表示訓(xùn)練集中元素的個數(shù)
y-hat表示模型的預(yù)測(概率值)
y表示已知的正確答案(1或0,不是概率)
假設(shè)我有A和B兩個類,訓(xùn)練集中第一個元素的類別是A(y=1),分類器預(yù)測是A的概率為80%(y-hat=0.8),我們可以這樣計(jì)算:1×log(0.8) + (1-1)×log(1-0.8) = log(0.8)。按照同樣的方法依次計(jì)算訓(xùn)練集中所有的元素,然后求平均值。由于對概率值取log得到的是負(fù)數(shù),所以我們還要給平均值乘以-1,這樣我們的log loss就是一個正數(shù)。假設(shè)我們預(yù)測的準(zhǔn)確率為100%,log loss就等于0(-log(1)=0),因此,我們在訓(xùn)練的時候就需要最小化log loss值。

只要理解了上面的公式,再看多元分類的log loss就易如反掌了:


multi-class_log_loss.png

M表示的是類別的數(shù)目,其他的和前面的公式一樣。
假設(shè)我有A,B,C三個類,訓(xùn)練集中第一個元素的類別是A,分類器預(yù)測是A的概率為60%(y-hat1=0.6),B的概率為30%(y-hat2=0.3),C的概率為10%(y-hat3=0.1),我們可以這樣計(jì)算:1×log(0.6) + 0×log(0.3) + 0×log(0.1) = log(0.6)。按照同樣的方法依次計(jì)算訓(xùn)練集中所有的元素,然后求平均值,再乘以-1。

回歸(Regression)問題
均方誤差(Mean Squared Error, MSE) 是評估回歸模型的最常用的方法。

MSE.png

y是期望值,y-hat是預(yù)測值,兩者的差值取平方后再計(jì)算所有數(shù)據(jù)的均值。

參考文獻(xiàn)

  1. Jeff Heaton. AIFH, Volume 3: Deep Learning and Neural Networks, 2015
qrcode.jpg
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容