一、 神經(jīng)元到神經(jīng)網(wǎng)絡(luò)
在之前的文章中(《神經(jīng)網(wǎng)絡(luò)(一)》和《神經(jīng)網(wǎng)絡(luò)(二)》),我們討論了如何為神經(jīng)元搭建模型。雖然搭建模型的過程并不復(fù)雜,但得到的神經(jīng)元模型也沒有太多的新意,比如使用sigmoid函數(shù)作為激活函數(shù),則得到的神經(jīng)元模型就是邏輯回歸。
在人體中,單個(gè)神經(jīng)元能做的事情非常有限,但多個(gè)神經(jīng)元相互交織在一起就組成了人類強(qiáng)大的神經(jīng)系統(tǒng)。這啟發(fā)我們需要將多個(gè)神經(jīng)元模型聯(lián)結(jié)起來組成復(fù)雜的神經(jīng)網(wǎng)絡(luò),而這正是這篇文章討論的重點(diǎn)。
二、 圖形表示
將多個(gè)神經(jīng)元聯(lián)結(jié)起來最簡(jiǎn)單且最直觀的方法就是將它們首尾相接形成一個(gè)沒有環(huán)的網(wǎng)絡(luò)(acyclic graph),在這個(gè)網(wǎng)絡(luò)中,一個(gè)神經(jīng)元的輸出是另一個(gè)神經(jīng)元的輸入。這種類型的神經(jīng)網(wǎng)絡(luò)在學(xué)術(shù)上被稱為人工神經(jīng)網(wǎng)絡(luò)(Artificial Neural Networks,ANN) [1],它的模型拓?fù)浣Y(jié)構(gòu)如圖1所示。
在神經(jīng)網(wǎng)絡(luò)中,神經(jīng)元是按層(layer)組織的。每一層包含若干個(gè)神經(jīng)元,層內(nèi)部的神經(jīng)元是相互獨(dú)立的,也就是說它們之間并不相連;但相鄰的兩層之間是全連接的(fully-connected),也就是說任意兩個(gè)神經(jīng)元都是直接相連的(當(dāng)然前提是這兩個(gè)神經(jīng)元分別來自相鄰的兩層)。
神經(jīng)網(wǎng)絡(luò)中不同的層按功能分為3類,分別是輸入層(input layer)、隱藏層(hidden layer)以及輸出層(output layer)。
神經(jīng)網(wǎng)絡(luò)里只有一個(gè)輸入層,其中的元素在圖中標(biāo)記1里用黑色的點(diǎn)表示:一個(gè)黑點(diǎn)表示一個(gè)模型的輸入,也就是訓(xùn)練數(shù)據(jù)里的一個(gè)自變量,若訓(xùn)練數(shù)據(jù)有個(gè)特征,則輸入層里一定有相應(yīng)的個(gè)點(diǎn)。在模型中,輸入層對(duì)數(shù)據(jù)不做任何處理,只負(fù)責(zé)將信息傳遞給后面的隱藏層(若網(wǎng)絡(luò)里沒有隱藏層,則將信息直接傳遞給輸出層,這時(shí)候,神經(jīng)網(wǎng)絡(luò)其實(shí)就是邏輯回歸)。
神經(jīng)網(wǎng)絡(luò)可以有多個(gè)隱藏層,比如圖1中就有兩個(gè)隱藏層。隱藏層里的元素就是之前討論的神經(jīng)元模型(更具體一點(diǎn),它們都是sigmoid神經(jīng)元),因此在圖中標(biāo)記1里用圓圈表示。值得注意的是,一個(gè)圓圈包含了線性模型以及激活函數(shù)。在多層感知器里,隱藏層的作用是傳輸并分析數(shù)據(jù)。
神經(jīng)網(wǎng)絡(luò)里只有一個(gè)輸出層。輸出層里的元素與隱藏層里的不同,它只包含線性模型,因此在圖中標(biāo)記1里用方塊表示。雖然輸出層的名字里有“輸出”二字,但它并不是模型的最終輸出,與《神經(jīng)網(wǎng)絡(luò)(二)》中的邏輯回歸類似,輸出層的結(jié)果經(jīng)過softmax函數(shù)處理后,才能得到最終的模型結(jié)果(如果該神經(jīng)網(wǎng)絡(luò)解決的是分類問題)。

正如上面討論的,不同層里的元素是不一樣的,但對(duì)于神經(jīng)網(wǎng)絡(luò)領(lǐng)域,大家約定俗成地都用圓圈來表示它們,也將它們統(tǒng)稱為神經(jīng)元(雖然這樣很容易給初學(xué)者造成誤解),并將最后一步的softmax函數(shù)省略掉,如圖1中標(biāo)記2所示。
圖1中的標(biāo)記1和標(biāo)記2表示的同樣的神經(jīng)網(wǎng)絡(luò),其中標(biāo)記2中的圖示在神經(jīng)網(wǎng)絡(luò)領(lǐng)域是通用的,因此在之后的章節(jié)中我們將沿用這樣的記號(hào)。
對(duì)于神經(jīng)網(wǎng)絡(luò),通常會(huì)以它所擁有的層數(shù)來命名,但這時(shí)輸入層是不計(jì)算在內(nèi)的,比如圖1中的模型被稱為3-層神經(jīng)網(wǎng)絡(luò)(3-layer neural networks)。當(dāng)然這樣的命名并不能唯一地標(biāo)識(shí)一個(gè)神經(jīng)網(wǎng)絡(luò),比如將圖1中的隱藏層1增加到10個(gè)神經(jīng)元,得到的仍然是一個(gè)3-層神經(jīng)網(wǎng)絡(luò)。
三、 數(shù)學(xué)基礎(chǔ)
神經(jīng)網(wǎng)絡(luò)在圖形上的表示是比較直觀的,但它所代表的數(shù)學(xué)公式卻是極其復(fù)雜的。為了更深入地理解神經(jīng)網(wǎng)絡(luò),下面將討論圖形背后的數(shù)學(xué)基礎(chǔ)。
為了討論方便,我們來看一個(gè)非常簡(jiǎn)單的2-層神經(jīng)網(wǎng)絡(luò)(假設(shè)這個(gè)神經(jīng)網(wǎng)絡(luò)用于解決分類問題),如圖2所示。

這個(gè)網(wǎng)絡(luò)的輸入層有兩個(gè)圓圈,表示模型所用的兩個(gè)自變量,分別用表示。
隱藏層里的圓圈表示神經(jīng)元模型,它包含兩個(gè)部分:線性模型和激活函數(shù)。
- 對(duì)于第
層(從左到右編號(hào))里的第
個(gè)神經(jīng)元(從上到下編號(hào)),用記號(hào)
表示相應(yīng)的線性模型輸出(圓圈輸入的第一層加工),用記號(hào)
表示激活函數(shù)的輸出(也是圓圈的輸出)。由于這個(gè)神經(jīng)網(wǎng)絡(luò)里都是sigmoid神經(jīng)元,因此兩者之間的關(guān)系如公式(1)所示。
圖中圓圈之間的箭頭表示線性模型中的權(quán)重(這是神經(jīng)網(wǎng)絡(luò)的一部分模型參數(shù)),用記號(hào)
表示從第
層里第
個(gè)圓圈到第
層里第
個(gè)圓圈的箭頭,比如圖2中的
和
。值得注意的是,為了書寫方便,我們將輸入層記為第0層。
除了權(quán)重之外,線性模型里還有一個(gè)截距項(xiàng)(這是神經(jīng)網(wǎng)絡(luò)的另一部分模型參數(shù)),用記號(hào)
表示第
層里第
個(gè)圓圈所對(duì)應(yīng)的截距。結(jié)合上面的記號(hào),圓圈里線性模型的輸出公式如下。值得注意的是,
表示輸入層里第
個(gè)自變量,也就是圖中的
。
輸出層的圓圈只表示線性模型,雖然圓圈里并沒有激活函數(shù),但為了書寫簡(jiǎn)單,依然用記號(hào)表示圖2里輸出層圓圈的輸出。
與隱藏層有所不同,在輸出層里,我們有
(
的計(jì)算公式與隱藏層中的一模一樣,在此不再贅述)。
針對(duì)分類問題,相應(yīng)的損失函數(shù)如公式(3)所示。其中
為《神經(jīng)網(wǎng)絡(luò)(二)》中討論過的softmax函數(shù);
表示針對(duì)第
個(gè)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)輸出;
表示的第
個(gè)數(shù)據(jù)的類別,如果是類別0,則
,否則
。
將上面的討論總結(jié)一下,神經(jīng)網(wǎng)絡(luò)的模型參數(shù)分為兩類:一類是線性模型的權(quán)重,在圖2中,一共有
個(gè)這樣的參數(shù);一類是線性模型的截距項(xiàng)
,在圖2中,一共有5個(gè)這樣的參數(shù)。由此可見,神經(jīng)網(wǎng)絡(luò)的模型參數(shù)是很多的,而且與其他模型有所區(qū)別的是,它的模型參數(shù)是明顯分層的。也就是說,從數(shù)學(xué)上來看,神經(jīng)網(wǎng)絡(luò)的模型參數(shù)是前后依賴的。這使得神經(jīng)網(wǎng)絡(luò)的訓(xùn)練變得十分復(fù)雜,需要使用比較特殊的算法來(反向傳播算法)估算模型參數(shù)。這部分內(nèi)容將在之后的文章中仔細(xì)討論。
四、廣告時(shí)間
這篇文章的大部分內(nèi)容參考自我的新書《精通數(shù)據(jù)科學(xué):從線性回歸到深度學(xué)習(xí)》。
李國(guó)杰院士和韓家煒教授在讀過此書后,親自為其作序,歡迎大家購(gòu)買。
另外,與之相關(guān)的免費(fèi)視頻課程請(qǐng)關(guān)注這個(gè)鏈接
-
在有些文獻(xiàn)中,這樣的神經(jīng)網(wǎng)絡(luò)又被稱為多層感知器(Multi-Layer Perceptron,MLP) ?