官术网_书友最值得收藏!

3.1 前向傳播功能

3.1.1 從TensorFlow的可視化運行過程理解前向傳播功能

如圖3-1所示,在TensorFlow的可視化示意圖中,左側是輸入層,右側是輸出層,中間是隱藏層,輸入層的數據經過若干層的處理后到達輸出層。神經網絡從輸入層數據中提取特征值,輸入給神經網絡系統。圖3-1中,輸入層有2個神經元節點,中間是2個隱藏層,第一個隱藏層有4個神經元節點,第二個隱藏層有2個神經元節點,輸出層有1個神經元節點。

圖3-1 TensorFlow的可視化示意圖(2個隱藏層)

所有的數據在神經網絡中從左到右訓練一次稱為一次時代。隨著不斷的迭代,神經網絡的預測精度會越來越高,訓練損失度和測試損失度會越來越小。在TensorFlow可視化示意圖中,隱藏層的層數及神經元的個數可以調節,例如新增加一個隱藏層,第一個隱藏層增加到8個神經元,第2個隱藏層為4個神經元,第3個隱藏層為2個神經元,如圖3-2所示。

圖3-2 TensorFlow的可視化示意圖(3個隱藏層)

圖3-3是神經網絡數據處理的過程,第一個隱藏層的第一個節點,有2個輸入節點,分別是輸入層的x1節點和x2節點,第一個隱藏層的第一個節點根據輸入計算出一個值,這個值將作為第二個隱藏層的輸入。例如第2個隱藏層的第2個節點,接收上一個隱藏層的8個神經元節點的數據的結果。8個神經元節點數據可能有一部分不重要,這8個數據輸入產生一個輸出,而不是產生8個輸出。

圖3-3 TensorFlow計算值示意圖

第二個隱藏層的第二個節點對8個輸入值經過激活函數算法產生一個輸出,從變換的角度看,這是非線性變換。不同的神經網絡層之間,從多個輸入變成一個輸出的過程就是非線性變換。非線性變換是神經網絡層到達下一層的動力,也就是激活函數。

3.1.2 從架構層面理解前向傳播功能

神經網絡前向傳播的過程是,從第一層處理,到第二層處理,再到第三層處理,然后到第四層處理……,如圖3-4所示,對輸入層的輸入數據首先進行線性處理,然后進行非線性處理,然后到下一層,把上一層的所有神經元的數據抓取過去,再進行線性處理,然后進行非線性處理。這里只進行了1個隱藏層的處理。

圖3-4 神經網絡處理過程

神經網絡處理過程是從左到右見天機的過程,所謂“見天機”是指通過神經網絡得到一個預測結果。如圖3-5所示,如果只看其中的一個過程,從輸入層輸入數據,將數據的值乘以它的權重(權重體現輸入值的重要性),然后加上第二個神經元的值乘以它的權重,然后再加上第三個神經元的值乘以它的權重;把數據累加后收集起來,收集的過程就是線性轉換的過程;然后進行某種激活函數處理。處理的過程是非線性的,會產生一個結果。如果這是隱藏層一個神經元的處理過程,那么這個結果會作為下一個隱藏層的輸入數據之一。

圖3-5 神經元的處理過程

3.1.3 理解前向傳播原理

如圖3-6所示,輸入層輸入數據x1x2;神經網絡第一個隱藏層的第一個神經元接收所有的特征,經過線性變換、非線性變換得出一個結果,神經網絡第一個隱藏層的第二個神經元接收所有的特征,經過線性變換、非線性變換得出一個結果,相應的第三個、第四個……一直到第8個神經元,按照前面的輸入進行一定的處理,將處理的結果作為第二個隱藏層的數據的輸入;第二個隱藏層的第一個神經元接收前一個隱藏層8個神經元的值,通過線性變換及非線性處理函數,將8個接收的數據變成1個輸出的結果,第二個隱藏層的第二個神經元進行相應的處理,第二個隱藏層的第三個神經元也進行相應的處理,第二個隱藏層的第四個神經元也進行相應的處理;然后第三個隱藏層的神經元接收上一個隱藏層4個神經元的所有結果。每個神經元都是這樣,接收數據的過程是線性變換的過程,進行非線性的函數處理后,得出一個結果,隱藏層的計算就完成了。然后是輸出層,輸出層只有一個神經元,接收數據的過程是線性的過程,得出最終結果的過程是非線性的過程。

圖3-6 前向傳播計算

對于前向傳播而言,精髓在于激活函數。對于激活函數不同的人工智能框架有不同的實現,可能激活函數的名稱是一樣的,機制也是一樣的,但不同的人工智能框架實現的性能可能不一樣。本節使用的是Sigmoid激活函數。從最簡單的架構角度講,Sigmoid激活函數把前面的輸入數據變成0~1的數據。Sigmoid函數作為激活函數,是最基本、最簡單的激活函數,無論是開發人工智能框架,還是應用人工智能框架,它可能都是接觸到的第一個激活函數,如圖3-7所示。

圖3-7 Sigmoid激活函數

如圖3-8所示,TensorFlow的可視化圖中提供的激活函數(Activation)包括ReLU、Tanh、Sigmoid、Linear等。不同的激活函數有不同的適用場景,這里應用的是分類場景。使用Sigmoid激活函數進行測試,發現其收斂速度非常快,但是不太適用于分類這個場景,因為使用Sigmoid激活函數后測試損失度和訓練損失度基本上沒變化。接下來使用ReLU激活函數進行測試,ReLU激活函數對于分類場景應用效果很不錯,收斂速度非???,測試損失度變成了0.001,訓練損失度也變成了0.001。然后再對Tanh激活函數進行測試,發現其收斂速度沒有ReLU激活函數速度快。

圖3-8 激活函數

主站蜘蛛池模板: 平乡县| 济源市| 双峰县| 马鞍山市| 旺苍县| 巧家县| 周口市| 余干县| 泰来县| 台东县| 色达县| 乐平市| 鲜城| 泰州市| 德化县| 宁夏| 闸北区| 合江县| 宁阳县| 阳高县| 平南县| 淮南市| 理塘县| 建始县| 盘锦市| 和政县| 天长市| 扎兰屯市| 鹿泉市| 上饶县| 天气| 渝北区| 馆陶县| 印江| 运城市| 林甸县| 胶南市| 云梦县| 晴隆县| 三原县| 竹北市|