1. 程式人生 > >[2] TensorFlow 向前傳播演算法(forward-propagation)與反向傳播演算法(back-propagation)

[2] TensorFlow 向前傳播演算法(forward-propagation)與反向傳播演算法(back-propagation)

TensorFlow Playground

http://playground.tensorflow.org

幫助更好的理解,遊樂場Playground可以實現視覺化訓練過程的工具

TensorFlow Playground的左側提供了不同的資料集來測試神經網路。預設的資料為左上角被框出來的那個。被選中的資料也會顯示在最右邊的 “OUTPUT”欄下。在這個資料中,可以看到一個二維平面上有紅色或者藍色的點,每一個小點代表了一個樣例,而點的顏色代表了樣例的標籤。因為點的顏色只有兩種,所以這是 一個二分類的問題。在這裡舉一個例子來說明這個資料可以代表的實際問題。假設需要判斷某工廠生產的零件是否合格,那麼藍色的點可以表示所有合格的零件而紅色的表示不合格的零件。這樣判斷一個零件是否合格就變成了區分點的顏色。

 為了將一個實際問題對應到平面上不同顏色點的劃分,還需要將實際問題中的實體, 比如上述例子中的零件,變成平面上的一個點。 這就是特徵提取解決的問題。還是以零件為例, 可以用零件的長度和質量來大致描述一個零件。這樣一個物理意義上的零件就可以被轉化成長度和質量這兩個數字。在機器學習中,所有用於描述實體的數字的組合就是一 個實體的特徵向量(feature vector)特徵向量的提取對機器學習的效果至關重要,通過特徵提取,就可以將實際問題中的實體轉化為空間中的點。假設使用長度和質量作為一個零件的特徵向量,那麼每個零件就是二維平面上的一個點。 TensorFlow Playground中 FEATURES

一欄對應了特徵向量。 可以認為 x1代表零件的長度,而 x2代表零件的質量。 

在二分類問題中,比如 判斷零件是否合格,神經網路的輸出層往往只包含一個節點,而這個節點會輸出一個實數值。通過這個輸出值和一個事先設定的閥值,就可以得到最後的分類結果。以判斷零件合格為例,可以認為當輸出的數值大於 0 時,給出的判斷結果是零件合格,反之則零件不合格。一般可以認為當輸出值距離閾值越遠時得到的判斷越可靠。 

主流的神經網路主體結構都是分層的結構:

輸入層 - 隱藏層 - 輸出層

 

綜上,使用神經網路解決分類或迴歸問題主要可以分為以下 4 個步驟:

1. 提取問題中實體的特徵向量作為神經網路的輸入。不同的實體可以提取不同的特徵向量。

2. 定義神經網路的結構,並定義如何從神經網路的輸入得到輸出。這個過程就是神經網路的前向傳播演算法

3. 通過訓練資料來調整神經網路中引數的取值,這就是訓練神經網路的過程。 

4. 使用訓練好的神經網路來預測未知的資料。

 

前向傳播演算法

最簡單的全連線網路結構的前向傳播演算法