在上一篇文章中含鳞,我們學(xué)會(huì)了如何計(jì)算一個(gè)人工神經(jīng)元的輸出。人工神經(jīng)網(wǎng)絡(luò)的計(jì)算實(shí)際上就是從input層開(kāi)始,按照同樣的方法依次計(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ò)的過(guò)程實(shí)際上就是不斷地調(diào)整權(quán)重讯榕,從而使網(wǎng)絡(luò)輸出的結(jié)果更優(yōu)的過(guò)程。
在學(xué)習(xí)具體的神經(jīng)網(wǎng)絡(luò)訓(xùn)練算法之前匙睹,我們先來(lái)學(xué)習(xí)如何對(duì)input數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化(normalization)愚屁,以及如何對(duì)神經(jīng)網(wǎng)絡(luò)的output進(jìn)行評(píng)估(evaluation)。這一部分內(nèi)容并不僅僅針對(duì)神經(jīng)網(wǎng)絡(luò)痕檬,對(duì)其他類(lèi)型的模型也適用霎槐。
Normalization
我們拿到的原始數(shù)據(jù)往往不能直接使用,一般需要經(jīng)過(guò)數(shù)據(jù)清洗和標(biāo)準(zhǔn)化之后才能用來(lái)訓(xùn)練梦谜。下面我們學(xué)習(xí)一些常用的標(biāo)準(zhǔn)化方法丘跌。
One-of-N Encoding
對(duì)于無(wú)序分類(lèi)(各個(gè)類(lèi)別不能排序)數(shù)據(jù),我們使用的標(biāo)準(zhǔn)化方法是One-of-N encoding唁桩,有時(shí)也稱(chēng)之為one-hot encoding闭树。在神經(jīng)網(wǎng)絡(luò)中,每個(gè)輸出神經(jīng)元對(duì)應(yīng)一個(gè)類(lèi)別(class)荒澡。比如在識(shí)別手寫(xiě)數(shù)字的問(wèn)題中报辱,一共有10個(gè)class(0-9),我們的神經(jīng)網(wǎng)絡(luò)就有10個(gè)輸出神經(jīng)元单山,每個(gè)輸出神經(jīng)元的softmax激活函數(shù)給出input屬于該class(具體數(shù)字)的概率碍现。這十個(gè)數(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
對(duì)于實(shí)數(shù)數(shù)據(jù)或者有序分類(lèi)(類(lèi)別可以排序)的數(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)化的公式:
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)
有時(shí)候我們需要normalization的逆運(yùn)算(denormalization),公式如下:
Z-Score Normalization
Z-score是針對(duì)實(shí)數(shù)數(shù)據(jù)或者有序分類(lèi)數(shù)據(jù)最常用的normalization方法钻弄。Z-score的計(jì)算公式如下:
Evaluation
訓(xùn)練神經(jīng)網(wǎng)絡(luò)的目標(biāo)是讓網(wǎng)絡(luò)的output更加接近我們的期望值佃却,下面我們來(lái)學(xué)習(xí)如何評(píng)價(jià)神經(jīng)網(wǎng)絡(luò)的output。
二元分類(lèi)(Binary Classification)問(wèn)題
二元分類(lèi)實(shí)際上就是二選一的問(wèn)題窘俺,比如 true or false, yes or no, correct or incorrect饲帅。處理此類(lèi)問(wèn)題的神經(jīng)網(wǎng)絡(luò)一般只有一個(gè)輸出神經(jīng)元复凳,輸出的是input屬于某一類(lèi)(比如true)的概率p。由于只有2個(gè)類(lèi)別灶泵,且概率之和為1育八,所以屬于另一類(lèi)(false)的概率就是1-p。概率p是一個(gè)從0到1的值赦邻,當(dāng)p大于某個(gè)cutoff(比如0.5)的時(shí)候髓棋,我們就認(rèn)為input屬于true類(lèi),小于cutoff就認(rèn)為input屬于false類(lèi)惶洲。這個(gè)世界上沒(méi)有完美的事物按声,所以我們?cè)谧雠袛嗟臅r(shí)候總會(huì)出現(xiàn)錯(cuò)誤。如果真實(shí)情況是false恬吕,而我們預(yù)測(cè)結(jié)果是true签则,就犯了假陽(yáng)性(False Positive,type-1)錯(cuò)誤铐料;如果真實(shí)情況是true渐裂,而我們的預(yù)測(cè)結(jié)果是false,就犯了假陰性(False Negative余赢,type-2)錯(cuò)誤芯义。
在二元分類(lèi)問(wèn)題中還有2個(gè)重要指標(biāo):
- 敏感性(Sensitivity)或者稱(chēng)為真陽(yáng)性率(True Positive Rate),TPR=TP/(TP+FN)
- 特異性(Specificity)或者稱(chēng)為真陰性率(True Negative Rate)妻柒,TNR=TN/(TN+FP)
敏感性和特異性就像魚(yú)肉和熊掌一樣不可兼得扛拨,提高特異性的時(shí)候,敏感性降低举塔;提高敏感性的時(shí)候十艾,特異性降低。
我們?cè)谠u(píng)價(jià)模型的時(shí)候不能片面地追求某一個(gè)指標(biāo)备畦,比如我們?cè)跈z測(cè)某種疾病的時(shí)候射窒,如果把所有人都診斷為陰性(就不會(huì)有假陽(yáng)性,F(xiàn)P=0)芽丹,特異性就會(huì)達(dá)到100%,北启;如果把所有人都診斷為陽(yáng)性(就不會(huì)有假陰性,F(xiàn)N=0)拔第,敏感性也會(huì)達(dá)到100%咕村,而這些都是毫無(wú)意義的。
我們可以使用總體預(yù)測(cè)率(Total Prediction Rate)來(lái)綜合考慮敏感性和特異性:
也可以使用ROC(Receiver Operator Characteristic)曲線來(lái)可視化敏感性和特異性的關(guān)系:
ROC曲線的y軸是模型的真陽(yáng)性率(敏感性)蚊俺,我們訓(xùn)練模型的目的就是為了盡可能找出我們需要找到的case懈涛,所以真陽(yáng)性率越高越好,但是這樣努力是有代價(jià)的泳猬,通過(guò)ROC曲線我們可以看到批钠,隨著敏感性的提高宇植,假陽(yáng)性率也在不斷提高(特異性下降)。我們?cè)赗OC曲線上找到自己想要的敏感性(y)埋心,就可以知道它所對(duì)應(yīng)的假陽(yáng)性率(x)指郁。通過(guò)ROC曲線下的面積(Area Under the Curve, AUC),我們還可以比較不同分類(lèi)器的性能拷呆。
多元分類(lèi)(Multi-Class Classification)問(wèn)題
我們可以使用log loss來(lái)評(píng)估多元分類(lèi)器的性能坡氯。二元分類(lèi)可以看成是多元分類(lèi)的一個(gè)特例,所以我們先看如何用log loss來(lái)處理二元分類(lèi)問(wèn)題洋腮,然后擴(kuò)展到多元分類(lèi)箫柳。
Log Loss的公式:
N表示訓(xùn)練集中元素的個(gè)數(shù)
y-hat表示模型的預(yù)測(cè)(概率值)
y表示已知的正確答案(1或0,不是概率)
假設(shè)我有A和B兩個(gè)類(lèi)啥供,訓(xùn)練集中第一個(gè)元素的類(lèi)別是A(y=1)悯恍,分類(lèi)器預(yù)測(cè)是A的概率為80%(y-hat=0.8),我們可以這樣計(jì)算:1×log(0.8) + (1-1)×log(1-0.8) = log(0.8)伙狐。按照同樣的方法依次計(jì)算訓(xùn)練集中所有的元素涮毫,然后求平均值。由于對(duì)概率值取log得到的是負(fù)數(shù)贷屎,所以我們還要給平均值乘以-1罢防,這樣我們的log loss就是一個(gè)正數(shù)。假設(shè)我們預(yù)測(cè)的準(zhǔn)確率為100%唉侄,log loss就等于0(-log(1)=0)咒吐,因此,我們?cè)谟?xùn)練的時(shí)候就需要最小化log loss值属划。
只要理解了上面的公式恬叹,再看多元分類(lèi)的log loss就易如反掌了:
M表示的是類(lèi)別的數(shù)目,其他的和前面的公式一樣同眯。
假設(shè)我有A绽昼,B,C三個(gè)類(lèi)须蜗,訓(xùn)練集中第一個(gè)元素的類(lèi)別是A硅确,分類(lèi)器預(yù)測(cè)是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)問(wèn)題
均方誤差(Mean Squared Error, MSE) 是評(píng)估回歸模型的最常用的方法官份。
y是期望值只厘,y-hat是預(yù)測(cè)值,兩者的差值取平方后再計(jì)算所有數(shù)據(jù)的均值舅巷。
參考文獻(xiàn)
- Jeff Heaton. AIFH, Volume 3: Deep Learning and Neural Networks, 2015