《TensorFlow2.0》前饋神經網路和 BP 演算法
導讀:什麼是人工神經網路?人工神經網路有哪些分支?什麼是前饋神經網路?神經網路如何使用反向傳播?如何用keras搭建一個前饋神經網路架構?通過本篇文章,我們來解決以上問題。在閱讀本篇文章之前,希望你已經瞭解感知器,SVM,成本函式,梯度優化。
一、人工神經網路
1、人工神經網路主要分為兩種型別:
- 前饋人工神經網路?(Feedforward neural networks)?,是最常用的神經網路型別?,一般定義為有向無環圖?訊號,只能沿著最終輸入的那個方向傳播。
- ?另一種型別是反饋人工神經網路(?feedback neural networks?),也叫做遞迴神經網路,後面有一章專門介紹遞迴神經網路,本文只介紹前饋人工神經網路。
2、深度學習(Deep Learning)和神經網路(Neural Network):
Deep learning本身算是machine learning的一個分支,簡單可以理解為neural network的發展。
這裡的neural network指的是傳統神經網路,neural network曾經是ML領域特別火熱的一個方向,但由於本身的一些缺點(過擬合,訓練慢等),所以中間20多年時間,神經網路很少被關注。
那段時間基本是SVM和boosting演算法,後來Hinton和其他人一起提出了一個實際可行的deep learning框架,於是我們現在可以站在巨人的肩膀上。
DL採用了神經網路相似的分層結構,但用了不同的訓練機制,傳統神經網路使用BP機制,DL整體上是一個layer-wise的訓練機制。之所以這樣做,是因為BP機制對於一個7層以上的network,殘差傳播到最前面的層已經變得太小,出現所謂的gradient diffusion(梯度擴散)。
本篇文章介紹的前饋神經網路,屬於傳統神經網路,之所以寫這遍文章,是想更深入的瞭解神經網路,及對keras使用的熟悉。對後面幾篇介紹DL的文章,能更好的理解。
3、XOR
讓我們深入研究XOR異或(線性不可分函式)來感受一下人工神經網路的強大:
?AND是兩個輸入均為1,結果才為1
?OR是兩個 輸入至少有1個1,結果即為1?
XOR與它們不同?,XOR是當兩個輸入中有且僅有1個1,結果才為1?我們
下面是XOR?、OR、?NAND和AND四種函式,有兩個輸入A和B時的輸出真值表?,從這個表我們可以檢驗OR、?NAND和AND組合函式的輸出,?與同樣輸入的XOR輸出相同:
A | B | A AND B | A NAND B | A OR B | A XOR B | A OR B | A NAND B | (A OR B) AND (A NAND B) |
---|---|---|---|---|---|---|---|---|
0 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0 |
0 | 1 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 |
1 | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 |
神經網路實現XOR:我們不使用單個感知器來表示XOR,?而將建立一個具有多人工神經元的人工神經網路?。每個神經元都近似一個線性函式?,每個樣本的特徵表述都被輸入到兩個神經元?,一個NAND神經元和一個OR神經元,?這些神經元的輸出將連線到第三個AND神經元上?,測試XOR的條件是否為真?。
二、BP演算法
1、多層感知器(MLP)
為了闡明反向傳播的定義,讓我們考慮一個與全連線的多層 MLP 相關聯的特定圖。多層感知器?(multilayer perceptron)?MLP?是最流行的人工神經網路之一,?它的名稱不太恰當?,多層感知器並非指單個帶有多個層次的感知器,?而是指可以是感知器的人工神經元組成的多個層次?。MPL的層次結構是一個有向無環圖?。通常?,每一層都全連線到下一層?,某一層上的每個人工神經元的輸出成為下一層若干人工神經元的輸入,?MLP至少有三層人工神經元?。
2、反向傳播演算法(BP)
反向傳播?BP?演算法經常用來連線優化演算法求解成本函式最小化問題,?比如梯度下降法,?這個演算法名稱是反向(?back)?和傳播?(propagation)?的合成詞?。是指誤差在網路層的流向,?理論上?反向傳播可以用於訓練具有任意層?、任意數量隱藏單元的前饋人工神經網路?,但是計算能力的實際限制會約束反向傳播的能力?。
三、神經網路設計
1、人工神經網路的三個組成部分?:
- 第一個組成部分是架構?(architecture)??或稱為拓撲結構( ?topology),??描述神經元的層次與連線神經元的結構?;
- 第二個組成部分是神經網路使用的激勵函式;
- 第三個組成部分是找出最優權重值的學習演算法?。
2、keras實現全連線的前饋神經網路:
form tensorflow.keras.utils import plot_model
from tensorflow.keras import Model
from tensorflow.keras import layers
input_img1 = layers.Input(shape=(256,256,3))
input_img2 = layers .Input(shape=(256,256,3))
# 融合層 x = 3inp1+4inp2+5
input1 = layers.add([input_img1, input_img2])
第一層隱藏層
tower_1 = layers.Dense(10, activation='softmax')(input1)
tower_2 = layers.Dense(10, activation='softmax')(input1)
tower_3 = layers.Dense(10, activation='softmax')(input1)
# 融合層
input2 = layers.add([tower_1,tower_2,tower_3])
# 第二層隱藏層
tower_4 = layers.Dense(10, activation='softmax')(input2)
tower_5 = layers.Dense(10, activation='softmax')(input2)
tower_6 = layers.Dense(10, activation='softmax')(input2)
# 融合層
input3 = layers.add([tower_4,tower_5,tower_6])
# 輸出層
output1 = layers.Dense(10, activation='softmax')(input3)
output2 = layers.Dense(10, activation='relu')(input3)
# 構建模型
model = Model(inputs=[input_img1, input_img2], outputs=[output1, output2])
# 展示模型架構
plot_model(model, 'multi_input_and_output_model.png', show_shapes=True)
keras搭建的模型架構,可以看出和上面BP演算法中的計算圖一樣
相關文章
- 漸進學習前饋神經網路神經網路
- BP神經網路流程圖神經網路流程圖
- 基於numpy的前饋神經網路(feedforwardneuralnetwork)神經網路Forward
- 資料探勘---BP神經網路神經網路
- 從前饋到反饋:解析迴圈神經網路(RNN)及其tricks神經網路RNN
- 神經網路篇——從程式碼出發理解BP神經網路神經網路
- python對BP神經網路實現Python神經網路
- 前饋神經網路進行MNIST資料集分類神經網路
- Andrew BP 神經網路詳細推導神經網路
- 【深度學習基礎-08】神經網路演算法(Neural Network)上--BP神經網路例子計算說明深度學習神經網路演算法
- 【深度學習基礎-07】神經網路演算法(Neural Network)上--BP神經網路基礎理論深度學習神經網路演算法
- Tensorflow系列專題(四):神經網路篇之前饋神經網路綜述神經網路
- 利用前饋神經網路(FNN)進行氣溫預測任務神經網路
- 粒子群優化演算法對BP神經網路優化 Matlab實現優化演算法神經網路Matlab
- 構建兩層以上BP神經網路(python程式碼)神經網路Python
- 基於BP神經網路的64QAM解調演算法matlab效能模擬神經網路演算法Matlab
- 基於BP神經網路的16QAM解調演算法matlab效能模擬神經網路演算法Matlab
- 基於BP神經網路的金融序列預測matlab模擬神經網路Matlab
- 圖卷積神經網路(GCN)理解與tensorflow2.0程式碼實現卷積神經網路GC
- 【原創】python實現BP神經網路識別Mnist資料集Python神經網路
- 神經網路入門篇之深層神經網路:詳解前向傳播和反向傳播(Forward and backward propagation)神經網路反向傳播Forward
- 神經網路NN演算法Nerual Networks神經網路演算法
- 神經網路:numpy實現神經網路框架神經網路框架
- 神經網路神經網路
- 機器學習演算法(八):基於BP神經網路的乳腺癌的分類預測機器學習演算法神經網路
- 神經網路前向和後向傳播推導(一):概覽神經網路
- Tensorflow實現神經網路的前向傳播神經網路
- 深度學習一:深度前饋網路深度學習
- LSTM神經網路神經網路
- 8、神經網路神經網路
- 基於WOA-SVM的乳腺癌資料分類識別演算法matlab模擬,對比BP神經網路和SVM演算法Matlab神經網路
- 基於PSO-SVM的乳腺癌資料分類識別演算法matlab模擬,對比BP神經網路和SVM演算法Matlab神經網路
- 聊聊從腦神經到神經網路神經網路
- 圖神經網路GNN 庫,液體神經網路LNN/LFM神經網路GNN
- 神經網路前向和後向傳播推導(二):全連線層神經網路
- 基於BP神經網路的苦瓜生長含水量預測模型matlab模擬神經網路模型Matlab
- 【神經網路篇】--RNN遞迴神經網路初始與詳解神經網路RNN遞迴
- 【深度學習篇】--神經網路中的卷積神經網路深度學習神經網路卷積