為了計算節(jié)點(diǎn)4的輸出值,我們必須先得到其所有上游節(jié)點(diǎn)(也就是節(jié)點(diǎn)1、2、3)的輸出值。節(jié)點(diǎn)1、2、3是輸入層的節(jié)點(diǎn),所以,他們的輸出值就是輸入向量本身。按照上圖畫出的對應(yīng)關(guān)系,可以看到節(jié)點(diǎn)1、2、3的輸出值分別是X1,X2,X3。我們要求輸入向量的維度和輸入層神經(jīng)元個數(shù)相同,而輸入向量的某個元素對應(yīng)到哪個輸入節(jié)點(diǎn)是可以自由決定的,你偏非要把賦值給節(jié)點(diǎn)2也是完全沒有問題的,但這樣除了把自己弄暈之外,并沒有什么價值。
一旦我們有了節(jié)點(diǎn)1、2、3的輸出值,我們就可以根據(jù)式1計算節(jié)點(diǎn)4的輸出值a4:

上式的W4b是節(jié)點(diǎn)4的偏置項(xiàng),圖中沒有畫出來。而W41,W42,W43分別為節(jié)點(diǎn)1、2、3到節(jié)點(diǎn)4連接的權(quán)重,在給權(quán)重Wji編號時,我們把目標(biāo)節(jié)點(diǎn)的編號j 放在前面,把源節(jié)點(diǎn)的編號放在后面。
同樣,我們可以繼續(xù)計算出節(jié)點(diǎn)5、6、7的輸出值a5,a6,a7。這樣,隱藏層的4個節(jié)點(diǎn)的輸出值就計算完成了,我們就可以接著計算輸出層的節(jié)點(diǎn)8的輸出值y1:

同理,我們還可以計算出y2的值。這樣輸出層所有節(jié)點(diǎn)的輸出值計算完畢,我們就得到了在輸入向量

時,神經(jīng)網(wǎng)絡(luò)的輸出向量

。這里我們也看到,輸出向量的維度和輸出層神經(jīng)元個數(shù)相同。
神經(jīng)網(wǎng)絡(luò)的矩陣表示
神經(jīng)網(wǎng)絡(luò)的計算如果用矩陣來表示會很方便(當(dāng)然逼格也更高),我們先來看看隱藏層的矩陣表示。
首先我們把隱藏層4個節(jié)點(diǎn)的計算依次排列出來:

接著,定義網(wǎng)絡(luò)的輸入向量和隱藏層每個節(jié)點(diǎn)的權(quán)重向量。令

代入到前面的一組式子,得到:

現(xiàn)在,我們把上述計算的四個式子寫到一個矩陣?yán)锩?,每個式子作為矩陣的一行,就可以利用矩陣來表示它們的計算了。令

帶入前面的一組式子,得到:

在式2中,是激活函數(shù),在本例中是sigmoid函數(shù);W是某一層的權(quán)重矩陣;x是某層的輸入向量;a是某層的輸出向量。式2說明神經(jīng)網(wǎng)絡(luò)的每一層的作用實(shí)際上就是先將輸入向量左乘一個數(shù)組進(jìn)行線性變換,得到一個新的向量,然后再對這個向量逐元素應(yīng)用一個激活函數(shù)。
每一層的算法都是一樣的。比如,對于包含一個輸入層,一個輸出層和三個隱藏層的神經(jīng)網(wǎng)絡(luò),我們假設(shè)其權(quán)重矩陣分別為W1,W2,W3,W4,每個隱藏層的輸出分別是a1,a2,a3,神經(jīng)網(wǎng)絡(luò)的輸入為x,神經(jīng)網(wǎng)絡(luò)的輸入為y,如下圖所示:

則每一層的輸出向量的計算可以表示為:

這就是神經(jīng)網(wǎng)絡(luò)輸出值的計算方法。
神經(jīng)網(wǎng)絡(luò)的訓(xùn)練
現(xiàn)在,我們需要知道一個神經(jīng)網(wǎng)絡(luò)的每個連接上的權(quán)值是如何得到的。我們可以說神經(jīng)網(wǎng)絡(luò)是一個模型,那么這些權(quán)值就是模型的參數(shù),也就是模型要學(xué)習(xí)的東西。然而,一個神經(jīng)網(wǎng)絡(luò)的連接方式、網(wǎng)絡(luò)的層數(shù)、每層的節(jié)點(diǎn)數(shù)這些參數(shù),則不是學(xué)習(xí)出來的,而是人為事先設(shè)置的。對于這些人為設(shè)置的參數(shù),我們稱之為超參數(shù)(Hyper-Parameters)。