01 摘要
深度學習可以看作是機器學習領域中的一個前沿分支。現如今,深度學習在圖像處理、自然語言處理、搜尋技術、資料挖掘等領域都取得了不菲的成果。
簡單來說,目前幾乎所有的深度學習模型都可以用下圖的模式總結。模型的最前面一層是輸入層,代表了模型的輸入(自變量)資料。模式的最後是一個輸出層,代表了模型的輸出(因變量)資料。中間包含一個或多個隐藏層,代表了模型中間訓練過程的每一步的逐漸結果。

筆者根據實用案例,粗略的将深度學習分為五類:
前饋網絡:最簡單,也是目前應用最廣泛的一種人工神經網絡,常見于面部識别案例;
RBF網絡:一種三層的神經網絡,常用于電力恢複系統領域;
多層感覺器:前饋網絡的一種,隐藏層可包含多層網絡,常用于多種機器學習案例;
卷積網絡:常用于圖像處理和模式識别;
循環網絡:常用于自然語言處理。
本篇我們将主要讨論多層感覺器的相關細節。後續我們也會陸續推出卷積網絡,循環網絡等相關文章,歡迎持續關注Altair微信公衆号(AltairChina)。
02 必要的前情介紹
2.1深度學習伊始
深度學習的模型架構其實要歸結到人腦的決策過程。
人在做決策的時候,從外界接收到的影像,聲音或觸感等資訊,通常會被轉換成生物電的形式,流入不同的神經元,經過不同神經元的處理後,會有相應的生物電産生并流出目前的神經元,然後再準備流入下一個神經元。經過若幹次處理後,最後的生物電會抵達大腦皮層,人也在那個時候做出相應的決策。
通過模拟人腦的運作機制,研究人員探索出了現如今這套深度學習的模型架構。
2.2什麼是感覺機
多層感覺器中最重要的組成元素就是單層感覺機。簡單來說,單層感覺機就是一次線性權重相加和一次非線性分類。
如下圖所示,我們将輸入自變量資料x1, x2,…,xn 通過一定的權重相加,随後将對應的計算值帶入一個非線性分類的計算中,最終我們可以得到一個因變量的相應取值。這裡的非線性分類計算有個專有稱呼,叫做激活函數。
讀到這裡,大家是不是回想到了上兩篇文章。沒錯,線性權重相加其實就很類似于線性回歸,而非線性分類則相似于邏輯回歸。
簡單來說,多層感覺器就是多個單層感覺機疊加在一起的深度學習模型,每一層運算的輸出值都會作為下一層運算的輸入值。而訓練多層感覺器的實質其實就是找到每一層最适當的權重占比,激活函數和神經元個數的過程。
2.3随機梯度下降
當我們需要優化一個函數時,或者說我們需要找到某個函數的最大/小值時,我們通常會用到随機梯度下降這個方法。
在機器學習領域中,待優化的函數我們稱為損失函數。損失函數是用來估量模型預測值和真實值之間不一樣程度的非負值函數。該函數通常與模型的參數息息相關。
如下圖例子所示,我們假設模型的隻包含兩個參數θ=(θ1,θ2)。在一個三維空間中,模型的損失函數L(θ)可以視為随θ值變化而變化的曲面。我們的目标是一步步調整參數θ的取值,使得我們的損失函數達到最小值。
為達到最優值,随機梯度下降方法遵循了下面的步驟:
随機初始化或自定義初始參數值,得出起始模型
進入循環:
随機抽取若幹輸入值樣本,基于損失函數計算梯度
根據下圖疊代規則更新參數值
重複步驟,直至停止條件滿足
這裡的α,也叫做學習率。它調控着每一次參數更新中的步長。能否找到一個合适的學習率決定了目前神經網絡收斂速度的快慢以及該模型能否收斂到局部最小值。
03 多層感覺器
3.1預設模型
接下來,我們将通過一個三層感覺器的案例來詳細了解多層感覺器的模組化過程。如下圖所示:
輸入層是模型的輸入資料,用x來表示;
中間是四層隐藏層,其中的:
線性權重相加分别由g1,g2,w1,w2表示其權重;
激活函數用f來表示;這裡需要注意的是,每一層的激活函數都可以是不相同的,但是為了示範,這個例子中的激活函數都是一樣的;
中間的三層步驟結果由a1,a2,a3來分别表示;
輸出層則為模型的預測結果,由ŷ來表示。
模型的最後是真實結果,由y來表示。整個模型訓練的過程就是,我們通過調節各個權重g1,g2,w1,w2以及各個激活函數f,來使得模型的預測結果ŷ能夠盡可能的接近真實結果y。
這裡我們需要注意的是,模型的訓練一般是從前往後的,即我們從x到a1,到a2,再一直到ŷ。而參數的優化則是從後往前的,既我們先調節w2,再調節w1,再g2,最後是g1。
3.2權重調節的數學細節
将上面的預設模型,用公式的方法抽象出來的話,我們可以得到以下幾行模型訓練公式:
a1 = f(g1(x))
a2 = f(g2(a1))
a3 = f(w1(a2))
ŷ = f(w2(a3))
我們選取一種較常見的目标函數作為損失函數:
随後,我們就可以根據2.3章節中提到的随機梯度下降方法優化調節我們的四個權重參數了。
我們從w2開始,根據微積分中的鍊式法則,我們可以知道:
随後,根據不同模型預先設定好的,不同激活函數與權重相加公式,我們可以分别求出
和
的相關公式。
最後,我們将得到梯度結果
重新帶入回參數更新公式中:
我們便完成了一次w2權重的更新。
我們随後再更新w1,根據鍊式法則,我們可以得出:
以及相應的參數更新公式:
類似的,我們接下來繼續更新g2與給g1。
當四個的權重參數都更新過一次之後,我們就完成了一次循環的參數更新。
通常來說,一個深度學習模型都會跑成百上千次的循環或者是參數達成收斂條件。
因為深度學習的資料量和計算複雜度的原因,每一次循環都會花費不少的計算時間和資源。是以如何優化一個深度學習模型變得極為重要。