文章目錄
上節課介紹了Gradient Boosted Decision Tree(GBDT)算法。GBDT通過梯度下降得到不同的樹,然後以沿梯度下降最快的方向和最大更新步長賦予每棵樹不同的權重,可以用來處理分類或迴歸問題,使用平方誤差衡量(squared error measure)。本文介紹神經網絡(Neural Network)。
12.1 Motivation
在機器學習基石課程中學習了感知器(Perceptron)算法,神經網絡可以看做很多感知器的線性融合(Linear Aggregation),也稱爲多層感知器算法(MLP)。
上圖中的神經網絡包含兩層權重 和 ,一層隱藏層,以及輸入輸出層,共三層。隱藏層和輸出層的激活函數都是 。如果要實現邏輯與(and)運算,則需要令神經網絡 中的第二層權重 分別爲 。此時的神經網絡可以寫成下圖中的假設函數形式。
通過邏輯與運算,相當於獲得了非線性的分隔超平面。此外,邏輯或(or)、邏輯非(not)也有類似的機制。因此不難理解,神經網絡其實也是融合模型,只不過更加複雜。下面看一個更復雜的例子,二維平面中的二分類,單一的感知器模型是無法做出圓形的分類便捷的,但是多層感知器可以實現,感知器的數目越多,其圓形邊界就越精確。通過這些課程的學習,任何算法都不能忽視過擬合的問題,MLP也不例外。如果感知器的數目空值得當,則可以得到比較平滑和穩定的模型。
但是單層感知器無法處理異或(xor)問題,因爲異或運算得到的分隔超平面是非線性可分的。即單層感知器對模型複雜度有一定限制。
下面嘗試通過多層感知器實現異或運算。
以上通過兩層感知器實現了異或運算。通過組合多層的感知器,神經網絡模型可以處理更復雜的問題。
習題1:
12.2 Neural Network Hypothesis
接下來討論神經網絡的輸出層。
神經網絡通過對輸入數據進行進行一層層的轉化(transform),得到一個分數 ,最後輸出層使用不同的激活函數對這個分數進行激活。對於不同的問題,選擇不同的激活函數;同樣,不同的問題也選擇不同的目標函數(誤差函數,損失函數)。首先看一下激活函數的選擇:
兩種常用的激活函數適 激活函數和 激活函數。上式中 與 存在關係 ,其中 。因爲存在飽和問題,所以現代基本上使用ReLU系列的激活函數。下面看一下神經網絡的假設:
其中, 表示網絡的層數, 表示網絡總層數,不包括輸入層。每一層的權重爲 ,下標 ,表示前一層輸出的個數加上偏差(bias)項;下標 ,表示該層節點的個數,不包括偏差項。每層的分數爲 ,激活輸出爲 。下面看一下神經網絡的物理意義。
神經網絡是從數據中學習映射函數的過程,映射函數的關鍵是各項的權重 ,數據與權重的關係通過得分 表徵,然後經過激活函數激活後輸出。對於 激活函數, 與 的乘積越大,其激活值越接近於1,這表明轉換的效果越好,得到的神經網絡模型越好。即兩向量的內積越大,越接近平行,此時兩者就越有相似的模式。即神經網絡是通過各層之間的權重連接從數據中進行模式提取的過程。
習題2:
12.3 Neural Network Learning
由上文可知神經網絡的關鍵是權重向量 ,那麼應該如何求解呢?下面介紹反向傳播算法的計算過程。
神經網絡優化的目標是通過最小化輸入樣本的誤差 來得到最佳的權重向量 。對於多層感知器的權重應該如何計算,首先看輸出層的情況,通過隨機梯度下降求偏導數,現在問題變爲如何高效地求解偏導數。
其中 表示平方誤差。可以使其對權重向量 求偏導,然後通過梯度下降算法,不斷修正 的值,最終得到最小化 時對應的權重向量 。其核心思想是利用求導的鏈式法則,對於輸出層和一眼層的計算分別如上圖所示。在一般情況下,求偏導的結果中, 是還未算出的,表示誤差對分數的偏導數,其計算思路如下:
首先可以通過各層得分,一步步轉化得到誤差,要計算誤差對得分的偏導,可以由鏈式法則進行求解,最後得到結果如上圖所示。這就是所謂的反向傳播算法(Backpropagation Algorithm,Backprop)。其僞代碼如下:
梯度下降算法都是通過反向傳播計算誤差的。常用的梯度下降算法爲小批量梯度下降,在訓練神經網絡時設置batch size就是爲了進行小批量梯度下降,這些小批量的樣本的權重更新是並行計算的, 最後再取平均得到最終的權重更新。
習題3:
12.4 Optimization and Regularization
本小節介紹神經網絡的優化方法以及正則化方法。首先看優化方法,本節課中使用的誤差衡量(損失函數)是平方誤差,當然針對不同的問題也可以使用不同的損失函數。機器學習算法和神經網絡的優化目標都是最小化輸入樣本上的誤差 。但是在優化過程中面臨一些困難,比如多層感知器模型是非凸函數,導致不容易找到全局最優解,使用反向傳播的梯度下降或者隨機圖下降僅僅容易找到局部最優解。不同的權重初始化方法,得到不同的局部最優解;有時候模型對初始權重很敏感較大的權重容易使得激活後過飽和,導致梯度很難繼續更新。現在的思路是嘗試增加隨機性,或者使用更少的層數,讓神經網絡優化變得相對容易。
下面看一下神經網絡模型的VC Dimention,簡單來說,使用 作爲激活函數的網絡,其 , 表示神經元個數, 表示權重個數。這類模型的優缺點也很明顯,優點是隻要神經元足夠則可以解決任意複雜的問題;但是不可免的是很容易過擬合。
過擬合可以通過正則化解決,比如常用的L1正則化和L2正則化。
一種常用的正則化方式爲:
正則化實際上起到了縮放權重的效果,L1正則化又稱爲稀疏正則化,即可以嚴格的將權重置0;L2正則化又稱爲權重衰減正則化,即可以限制權重的大小,如果還記得之前的課程的話,L2正則化實際上是通過拉格朗日乘子控制的。當然還有一種常用也好用的正則化方式Early Stopping,在之前很多文章詳細介紹過了,此處就不贅述了。
習題4:
Summary
本節課介紹了神經網絡模型,實際上是多層感知器,學習的過程就是學習映射規則的過程,即學習不同的權重向量。神經網絡具有強大的擬合能力,同時又可以使用多種正則化方法進行限制,這使得其應用範圍很廣泛。