一. 摘要
這里將繼續介紹NLP算法體系:基於人工神經網絡(Artinci Neural Network)的深度學習方法。人工神經網絡思想來源於仿生學對大腦機制的探索,即希望通過對大腦的模擬達到智能的目的。神經網絡理論與技術就是在這樣的目標下摸索發展出來的。神經網絡是由具有自適應的單元組成的,廣泛的、並行的、互聯的網絡,它的結構模擬了生物神經網絡系統對真實世界所做出的交互反應。
二. 神經網絡的組成
神經元模型:首先簡單的了解以下構成神經網絡的最基礎單元:神經元。每個神經元與其他神經元相連,當它處於激活狀態時,就會向相連的神經元發送相應信號。從而改變其他神經元的狀態。如果某個神經元的信號超過某個閾值。那么將被激活,再接着發送給其他神經元。如圖1所示:
圖1:神經元結構
之前我們了解到的GRU和LSTM網絡都是由這一基本結構構成,神經網絡的任何神經元都可以表述為上述的形式。該單元主要由輸入變量、帶權參數和激活函數組成。首先是x1,x2,x3帶權重的輸入變量,該變量的取值來自前面一層所有變量與權重的乘積,然后再求和,在數學上表示為下式:
其中,x為自由的輸入變量,xl為當前l層,這里的累加求和為前面一層所有變量與權重的乘積,n為神經元個數。在實踐當中,神經網絡的輸入層由訓練樣本給定。隱含層和輸出層的x取值由前一層計算得到。其中b為偏置參數。
激活函數:理想中的激活函數是如圖2所示的躍遷函數,它將輸入值映射到O或1,很直觀的1對應着神經元激活狀態,0則表示神經元處於失活狀態。然而由於躍遷函數不連續且非光滑(無法完美表達大腦神經網絡的連續傳遞過程),因此實際常用Sigmoid函數作為激活函數。典型的Sigmoid函數如圖3所示,它把可能的數壓縮進(0,1)輸出值之間,因此又名擠壓函數(squashing function)。
圖2:躍遷函數圖
圖3:sigmoid函數圖
將許多這樣的神經元按照一定的層次結構組織起來,就得到了人工神經網絡。事實上,我們可以先不用考慮神經網絡是否完全真實地模擬了人腦運作的機制,只需要從數學角度將神經網絡看作有許多參數的數學模型來看待,我們會發現這個模型是由許多個函數不斷嵌套而成。
感知機與多層網絡:輸入層接收外界的輸入信號然后傳遞給輸出層,輸出層為邏輯單元,感知機的輸入是幾個二進制, xi輸出是一位單獨的二進制。
圖4中的感知機有三個輸入:x1、x2、x3。通常,它可以根據數據的維度設置數量。這里新增了一種計算輸出的簡單規則,他引入了權重(weight),w1,w2,...,wj等實數來表示各個輸人對於輸出的重要程度。
圖4:多層感知機結構圖
神經元的輸出是0或者l,分別代表未激活與激活狀態,由加權和的值是否小於或者大於某一個閾值(threshold value)決定。和權重一樣,閾值也是一個實數,同時它是神經元的一個參數。使用更嚴密的代數形式來表示:
對於上面決策的式子,基本的思想就是:它是一個通過給每個維度數據賦予不同權重從而做出決策的機器。如果我們用現實中的一個例子思考,假設周末我想要周末的時候和朋友出去踢足球,對於這樣一個事件是否能夠成功實現,也取決與很多的外部因素:
1. 周末是否有其他事情;
2. 朋友是否有時間;
3. 天氣是否合適等等...
我們可以參考這三個因素的結果,就可以判斷出該事件可不可行。也需要通過調整權重和閾值的大小,得到不同的決策模型。
很顯然,感知機不能完全模擬人類的決策系統。但是,這個例子清晰地闡明了感知機如何依據不同權重來達到做出決策的目的。一個由感知機構成的復雜網絡能夠做出更加精細的決策,是可解釋得通的。在圖5所示這個網絡中,第一層感知機,通過賦予輸入的權重,做出三個非常簡單的決策。第二層感知機呢?每一個第二層感知機通過賦予權重給來自第一層感知機的決策結果做出決策。通過這種方式,第二層感知機可以比第一層感知機做出更加復雜以及更高層次抽象的決策。第三層感知機能夠做出更加復雜的決策。通過這種方式,一個多層網絡感知機可以做出更加精細的決策。
圖5:多層感知機網絡
圖5網絡最左邊的是輸入層神經元,用於接收外界輸入信息,中間為隱藏層,對信號進行一定加工與轉換,最右邊為輸出層神經元,最終結果由輸出層神經元輸出表示。換言之,輸入層神經元接收輸入,不進行函數處理,隱藏與輸出層包含功能神經元。因此,通常被稱之為兩層網絡。一般情況下,只需要包含隱藏層,即可稱為多層網絡。神經網絡的學習過程,就是根據訓練數據來調整神經元之間的“權重”以及每個功能神經元的閾值。換言之,神經網絡學到的東西,蘊含在權重和閾值當中。
設計網絡的輸入層通常是非常直接的。例如,我們要嘗試識別一張輸入圖像是否有“1”。很自然的,我們可以將圖片像素的強度進行編碼作為輸入層。如果圖像是64×64的灰度圖.那么我們需4096=64×64個輸入神經元。每個強度都取01之間適合的值。輸出層只需要一個神經元,當輸出值小於0.5,表示該圖像不是“1”,反之則表示輸出的圖像是“1”。
相較於完全固定的輸入層和輸出層,隱截層的設計是個難題,特別是通過一些簡單的經驗來總結隱藏層的設計流程不一定總是可行的。所以神經網絡調參師己徑為隱藏層開發了許多設計最優方法,這有助於達到期望的效果。
目前為止我們討論的神經網絡,都是的面一層作為后面一層的輸入,這種經典的網絡被稱為前饋神經網絡。這也就意味着網絡中沒有回路,信息總是向前傳播,從不反饋。
總結:
以上部分的組合就構成了各種功能不同的神經網絡。神經網絡也就是一個算法框架,這個框架的執行大致可以分為如下兩個階段:訓練階段(training):是指網絡輸入樣本數據作為初始數據,通過激活函數與網絡連接。通過迭代求得最小化損失。這時網絡會最終收效,學習到權重向量,作為分類器的參數。推導階段(infer)。 使用這個訓煉好的網絡對實際的數據進行分類成回歸,也可以稱為分類階段。