演算法工程師修仙之路:TensorFlow(四)
阿新 • • 發佈:2019-01-13
TensorFlow 入門
TensorFlow實現神經網路
TensorFlow 遊樂場及神經網路簡介
-
TensorFlow 遊樂場是一個通過網頁瀏覽器就可以訓練的簡單神經網路並實現了視覺化訓練過程的工具。
-
TensorFlow 遊樂場介面
-
TensorFlow 遊樂場的左側提供了4個不同的資料集來測試神經網路。
- 預設的資料為左上角被框出來的那個。
- 被選中的資料也會顯示在最右邊的“OUTPUT”欄下。
- 在這個資料中,可以看到一個二維平面上有黃色或者藍色的點,每一個小點代表了 一個樣例,而點的顏色代表了樣例的標籤。因為點的顏色只有兩種,所以這是一個二分類的問題。
-
假設需要判斷某工廠生產的零件是否合格,那麼黃色的點可以表示所有合格的零件而藍色的表示不合格的零件。這樣判斷一個零件是否合格就變成了區分點的顏色。
- 為了將一個實際問題對應到平面上不同顏色點的劃分,還需要將實際問題中的實體,變成平面上的一個點。這就是特徵提取解決的問題。
- 以零件為例,可以用零件的長度和質量來大致描述一個零件。這樣一個物理意義上的零件就可以被轉化成長度和質量這兩個數字。在機器學習中,所有用於描述實體的數字的組合就是一個實體的特徵向量(feature vector)。
- 假設使用長度和質量作為一個零件的特徵向量,那麼每個零件就是二維平面上的一個點。
- TensorFlow 遊樂場中 FEATURES 一欄對應了特徵向量。
- 可以認為 代表一個零件的長度,而 代表零件的質量。
-
-
特徵向量是神經網路的輸入,目前主流的神經網路都是分層的結構。
- 第一層是輸入層,代表特徵向量中每一個特徵的取值。
- 比如如果一個零件的長度是 0.5 ,那麼 的值就是0.5。
- 同一層的節點不會相互連線,而且每一層只和下一層連線,直到最後一層作為輸出層得到計算的結果。
-
在二分類問題中,比如判斷零件是否合格,神經網路的輸出層往往只包含一個節點,而這個節點會輸出一個實數值。通過這個輸出值和一個事先設定的閥值,就可以得到最後的分類結果。以判斷零件合格為例,可以認為當輸出的數值大於 0時,給出的判斷結果是零件合格,反之則零件不合格。一般可以認為當輸出值離閥值越遠時得到的答案越可靠。
-
**在輸入和輸出層之間的神經網路叫做隱藏層,一般一個神經網路的隱藏層越多,這個神經網路越深。**在 TensorFlow 遊樂場中可以通過點選“+”或者“-”來增加/減少神經網路隱藏層的數量。
-
除了可以選擇神經網路的深度,TensorFlow 遊樂場也支援選擇神經網路每一層的節點數以及學習率(learning rate)、啟用函式(activation)、正則化(regularization)。
-
在真實問題中,一般會從實體中抽取更多的特徵,所以一個實體會被表示為高維空間中的點。有一些神經網路是可以跨層連線的,但目前大部分神經網路結構中都只是相鄰兩層有連線。
-
當所有配置都選好之後,可以通過左上角的開始標誌來訓練這個神經網路。
-
TensorFlow 遊樂場訓練100輪之後
- 一個小格子代表神經網路中的一個節點,而邊代表節點之間的連線。
- 每一個節點和邊都被塗上了或黃或藍的顏色,但邊上的顏色和格子中的顏色含
義有略微的區別。 - 每一條邊代表了神經網路中的一個引數,它可以是任意實數。神經網路就是通過對引數的合理設定來解決分類或者回歸問題的。
- 邊上的顏色體現了這個引數的取值,當邊的顏色越深時,這個引數取值的絕對值越大;當邊的顏色很淺時,這個引數的取值接近於0。
- 每一個節點上的顏色代表了這個節點的區分平面。這個平面上的每一個點就代表了 的一種取值。而這個點的顏色就體現了 在這種取值下這個節點的輸出值。和邊類似,當節點的輸出值的絕對值越大時,顏色越深。
- 邊的顏色有黃色和藍色的區別,黃色越深表示負得越大,藍色越深表示正得越大。類似邊上的顏色,點上的顏色也有黃色和藍色,黃色越深表示負得越大,藍色越深表示正得越大。
- 這個節點的區分平面就是 y 軸。因為這個節點的輸出就是 本身的值,所以當 X1 小於 0 時,這個節點的輸出就是負數,而 大於 0 時輸出的就是正數。於是 y 軸的左側都為黃色,而右側都為藍色。
- 唯一特殊的是最右邊 OUTPUT 欄下的輸出節點。這個節點中除了顯示了區分平面,還顯示了訓練資料,也就是希望通過神經網路區分的資料點。經過兩層的隱藏層,輸出節點的區分平面已經可以完全區分不同顏色的資料點。
-
使用神經網路解決分類問題主要可以分為以下 4 個步驟。
- 提取問題中實體的特徵向量作為神經網路的輸入,不同的實體可以提取不同的特徵向量。
- 定義神經網路的結構,並定義如何從神經網路的輸入得到輸出,這個過程就是神經網路的前向傳播演算法。
- 通過訓練資料來調整神經網路中引數的取值,即訓練神經網路的過程。
- 使用訓練好的神經網路來預測未知的資料。