機器學習里的黑色藝術:normalization, standardization, regularization

今天在知乎看到有人問到機器學習中幾個術語之間的區別:normalization, standardization, regularization. 簡要談談,權當自己知識的梳理。

之所以把normalization和standardization叫做黑色藝術,其實是因為很多機器學習的文章,取得了很好的效果,模型很具有創新型,但是往往normalization的方法在文章中隻字不提,導致後期結果復現的時候出現困難,遂自嘲它們為黑色藝術(black art)。

第一部分:大的層面上講

1. normalization和standardization是差不多的,都是把數據進行前處理,從而使數值都落入到統一的數值範圍,從而在建模過程中,各個特徵量沒差別對待。normalization一般是把數據限定在需要的範圍,比如一般都是【0,1】,從而消除了數據量綱對建模的影響。standardization 一般是指將數據正態化,使平均值1方差為0. 因此normalization和standardization 是針對數據而言的,消除一些數值差異帶來的特種重要性偏見。經過歸一化的數據,能加快訓練速度,促進演算法的收斂。

2.而regularization是在cost function裡面加懲罰項,增加建模的模糊性,從而把捕捉到的趨勢從局部細微趨勢,調整到整體大概趨勢。雖然一定程度上的放寬了建模要求,但是能有效防止over-fitting的問題(如圖,來源於網上),增加模型準確性。因此,regularization是針對模型而言。

這三個term說的是不同的事情。

第二部分:方法

總結下normalization, standardization,和regularization的方法。

Normalization 和 Standardization

(1).最大最小值normalization: x=(x-min)/(max-min). 這種方法的本質還是線性變換,簡單直接。缺點就是新數據的加入,可能會因數值範圍的擴大需要重新regularization。

(2). 對數歸一化:x=log10(x)/log10(xmax)或者log10(x)。推薦第一種,除以最大值,這樣使數據落到【0,1】區間

(3).反正切歸一化。x=2atan(x)/pi。能把數據投影到【-1,1】區間。

(4).zero mean normalization歸一化,也是standardization. x=(x-mean)/std.

有無normalization,模型的學習曲線是不一樣的,甚至會收斂結果不一樣。比如在深度學習中,batch normalization有無,學習曲線對比是這樣的:圖一 藍色線有batch normalization (BN),黑色虛線是沒有BN. 黑色線放大,是圖二的樣子,藍色線放大是圖三的樣子。reference:Batch Normalization: Accelerating Deep Network Training by Reducing

Internal Covariate Shift, Sergey Ioffe.

Regularization 方法

一般形式,應該是 min minsum_{i=1}^{n}{J(x_{i},y_{i})+lambda}R(f) , R是regularization term。一般方法有

  1. L1 regularization: 對整個絕對值只和進行懲罰。
  2. L2 regularization:對係數平方和進行懲罰。
  3. Elastic-net 混合regularization。

個人總結,歡迎指正和交流。要歡迎學術交流。個人研究主頁Rui Liu - Robot Knowledge


推薦閱讀:

如何看待Deepmind將研發能玩《毀滅戰士1》的AI?
有哪些深度學習框架可以跑在超算集群上?
是不是對於任意 n×n 大小的圍棋棋盤,人類都贏不了 AlphaGo Zero 了?
如何評價MXNet發布的1.0版本?
深度學習晶元?

TAG:机器学习 | 深度学习DeepLearning | 机器人 |