神經網路原理的視覺化

超人汪小建發表於2018-05-09

前言

神經網路具有很強的學習能力和自適應自組織能力,而且隨著隱含層的數量增大學習能力也將變得更強,因此目前很多場景都使用神經網路,比如深度學習,我們更熟悉的就是阿法狗。

關於神經網路

神經網路已經有很多變種,比如卷積神經網路、迴圈神經網路等等。

感知器是一種最基礎的神經網路,他只有輸入層和輸出層,感知器只能處理線性可分問題,而對於非線性問題就需要多層神經網路。一般如下圖所示,有多個層,比如左邊的包含輸入層、隱層和輸出層,而右邊的則包含了兩個隱層。每層的神經元與下一神經元全互連,同層之間的神經元不會相連,輸入層用於接收輸入,經過隱層加工後再到輸出層加工並輸出。

這裡寫圖片描述

如何訓練多層網路

對於多層網路我們常用誤差逆傳播演算法來訓練,而我們最常見的BP神經網路指的是使用誤差逆傳播來訓練的多層前饋神經網路。除此之外其他型別的神經網路也可能會用誤差逆傳播演算法來訓練。

總的來說,誤差逆傳播是使用梯度下降法,通過反向傳播不斷調整神經網路中各個權重從而使輸出層的誤差平方和最小。

視覺化實驗

TensorFlow 提供了一個試驗演示平臺可以讓我們通過視覺化更好理解神經網路,地址是 https://playground.tensorflow.org 。

下面兩種較簡單的分類模型,圖中可以看到通過訓練後能將兩個類別區分開。輸入特徵我們選擇x1和x2,共有兩層隱含層,分別有4個神經元和2個神經元。

這裡寫圖片描述

這裡寫圖片描述

如果我們的資料集是比較複雜的,則需要更多隱含層,比如下面,

這裡寫圖片描述

這個過程中還可以看到每層每個神經元的輸出輸入,另外還可以自己控制一步步訓練,通過這個實驗平臺能幫助初學者理解神經網路的原理及過程,可以玩玩。

-------------推薦閱讀------------

我的2017文章彙總——機器學習篇

我的2017文章彙總——Java及中介軟體

我的2017文章彙總——深度學習篇

我的2017文章彙總——JDK原始碼篇

我的2017文章彙總——自然語言處理篇

我的2017文章彙總——Java併發篇


跟我交流,向我提問:

這裡寫圖片描述

公眾號的選單已分為“讀書總結”、“分散式”、“機器學習”、“深度學習”、“NLP”、“Java深度”、“Java併發核心”、“JDK原始碼”、“Tomcat核心”等,可能有一款適合你的胃口。

為什麼寫《Tomcat核心設計剖析》

歡迎關注:

這裡寫圖片描述

相關文章