@[toc]
多層感知機(jī) multilayer perceptron
線性模型可能出錯(cuò)
線性模型的單調(diào)性并不是所有現(xiàn)實(shí)例子都滿足的,相反,許多例子都違反了單調(diào)性的條件。
在網(wǎng)絡(luò)中加入隱藏層
我們可以通過在網(wǎng)絡(luò)中加入一個(gè)或多個(gè)隱藏層來克服線性模型的限制,使其能處理更普遍的函數(shù)關(guān)系類型。要做到這一點(diǎn),最簡(jiǎn)單的方法是將許多全連接層堆疊在一起。每一層都輸出到上面的層,直到生成最后的輸出。我們可以把前層看作表示,把最后一層看作線性預(yù)測(cè)器。這種架構(gòu)通常稱為多層感知機(jī)(multilayer perceptron),通常縮寫為MLP。
這個(gè)多層感知機(jī)有4個(gè)輸入,3個(gè)輸出,其隱藏層包含5個(gè)隱藏單元。輸入層不涉及任何計(jì)算,因此使用此網(wǎng)絡(luò)產(chǎn)生輸出只需要實(shí)現(xiàn)隱藏層和輸出層的計(jì)算;因此,這個(gè)多層感知機(jī)中的層數(shù)為2。注意,這兩個(gè)層都是全連接的。每個(gè)輸入都會(huì)影響隱藏層中的每個(gè)神經(jīng)元,而隱藏層中的每個(gè)神經(jīng)元又會(huì)影響輸出層中的每個(gè)神經(jīng)元。
然而,具有全連接層的多層感知機(jī)的參數(shù)開銷可能會(huì)高得令人望而卻步, 即使在不改變輸入或輸出大小的情況下,也可能促使在參數(shù)節(jié)約和模型有效性之間進(jìn)行權(quán)衡。
從線性到非線性
跟之前的章節(jié)一樣,我們通過矩陣來表示n個(gè)樣本的小批量,其中每個(gè)樣本具有d個(gè)輸入(特征)。對(duì)于具有h個(gè)隱藏單元的單隱藏層多層感知機(jī),用
表示隱藏層的輸出,稱為隱藏表示(hidden representations)。在數(shù)學(xué)或代碼中,H也被稱為隱藏層變量(hidden-layer variable)或隱藏變量(hidden variable)。 因?yàn)殡[藏層和輸出層都是全連接的,所以我們具有隱藏層權(quán)重
和隱藏層偏置
以及輸出層權(quán)重
和輸出層偏置
。形式上,我們按如下方式計(jì)算單隱藏層多層感知機(jī)的輸出
:
對(duì)于任意權(quán)重值,我們只需合并隱藏層,便可產(chǎn)生具有參數(shù)和
的等價(jià)單層模型:
為了發(fā)揮多層結(jié)構(gòu)的潛力,我們還需要一個(gè)額外的關(guān)鍵要素:在仿射變換之后對(duì)每個(gè)隱藏單元應(yīng)用非線性的激活函數(shù)(activation function)σ。激活函數(shù)的輸出(例如,σ(?))被稱為激活值(activations)。一般來說,有了激活函數(shù),就不可能再將我們的多層感知機(jī)退化成線性模型:
我們應(yīng)用于隱藏層的激活函數(shù)通常不僅僅是按行的,而且也是按元素。這意味著在計(jì)算每一層的線性部分之后,我們可以計(jì)算每個(gè)激活值,而不需要查看其他隱藏單元所取的值。對(duì)于大多數(shù)激活函數(shù)都是這樣。
為了構(gòu)建更通用的多層感知機(jī),我們可以繼續(xù)堆疊這樣的隱藏層,,一層疊一層,從而產(chǎn)生更有表達(dá)能力的模型。