天天看點

Sparse Autoencoder(1) -----Neural Networks

參考自UFLDL。

概述

以監督學習為例,假設我們有訓練樣本集

Sparse Autoencoder(1) -----Neural Networks

,那麼神經網絡算法能夠提供一種複雜且非線性的假設模型

Sparse Autoencoder(1) -----Neural Networks

,它具有參數

Sparse Autoencoder(1) -----Neural Networks

,可以以此參數來拟合我們的資料。

從最簡單的神經元說起,以下即是這個“神經元”的圖示:

Sparse Autoencoder(1) -----Neural Networks

這個“神經元”是一個以

Sparse Autoencoder(1) -----Neural Networks

及截距

Sparse Autoencoder(1) -----Neural Networks

為輸入值的運算單元,其輸出為

Sparse Autoencoder(1) -----Neural Networks

,其中函數

Sparse Autoencoder(1) -----Neural Networks

被稱為“激活函數”。在這裡,我們選用sigmoid函數作為激活函數

Sparse Autoencoder(1) -----Neural Networks
Sparse Autoencoder(1) -----Neural Networks

可以看出,這個單一“神經元”的輸入-輸出映射關系其實就是一個邏輯回歸(logistic regression)。

有一個等式我們以後會經常用到:如果選擇

Sparse Autoencoder(1) -----Neural Networks

,也就是sigmoid函數,那麼它的導數就是

Sparse Autoencoder(1) -----Neural Networks

神經網絡模型

所謂神經網絡就是将許多個單一“神經元”聯結在一起,這樣,一個“神經元”的輸出就可以是另一個“神經元”的輸入。例如,下圖就是一個簡單的神經網絡:

Sparse Autoencoder(1) -----Neural Networks

我們使用圓圈來表示神經網絡的輸入,标上“

Sparse Autoencoder(1) -----Neural Networks

”的圓圈被稱為偏置節點,也就是截距項。神經網絡最左邊的一層叫做輸入層,最右的一層叫做輸出層(本例中,輸出層隻有一個節點)。中間所有節點組成的一層叫做隐藏層,因為我們不能在訓練樣本集中觀測到它們的值。同時可以看到,以上神經網絡的例子中有3個輸入單元(偏置單元不計在内),3個隐藏單元及一個輸出單元。

我們用

Sparse Autoencoder(1) -----Neural Networks

來表示網絡的層數,本例中

Sparse Autoencoder(1) -----Neural Networks

,我們将第

Sparse Autoencoder(1) -----Neural Networks

層記為

Sparse Autoencoder(1) -----Neural Networks

,于是

Sparse Autoencoder(1) -----Neural Networks

是輸入層,輸出層是

Sparse Autoencoder(1) -----Neural Networks

。本例神經網絡有參數

Sparse Autoencoder(1) -----Neural Networks

,其中

Sparse Autoencoder(1) -----Neural Networks

(下面的式子中用到)是第

Sparse Autoencoder(1) -----Neural Networks

層第

Sparse Autoencoder(1) -----Neural Networks

單元與第

Sparse Autoencoder(1) -----Neural Networks

層第

Sparse Autoencoder(1) -----Neural Networks

單元之間的聯接參數(其實就是連接配接線上的權重,注意标号順序),

Sparse Autoencoder(1) -----Neural Networks

是第

Sparse Autoencoder(1) -----Neural Networks

層第

Sparse Autoencoder(1) -----Neural Networks

單元的偏置項。是以在本例中,

Sparse Autoencoder(1) -----Neural Networks

Sparse Autoencoder(1) -----Neural Networks

。注意,沒有其他單元連向偏置單元(即偏置單元沒有輸入),因為它們總是輸出

Sparse Autoencoder(1) -----Neural Networks

。同時,我們用

Sparse Autoencoder(1) -----Neural Networks

表示第

Sparse Autoencoder(1) -----Neural Networks

層的節點數(偏置單元不計在内)。

我們用

Sparse Autoencoder(1) -----Neural Networks

表示第

Sparse Autoencoder(1) -----Neural Networks

層第

Sparse Autoencoder(1) -----Neural Networks

單元的激活值(輸出值)。當

Sparse Autoencoder(1) -----Neural Networks

時,

Sparse Autoencoder(1) -----Neural Networks

,也就是第

Sparse Autoencoder(1) -----Neural Networks

個輸入值(輸入值的第

Sparse Autoencoder(1) -----Neural Networks

個特征)。對于給定參數集合

Sparse Autoencoder(1) -----Neural Networks

,我們的神經網絡就可以按照函數

Sparse Autoencoder(1) -----Neural Networks

來計算輸出結果。本例神經網絡的計算步驟如下:

Sparse Autoencoder(1) -----Neural Networks

我們用

Sparse Autoencoder(1) -----Neural Networks

表示第

Sparse Autoencoder(1) -----Neural Networks

層第

Sparse Autoencoder(1) -----Neural Networks

單元輸入權重和(包括偏置單元),比如,

Sparse Autoencoder(1) -----Neural Networks

,則

Sparse Autoencoder(1) -----Neural Networks

這樣我們就可以得到一種更簡潔的表示法。這裡我們将激活函數

Sparse Autoencoder(1) -----Neural Networks

擴充為用向量(分量的形式)來表示,即

Sparse Autoencoder(1) -----Neural Networks

,那麼,上面的等式可以更簡潔地表示為:

Sparse Autoencoder(1) -----Neural Networks

我們将上面的計算步驟叫作前向傳播。回想一下,之前我們用

Sparse Autoencoder(1) -----Neural Networks

表示輸入層的激活值,那麼給定第

Sparse Autoencoder(1) -----Neural Networks

層的激活值

Sparse Autoencoder(1) -----Neural Networks

後,第

Sparse Autoencoder(1) -----Neural Networks

層的激活值

Sparse Autoencoder(1) -----Neural Networks

就可以按照下面步驟計算得到:

Sparse Autoencoder(1) -----Neural Networks

将參數矩陣化,使用矩陣-向量運算方式,我們就可以利用線性代數的優勢對神經網絡進行快速求解。

目前為止,我們讨論了一種神經網絡,我們也可以建構另一種結構的神經網絡(這裡結構指的是神經元之間的聯接模式),也就是包含多個隐藏層的神經網絡。最常見的一個例子是

Sparse Autoencoder(1) -----Neural Networks

層的神經網絡,第

Sparse Autoencoder(1) -----Neural Networks

層是輸入層,第

Sparse Autoencoder(1) -----Neural Networks

層是輸出層,中間的每個層

Sparse Autoencoder(1) -----Neural Networks

與層

Sparse Autoencoder(1) -----Neural Networks

緊密相聯。這種模式下,要計算神經網絡的輸出結果,我們可以按照之前描述的等式,按部就班,進行前向傳播,逐一計算第

Sparse Autoencoder(1) -----Neural Networks

層的所有激活值,然後是第

Sparse Autoencoder(1) -----Neural Networks

層的激活值,以此類推,直到第

Sparse Autoencoder(1) -----Neural Networks

層。這是一個前饋神經網絡的例子,因為這種聯接圖沒有閉環或回路。

神經網絡也可以有多個輸出單元。比如,下面的神經網絡有兩層隐藏層:

Sparse Autoencoder(1) -----Neural Networks

Sparse Autoencoder(1) -----Neural Networks

,輸出層

Sparse Autoencoder(1) -----Neural Networks

有兩個輸出單元:

Sparse Autoencoder(1) -----Neural Networks

要求解這樣的神經網絡,需要樣本集

Sparse Autoencoder(1) -----Neural Networks

,其中

Sparse Autoencoder(1) -----Neural Networks

。如果你想預測的輸出是多個的,那這種神經網絡很适用。(比如,在醫療診斷應用中,患者的體征名額就可以作為向量的輸入值,而不同的輸出值

Sparse Autoencoder(1) -----Neural Networks

可以表示不同的疾病存在與否。)

繼續閱讀