神經(jīng)網(wǎng)絡(luò)(三):神經(jīng)網(wǎng)絡(luò)

一、 神經(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)。

  1. 神經(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í)就是邏輯回歸)。

  2. 神經(jīng)網(wǎng)絡(luò)可以有多個(gè)隱藏層,比如圖1中就有兩個(gè)隱藏層。隱藏層里的元素就是之前討論的神經(jīng)元模型(更具體一點(diǎn),它們都是sigmoid神經(jīng)元),因此在圖中標(biāo)記1里用圓圈表示。值得注意的是,一個(gè)圓圈包含了線性模型以及激活函數(shù)。在多層感知器里,隱藏層的作用是傳輸并分析數(shù)據(jù)。

  3. 神經(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ò)解決的是分類問題)。

圖1

正如上面討論的,不同層里的元素是不一樣的,但對(duì)于神經(jīng)網(wǎng)絡(luò)領(lǐng)域,大家約定俗成地都用圓圈來表示它們,也將它們統(tǒng)稱為神經(jīng)元(雖然這樣很容易給初學(xué)者造成誤解),并將最后一步的softmax函數(shù)省略掉,如圖1中標(biāo)記2所示。

  1. 圖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)。

  2. 對(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所示。

圖2

這個(gè)網(wǎng)絡(luò)的輸入層有兩個(gè)圓圈,表示模型所用的兩個(gè)自變量,分別用x_1, x_2表示。

隱藏層里的圓圈表示神經(jīng)元模型,它包含兩個(gè)部分:線性模型和激活函數(shù)。

  1. 對(duì)于第l層(從左到右編號(hào))里的第m個(gè)神經(jīng)元(從上到下編號(hào)),用記號(hào)i^l_m表示相應(yīng)的線性模型輸出(圓圈輸入的第一層加工),用記號(hào)o_m^l表示激活函數(shù)的輸出(也是圓圈的輸出)。由于這個(gè)神經(jīng)網(wǎng)絡(luò)里都是sigmoid神經(jīng)元,因此兩者之間的關(guān)系如公式(1)所示。

o^l_m = \frac{1}{1 + e^{-i^l_m}}\tag{1}

  1. 圖中圓圈之間的箭頭表示線性模型中的權(quán)重(這是神經(jīng)網(wǎng)絡(luò)的一部分模型參數(shù)),用記號(hào)w_{m, n}^l表示從第l - 1層里第m個(gè)圓圈到第l層里第n個(gè)圓圈的箭頭,比如圖2中的w_{1, 2}^1w_{3, 1}^2。值得注意的是,為了書寫方便,我們將輸入層記為第0層。

  2. 除了權(quán)重之外,線性模型里還有一個(gè)截距項(xiàng)(這是神經(jīng)網(wǎng)絡(luò)的另一部分模型參數(shù)),用記號(hào)b_m^l表示第l層里第m個(gè)圓圈所對(duì)應(yīng)的截距。結(jié)合上面的記號(hào),圓圈里線性模型的輸出公式如下。值得注意的是,o_m^0表示輸入層里第m個(gè)自變量,也就是圖中的x_m

i_n^l = \sum_m w_{m, n}^lo_m^{l - 1} + b_n^l\tag{2}

輸出層的圓圈只表示線性模型,雖然圓圈里并沒有激活函數(shù),但為了書寫簡(jiǎn)單,依然用記號(hào)o_m^2表示圖2里輸出層圓圈的輸出。

  1. 與隱藏層有所不同,在輸出層里,我們有i_m^l = o_m^li_m^l的計(jì)算公式與隱藏層中的一模一樣,在此不再贅述)。

  2. 針對(duì)分類問題,相應(yīng)的損失函數(shù)如公式(3)所示。其中\sigma《神經(jīng)網(wǎng)絡(luò)(二)》中討論過的softmax函數(shù);Z_i = (o_1^2, o_2^2)_i表示針對(duì)第i個(gè)數(shù)據(jù)的神經(jīng)網(wǎng)絡(luò)輸出;\theta_i表示的第i個(gè)數(shù)據(jù)的類別,如果是類別0,則\theta_i = (1, 0),否則\theta_i = (0, 1)。

L = \sum_i L_i = -\sum_i\theta_i\ln\sigma(Z_i)^T\tag{3}

將上面的討論總結(jié)一下,神經(jīng)網(wǎng)絡(luò)的模型參數(shù)分為兩類:一類是線性模型的權(quán)重w_{m, n}^l,在圖2中,一共有3 \times 2 + 2 \times 3 = 12個(gè)這樣的參數(shù);一類是線性模型的截距項(xiàng)b_m^l,在圖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è)鏈接


  1. 在有些文獻(xiàn)中,這樣的神經(jīng)網(wǎng)絡(luò)又被稱為多層感知器(Multi-Layer Perceptron,MLP) ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容