參考自UFLDL。
概述
以監督學習為例,假設我們有訓練樣本集
,那麼神經網絡算法能夠提供一種複雜且非線性的假設模型
,它具有參數
,可以以此參數來拟合我們的資料。
從最簡單的神經元說起,以下即是這個“神經元”的圖示:
這個“神經元”是一個以
及截距
為輸入值的運算單元,其輸出為
,其中函數
被稱為“激活函數”。在這裡,我們選用sigmoid函數作為激活函數
-
可以看出,這個單一“神經元”的輸入-輸出映射關系其實就是一個邏輯回歸(logistic regression)。
有一個等式我們以後會經常用到:如果選擇
,也就是sigmoid函數,那麼它的導數就是
神經網絡模型
所謂神經網絡就是将許多個單一“神經元”聯結在一起,這樣,一個“神經元”的輸出就可以是另一個“神經元”的輸入。例如,下圖就是一個簡單的神經網絡:
我們使用圓圈來表示神經網絡的輸入,标上“
”的圓圈被稱為偏置節點,也就是截距項。神經網絡最左邊的一層叫做輸入層,最右的一層叫做輸出層(本例中,輸出層隻有一個節點)。中間所有節點組成的一層叫做隐藏層,因為我們不能在訓練樣本集中觀測到它們的值。同時可以看到,以上神經網絡的例子中有3個輸入單元(偏置單元不計在内),3個隐藏單元及一個輸出單元。
我們用
來表示網絡的層數,本例中
,我們将第
層記為
,于是
是輸入層,輸出層是
。本例神經網絡有參數
,其中
(下面的式子中用到)是第
層第
單元與第
層第
單元之間的聯接參數(其實就是連接配接線上的權重,注意标号順序),
是第
層第
單元的偏置項。是以在本例中,
,
。注意,沒有其他單元連向偏置單元(即偏置單元沒有輸入),因為它們總是輸出
。同時,我們用
表示第
層的節點數(偏置單元不計在内)。
我們用
表示第
層第
單元的激活值(輸出值)。當
時,
,也就是第
個輸入值(輸入值的第
個特征)。對于給定參數集合
,我們的神經網絡就可以按照函數
來計算輸出結果。本例神經網絡的計算步驟如下:
-
我們用
表示第
層第
單元輸入權重和(包括偏置單元),比如,
,則
。
這樣我們就可以得到一種更簡潔的表示法。這裡我們将激活函數
擴充為用向量(分量的形式)來表示,即
,那麼,上面的等式可以更簡潔地表示為:
-
我們将上面的計算步驟叫作前向傳播。回想一下,之前我們用
表示輸入層的激活值,那麼給定第
層的激活值
後,第
層的激活值
就可以按照下面步驟計算得到:
-
将參數矩陣化,使用矩陣-向量運算方式,我們就可以利用線性代數的優勢對神經網絡進行快速求解。
目前為止,我們讨論了一種神經網絡,我們也可以建構另一種結構的神經網絡(這裡結構指的是神經元之間的聯接模式),也就是包含多個隐藏層的神經網絡。最常見的一個例子是
層的神經網絡,第
層是輸入層,第
層是輸出層,中間的每個層
與層
緊密相聯。這種模式下,要計算神經網絡的輸出結果,我們可以按照之前描述的等式,按部就班,進行前向傳播,逐一計算第
層的所有激活值,然後是第
層的激活值,以此類推,直到第
層。這是一個前饋神經網絡的例子,因為這種聯接圖沒有閉環或回路。
神經網絡也可以有多個輸出單元。比如,下面的神經網絡有兩層隐藏層:
及
,輸出層
有兩個輸出單元:
要求解這樣的神經網絡,需要樣本集
,其中
。如果你想預測的輸出是多個的,那這種神經網絡很适用。(比如,在醫療診斷應用中,患者的體征名額就可以作為向量的輸入值,而不同的輸出值
可以表示不同的疾病存在與否。)