通過可視化體驗人工智能神經網絡工具——TensorFlow PlayGround來認識神經網絡

PlayGround是一個可視化的深度學習環境,只需在訪問http://playground.tensorflow.org,就能在線學習,而且不需安裝任何插件,效果十分驚豔。

如果橙色是橙子,藍色是藍莓。假設我們有2000個散落在各處的橙子和藍莓。前1000個,我們知道座標(1,1)的是藍莓,(2,2)的是橙子,(0.5,0.5)的是藍莓等等。我們要用這些信息來訓練我們的神經網絡,讓它能夠準確地預測出後1000個哪些是橙子、哪些是藍莓。

神經網絡的偉大之處就在於此。當我們在解決分類橙色點和藍色點這樣的簡單問題時,想出額外的特徵似乎並不是難事。但是,當我們要處理的問題越來越複雜,想出有用的特徵就變成了最最困難的事。比如說,當我們需要識別出哪張圖片是貓,哪張圖片是狗時,哪些特徵是真正有效的呢?

1. 演示環境及相關知識介紹

1.1. 演示環境

PlayGround環境,可以設置隱藏層層數(HIDDEN LAYERS),每個隱藏層可以設置神經元數量(neurons)。圖中的特徵(FEATURES)由直接輸入(X1,X2)、平方、乘積、三角函數等方法處理輸入變量。

其中每組數據(DATA),都是不同形態分佈的一羣點。每一個點具有2個特徵:x1和x2,表示點的位置。而我們數據中的點有2類:橙色和藍色。我們的神經網絡的目標,就是通過訓練,知道哪些位置的點是橙色、哪些位置的點是藍色。

如果圖中橙色是橙子,藍色是藍莓。假設我們有2000個散落在各處的橙子和藍莓。前1000個,我們知道座標(1,1)的是藍莓,(2,2)的是橙子,(0.5,0.5)的是藍莓等等。我們要用這些信息來訓練我們的神經網絡,讓它能夠準確地預測出,後1000個,哪些是橙子、哪些是藍莓。

在這裏插入圖片描述
圖中操作及展示內容說明:
Epoch:動態顯示系統學習處理數據次數;
DATA:數據源,有四種隨機數據;
OUTPUT:輸出,默認是學習訓練情況,其中,圖下面有“Show test data”選項,用於顯示測試情況(疊加中一起)。

1.2. 參數及其相關知識點

(1)Learning rate/學習率

學習率決定每一步學習的步長,作爲監督學習以及深度學習中重要的超參,其決定着目標函數能否收斂到局部最小值以及何時收斂到最小值。合適的學習率能夠使目標函數在合適的時間內收斂到局部最小值。取值一般取0-1之間。

學習速率是指導我們該如何通過損失函數的梯度調整網絡權重的超參數。學習率越低,損失函數的變化速度就越慢。雖然使用低學習率可以確保我們不會錯過任何局部極小值,但也意味着我們將花費更長的時間來進行收斂,特別是在被困在高原區域的情況下。

在這裏插入圖片描述

(2)Activation/激活函數
激活函數爲神經元提供了規模化的非線性化能力。

ReLU函數
f(u)=max(0,u)f(u)=max(0,u)
在這裏插入圖片描述
Sigmoid函數
f(x)=11+exf(x)=\frac{1}{1+e^{-x}}

在這裏插入圖片描述

(3)Regularization/正則化
機器學習中,如果參數過多,模型過於複雜,容易造成過擬合(overfit)。即模型在訓練樣本數據上表現的很好,但在實際測試樣本上表現的較差,不具備良好的泛化能力。爲了避免過擬合,最常用的一種方法是使用使用正則化,比如此工具中的 L1 和 L2 正則化(Regularization下拉列表選擇項目)

L1正則化:

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj] J(\theta)=\frac{1}{2m}\left [ \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}+ \lambda \sum_{j=1}^{n}\left | \theta _{j} \right | \right ]

L2正則化:

J(θ)=12m[i=1m(hθ(x(i))y(i))2+λj=1nθj2] J(\theta)=\frac{1}{2m}\left [ \sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}+ \lambda \sum_{j=1}^{n}\theta _{j}^2 \right ]

(4)Regularization rate/正則化權重參數
正則化公式上的參數 λ ,爲正則化加上權重參數。

(5)Problem type/數據分析問題類型
問題類型包括分類(Classificition)和迴歸(Regression)。

(6)Ratio of training to test data/訓練與測試數據集分配比率。

(7)Noise/數據噪聲
可以用於模擬數據中噪聲數據的比例。

(8)Training Loss和Testing Loss/訓練損失和測試損失
Loss是損失,簡單的說就是預測值和實際值之間的差別。損失越小,表示模型預測結果越準確,這種模型就越好。最理想的情況是兩個Loss都逐漸變小,說明模型越來越準確。

如果Training Loss減小而Testing Loss增大,可能我們就過擬合(Overfit)了。對於不同的問題,會有合適的計算Loss的方法,也就是你可能經常聽到的損失函數(Loss function),也叫代價函數(Cost function)。
在這裏插入圖片描述
如圖OUTPUT所示,損失曲線呈現震盪鋸齒狀的原因,就是學習率設置過大造成的,使梯度下降呈現震盪。
在這裏插入圖片描述
其實就是設置步長,邁步不要過大,錯過了最低點。同時也要保證不要邁步太小,導致太陽下山了,還沒有走到山下。
在這裏插入圖片描述

1.3. 幾點使用方法

(1)學習率中學習過程中,可以根據輸出,動態調整,一般是先設置大些,例如1或0.3,逐漸減小到0.01,甚至更小;
(2)推薦增加點兒噪聲,更接近實際。

2. 神經網絡體驗

2.1. 線性神經網絡

(1)Gaussion數據集分類成功效果
在這裏插入圖片描述

其他數據集,線性激活函數不收斂。

(2)按Circle數據集特徵,增加平方輸入特徵
按Circle數據集特徵,考慮輸入特徵圓的方程(xa)2+(yb)2=r2(x-a)^2+(y-b)^2=r^2,也可以得到較好的效果。
在這裏插入圖片描述

2.2. BP神經網絡

BP神經網絡,激活函數一般爲Sigmoid。
在這裏插入圖片描述

2.3. 正則化

添加正則化,則有些神經元權重非常小,也就是圖中白色的神經元是很少使用的神經元。
在這裏插入圖片描述

3. 總結

對於學習神經網絡的初學者,通過可視化體驗人工智能神經網絡工具——TensorFlow PlayGround來認識神經網絡,是比較直觀、便捷的。

在這個工具平臺上,能任意設計多層神經網絡(有限制,但是不影響學習),例如可以通過設計多層、每層多神經元的網絡,模擬出過擬合情況;也可以通過調整學習率、激活函數、正則化等神經網絡參數,把書本上的知識點形象化出來。

由於編者水平有限,歡迎讀者反饋、補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章