原始特征下,因尺度差異,其損失函數(shù)的等高線圖可能是橢圓形,梯度方向垂直于等高線,下降會(huì)走zigzag路線,而不是指向local minimum。通過對(duì)特征進(jìn)行zero-mean and unit-variance變換后,其損失函數(shù)的等高線圖更接近圓形,梯度下降的方向震蕩更小,收斂更快,如下圖所示,圖片來自Andrew Ng。
Feature Scaling from Andrew Ng 對(duì)于feature scaling中最常使用的Standardization,似乎“無腦上”就行了,本文想多探究一些為什么,
將每個(gè)樣本的特征向量除以其長(zhǎng)度,即對(duì)樣本特征向量的長(zhǎng)度進(jìn)行歸一化,長(zhǎng)度的度量常使用的是L2 norm(歐氏距離),有時(shí)也會(huì)采用L1 norm,不同度量方式的一種對(duì)比可以參見論文“CVPR2005-Histograms of Oriented Gradients for Human Detection”。 上述4種feature scaling方式,前3種為逐行操作,最后1種為逐列操作。容易讓人困惑的一點(diǎn)是指代混淆,Standardization指代比較清晰,但是單說Normalization有時(shí)會(huì)指代min-max normalization,有時(shí)會(huì)指代Standardization,有時(shí)會(huì)指代Scaling to unit length。
稀疏數(shù)據(jù)、outliers相關(guān)的更多數(shù)據(jù)預(yù)處理內(nèi)容可以參見scikit learn-5.3. Preprocessing data。從幾何上觀察上述方法的作用,圖片來自CS231n-Neural Networks Part 2: Setting up the Data and the Loss,zero-mean將數(shù)據(jù)集平移到原點(diǎn),unit-variance使每維特征上的跨度相當(dāng),圖中可以明顯看出兩維特征間存在線性相關(guān)性,Standardization操作并沒有消除這種相關(guān)性。Standardization可通過PCA方法移除線性相關(guān)性(decorrelation),即引入旋轉(zhuǎn),找到新的坐標(biāo)軸方向,在新坐標(biāo)軸方向上用“標(biāo)準(zhǔn)差”進(jìn)行縮放,如下圖所示,圖片來自鏈接,圖中同時(shí)描述了unit length的作用——將所有樣本映射到單位球上。Effect of the operations of standardization and length normalization當(dāng)特征維數(shù)更多時(shí),對(duì)比如下,圖片來自youtube,feature scaling comparison總的來說,歸一化/標(biāo)準(zhǔn)化的目的是為了獲得某種“無關(guān)性”——偏置無關(guān)、尺度無關(guān)、長(zhǎng)度無關(guān)……當(dāng)歸一化/標(biāo)準(zhǔn)化方法背后的物理意義和幾何含義與當(dāng)前問題的需要相契合時(shí),其對(duì)解決該問題就有正向作用,反之,就會(huì)起反作用。所以,“何時(shí)選擇何種方法”取決于待解決的問題,即problem-dependent。
E(W)為損失函數(shù),收斂速度取決于:參數(shù)的初始位置到local minima的距離,以及學(xué)習(xí)率η的大小。一維情況下,在local minima附近,不同學(xué)習(xí)率對(duì)梯度下降的影響如下圖所示: Gradient descent for different learning rates多維情況下可以分解成多個(gè)上圖,每個(gè)維度上分別下降,參數(shù)W為向量,但學(xué)習(xí)率只有1個(gè),即所有參數(shù)維度共用同一個(gè)學(xué)習(xí)率(暫不考慮為每個(gè)維度都分配單獨(dú)學(xué)習(xí)率的算法)。收斂意味著在每個(gè)參數(shù)維度上都取得極小值,每個(gè)參數(shù)維度上的偏導(dǎo)數(shù)都為0,但是每個(gè)參數(shù)維度上的下降速度是不同的,為了每個(gè)維度上都能收斂,學(xué)習(xí)率應(yīng)取所有維度在當(dāng)前位置合適步長(zhǎng)中最小的那個(gè)。下面討論feature scaling對(duì)gradient descent的作用,
zero center與參數(shù)初始化相配合,縮短初始參數(shù)位置與local minimum間的距離,加快收斂。模型的最終參數(shù)是未知的,所以一般隨機(jī)初始化,比如從0均值的均勻分布或高斯分布中采樣得到,對(duì)線性模型而言,其分界面初始位置大致在原點(diǎn)附近,bias經(jīng)常初始化為0,則分界面直接通過原點(diǎn)。同時(shí),為了收斂,學(xué)習(xí)率不會(huì)很大。而每個(gè)數(shù)據(jù)集的特征分布是不一樣的,如果其分布集中且距離原點(diǎn)較遠(yuǎn),比如位于第一象限遙遠(yuǎn)的右上角,分界面可能需要花費(fèi)很多步驟才能“爬到”數(shù)據(jù)集所在的位置。所以,無論什么數(shù)據(jù)集,先平移到原點(diǎn),再配合參數(shù)初始化,可以保證分界面一定會(huì)穿過數(shù)據(jù)集。此外,outliers常分布在數(shù)據(jù)集的外圍,與分界面從外部向內(nèi)挪動(dòng)相比,從中心區(qū)域開始挪動(dòng)可能受outliers的影響更小。
另有從Hessian矩陣特征值以及condition number角度的理解,詳見Lecun paper-Efficient BackProp中的Convergence of Gradient Descent一節(jié),有清晰的數(shù)學(xué)描述,同時(shí)還介紹了白化的作用——解除特征間的線性相關(guān)性,使每個(gè)維度上的梯度下降可獨(dú)立看待。
文章開篇的橢圓形和圓形等高線圖,僅在采用均方誤差的線性模型上適用,其他損失函數(shù)或更復(fù)雜的模型,如深度神經(jīng)網(wǎng)絡(luò),損失函數(shù)的error surface可能很復(fù)雜,并不能簡(jiǎn)單地用橢圓和圓來刻畫,所以用它來解釋feature scaling對(duì)所有損失函數(shù)的梯度下降的作用,似乎過于簡(jiǎn)化,見Hinton vedio-3.2 The error surface for a linear neuron。
1.wiki-Feature scaling2.wiki-Backpropagation3.[Hung-yi Lee pdf-Gradient Descent]()4.quora-Why does mean normalization help in gradient descent?5.scikit learn-Importance of Feature Scaling6.scikit learn-5.3. Preprocessing data7.scikit learn-Compare the effect of different scalers on data with outliers8.data school-Comparing supervised learning algorithms9.Lecun paper-Efficient BackProp10.Hinton vedio-3.2 The error surface for a linear neuron11.CS231n-Neural Networks Part 2: Setting up the Data and the Loss12.ftp-Should I normalize/standardize/rescale the data?13.medium-Understand Data Normalization in Machine Learning14.Normalization and Standardization15.How and why do normalization and feature scaling work?16.Is it a good practice to always scale/normalize data for machine learning?17.When conducting multiple regression, when should you center your predictor variables & when should you standardize them?