摘要: 多層感知器和反向傳播演算法是什麼?他們的工作原理又是怎樣的?剛剛入門機器學習的你, 是不是還在被這些問題困擾呢?今天我們就通過一些生動形象的例子來向大家介紹神經網路。
人工神經網路(ANN)是一種從資訊處理角度對人腦神經元網路進行抽象從而建立的某種簡單模型, 按不同的連接方式組成不同的網路。 其在語音辨識、電腦視覺和文本處理等方面取得的突破性成果。 在下文, 我們將深入瞭解一種名為多層感知器的人工神經網路。
神經元在神經網路中, 神經元是計算的基本單元,
上述網路採用數值輸入X1和X2、與輸入相關聯的權重w1和w2以及輸入權重b(稱為偏置)。
神經元輸出Y的計算上圖所示。 函數f是非線性的, 稱為啟動函數。 它的作用是將非線性引入到神經元的輸出中, 以此達到神經元學習非線性表示的目的, 滿足實際環境的資料要求。
每個啟動函數都取一個數並對它進行特定的運算。 在實際應用中我們可能會遇到下面幾種啟動函數:
Sigmoid函數:σ(x)=1/(1+exp(−x))
tanh函數:tanh(x)=2σ(2x)−1
ReLU函數:f(x)=max(0, x)
下面是這幾個啟動函數的圖像
偏差的重要性:如果沒有偏置的話, 我們所有的分割線都是經過原點的, 但是現實問題並不會那麼如我們所願.都是能夠是經過原點線性可分的。
前饋神經網路前饋神經網路是第一個也是最簡單的人工神經網路,
前饋神經網路結構如下圖所示
前饋神經網路由三種節點組成:
1.輸入節點-輸入階段將來自外部的資訊提供給網路,
2.隱含節點-隱含節點與外界沒有直接聯繫(因此名稱為“隱含”)。 他們執行計算並將資訊從輸入節點傳輸到輸出節點。 隱藏節點的集合形成“隱藏層”。 雖然前饋網路只有一個輸入層和一個輸出層, 但它可以沒有或有多個隱藏層。
3.輸出節點-輸出節點統稱為“輸出層”, 負責計算並將資訊從網路傳輸到外部世界。
前饋網路的兩個例子如下:
1.單層感知器-這是最簡單的前饋神經網路, 不包含任何隱藏層。
2.多層感知器- 多層感知器具有一個或多個隱藏層。 我們只討論下面的多層感知器, 因為它們比實際應用中的單層感知器更常用。
多層感知器多層感知器(MLP)包含一個或多個隱藏層(除了一個輸入層和一個輸出層)。
下圖顯示了具有單個隱藏層的多層感知器。 需要注意的是, 所有連接都有與之相關的權重, 但圖中只顯示了三個權重(w0, w1, w2)。
輸入層:輸入層有三個節點。 偏置節點的值為1, 其他兩個節點將X1和X2作為外部輸入(數位值取決於輸入資料集)。
如上所述, 在輸入層中不執行計算, 所以來自輸入層中的節點的輸出分別是1, X1和X2, 這些輸入被饋送到隱藏層中。
隱藏層:隱藏層也有三個節點, 其偏置節點的輸出為1, 隱藏層中另外兩個節點的輸出取決於輸入層(1, X1, X2)的輸出以及與其相關的權重。
下圖顯示了其中一個隱藏節點的輸出計算。 同樣,可以計算其他隱藏節點的輸出。然後,這些輸出被回饋到輸出層中的節點。
輸出層:輸出層有兩個節點,它們從隱藏層獲取輸入,並執行與隱藏節點相似的計算。計算結果(Y1和Y2)將成為多層感知器的輸出。
給定一組特徵X =(x1,x2,...)和一個目標y,多層感知器可以學習特徵和目標之間的關係,無論是分類還是回歸。
我們舉個例子來更好地理解多層感知器。假設我們有以下的學生標記資料集:
兩個輸入欄顯示學生學習的小時數和學生獲得的期中分數。最終結果欄可以有兩個值1或0,表示學生是否通過了期末測試。例如,我們可以看到,如果學生學習了35個小時,並在期中獲得了67分,他最終通過了期末測試。
現在假設我們想預測一個學習25小時,期中70分的學生是否能通過期末測試。
這是一個二元分類問題,其中多層感知器可以從給定的例子(訓練資料)中學習,並給出一個新的資料點的預測。我們將在下面看到多層感知器如何學習這種關係。
訓練我們的多層感知器下圖所示的多層感知器在輸入層(除了偏置節點之外)有兩個節點,它們採用輸入“小時分析”和“期中標記”。它也有一個帶有兩個節點(除了偏置節點)的隱藏層。輸出層也有兩個節點 - 上層節點輸出“通過”的概率,而下層節點輸出“失敗”的概率。
在分類任務中,我們通常使用Softmax函數作為多層感知器的輸出層中的啟動函數,以確保輸出是確實存在的,並且它們概率相加為1。Softmax函數採用任意實值向量,並且將其化為一個在0和1之間的向量,其總和為1。所以,在這種情況下
P(合格)+P(不合格)= 1
第1步:向前傳播
網路中的所有權重都是隨機分配的。讓我們考慮圖中標記為V的隱藏層節點。假設從輸入到該節點的連接的權重是w1,w2和w3(如圖所示)。
然後網路將第一個訓練樣例作為輸入(我們知道對於輸入35和67,通過的概率是1)。
輸入到網路= [35,67]
來自網路的期望輸出(目標)= [1,0]
那麼考慮節點的輸出V可以計算如下(f是一個啟動函數,如Sigmoid函數):
V = f(1 * w1 + 35 * w2 + 67 * w3)
同樣,也計算隱藏層中另一個節點的輸出。隱藏層中兩個節點的輸出作為輸出層中兩個節點的輸入。這使我們能夠計算輸出層中兩個節點的輸出概率。
假設輸出層兩個節點的輸出概率分別為0.4和0.6(因為權重是隨機分配的,所以輸出也是隨機的)。我們可以看到,計算的概率(0.4和0.6)與期望的概率(分別為1和0)相差很遠,因此圖中的網路被認為有“不正確的輸出”。
第2步:向後傳播和權重更新
我們計算輸出節點處的總誤差,並使用反向傳播將這些誤差返回網路以計算梯度。然後,我們使用一種優化方法諸如梯度下降,以減小輸出層誤差在網路中的權重。這將在下面的圖中顯示。
假設與所考慮的節點相關的新權重是w4,w5和w6(在反向傳播和調整權重之後)。
如果我們現在再次向網路輸入相同的示例,則網路應該比以前執行得更好,因為權重現在已經被調整到最小化誤差。如圖所示,與之前的[0.6,-0.4]相比,輸出節點的誤差現在降低到[0.2,-0.2]。這意味著我們的神經網路已經學會了正確的分類我們的第一個訓練樣例。
我們在資料集中重複這個過程和所有其他的訓練樣例。那麼,神經網路將完全學會這些例子。
如果我們現在要預測一個學習25小時,期中有70分的學生是否能通過期末測試,我們就要經過前向傳播步驟,找到通過和失敗的概率。
多層感知器的三維視覺化Adam Harley創建了一個已經在手寫數位的MNIST資料庫上訓練(使用反向傳播)的多層感知器的三維視覺化。
網路將784個數位圖元值作為來自手寫數位(其在輸入層中具有對應於圖元的784個節點)的28×28圖像的輸入。網路在第一個隱藏層有300個節點,第二個隱藏層有100個節點,輸出層有10個節點(對應於10個數字)。
雖然這裡描述的網路比前一節討論的要大得多(使用更多的隱藏層和節點),但正向傳播步驟和反向傳播步驟中的所有計算都是按照相同的方式(在每個節點處)進行的之前。
下圖顯示的是當輸入是數字“5”時的網路。
較亮的顏色表示比其他更高的輸出值的節點。在輸入層中,亮節點是那些接收較高圖元值作為輸入的節點。在輸出層中,唯一亮節點對應於數位5(它的輸出概率為1,比輸出概率為0的其他九個節點高)。這表明MLP已經正確分類輸入的數字。我強烈推薦使用這個視覺化例子來觀察不同層次的節點之間的連接。
以上為譯文
文章原標題A Quick Introduction to Neural Networks,作者:Ujjwal Karn,譯者:Anchor C.,審校:虎說八道。
同樣,可以計算其他隱藏節點的輸出。然後,這些輸出被回饋到輸出層中的節點。輸出層:輸出層有兩個節點,它們從隱藏層獲取輸入,並執行與隱藏節點相似的計算。計算結果(Y1和Y2)將成為多層感知器的輸出。
給定一組特徵X =(x1,x2,...)和一個目標y,多層感知器可以學習特徵和目標之間的關係,無論是分類還是回歸。
我們舉個例子來更好地理解多層感知器。假設我們有以下的學生標記資料集:
兩個輸入欄顯示學生學習的小時數和學生獲得的期中分數。最終結果欄可以有兩個值1或0,表示學生是否通過了期末測試。例如,我們可以看到,如果學生學習了35個小時,並在期中獲得了67分,他最終通過了期末測試。
現在假設我們想預測一個學習25小時,期中70分的學生是否能通過期末測試。
這是一個二元分類問題,其中多層感知器可以從給定的例子(訓練資料)中學習,並給出一個新的資料點的預測。我們將在下面看到多層感知器如何學習這種關係。
訓練我們的多層感知器下圖所示的多層感知器在輸入層(除了偏置節點之外)有兩個節點,它們採用輸入“小時分析”和“期中標記”。它也有一個帶有兩個節點(除了偏置節點)的隱藏層。輸出層也有兩個節點 - 上層節點輸出“通過”的概率,而下層節點輸出“失敗”的概率。
在分類任務中,我們通常使用Softmax函數作為多層感知器的輸出層中的啟動函數,以確保輸出是確實存在的,並且它們概率相加為1。Softmax函數採用任意實值向量,並且將其化為一個在0和1之間的向量,其總和為1。所以,在這種情況下
P(合格)+P(不合格)= 1
第1步:向前傳播
網路中的所有權重都是隨機分配的。讓我們考慮圖中標記為V的隱藏層節點。假設從輸入到該節點的連接的權重是w1,w2和w3(如圖所示)。
然後網路將第一個訓練樣例作為輸入(我們知道對於輸入35和67,通過的概率是1)。
輸入到網路= [35,67]
來自網路的期望輸出(目標)= [1,0]
那麼考慮節點的輸出V可以計算如下(f是一個啟動函數,如Sigmoid函數):
V = f(1 * w1 + 35 * w2 + 67 * w3)
同樣,也計算隱藏層中另一個節點的輸出。隱藏層中兩個節點的輸出作為輸出層中兩個節點的輸入。這使我們能夠計算輸出層中兩個節點的輸出概率。
假設輸出層兩個節點的輸出概率分別為0.4和0.6(因為權重是隨機分配的,所以輸出也是隨機的)。我們可以看到,計算的概率(0.4和0.6)與期望的概率(分別為1和0)相差很遠,因此圖中的網路被認為有“不正確的輸出”。
第2步:向後傳播和權重更新
我們計算輸出節點處的總誤差,並使用反向傳播將這些誤差返回網路以計算梯度。然後,我們使用一種優化方法諸如梯度下降,以減小輸出層誤差在網路中的權重。這將在下面的圖中顯示。
假設與所考慮的節點相關的新權重是w4,w5和w6(在反向傳播和調整權重之後)。
如果我們現在再次向網路輸入相同的示例,則網路應該比以前執行得更好,因為權重現在已經被調整到最小化誤差。如圖所示,與之前的[0.6,-0.4]相比,輸出節點的誤差現在降低到[0.2,-0.2]。這意味著我們的神經網路已經學會了正確的分類我們的第一個訓練樣例。
我們在資料集中重複這個過程和所有其他的訓練樣例。那麼,神經網路將完全學會這些例子。
如果我們現在要預測一個學習25小時,期中有70分的學生是否能通過期末測試,我們就要經過前向傳播步驟,找到通過和失敗的概率。
多層感知器的三維視覺化Adam Harley創建了一個已經在手寫數位的MNIST資料庫上訓練(使用反向傳播)的多層感知器的三維視覺化。
網路將784個數位圖元值作為來自手寫數位(其在輸入層中具有對應於圖元的784個節點)的28×28圖像的輸入。網路在第一個隱藏層有300個節點,第二個隱藏層有100個節點,輸出層有10個節點(對應於10個數字)。
雖然這裡描述的網路比前一節討論的要大得多(使用更多的隱藏層和節點),但正向傳播步驟和反向傳播步驟中的所有計算都是按照相同的方式(在每個節點處)進行的之前。
下圖顯示的是當輸入是數字“5”時的網路。
較亮的顏色表示比其他更高的輸出值的節點。在輸入層中,亮節點是那些接收較高圖元值作為輸入的節點。在輸出層中,唯一亮節點對應於數位5(它的輸出概率為1,比輸出概率為0的其他九個節點高)。這表明MLP已經正確分類輸入的數字。我強烈推薦使用這個視覺化例子來觀察不同層次的節點之間的連接。
以上為譯文
文章原標題A Quick Introduction to Neural Networks,作者:Ujjwal Karn,譯者:Anchor C.,審校:虎說八道。