Tensorflow新手通過PlayGround可視化初識神經網路

作者:MrLonelyZC88

原文鏈接:jianshu.com/p/5f83defc7

查看更多的專業文章,請移步至「人工智慧LeadAI」公眾號,查看更多的課程信息和產品信息,請移步至全新打造的官網:www.leadai.org.

正文共1791個字,12張圖,預計閱讀時間6分鐘。

是不是覺得神經網路不夠形象,概念不夠清晰,如果你是新手,來玩玩PlayGround就知道,大神請繞道。

PlayGround是一個在線演示、實驗的神經網路平台,是一個入門神經網路非常直觀的網站。這個圖形化平台非常強大,將神經網路的訓練過程直接可視化。同時也能讓我們對Tensorflow有一個感性的認識。

PlayGround的網址是:playground.tensorflow.org

PlayGround頁面如圖所示,主要分為DATA(數據),FEATURES(特徵),HIDDEN LAYERS(隱含層),OUTPUT(輸出層)。

PlayGround主頁面

DATA一欄里提供了4種不同形態的數據,分別是圓形、異或、高斯和螺旋。平面內的數據分為藍色和黃色兩類。

四種數據形態

我們的目標就是通過神經網路將這兩種數據分類,可以看出螺旋形態的數據分類是難度最高的。除此之外,PlayGround還提供了非常靈活的數據配置,可以調節雜訊、訓練數據和測試數據的比例和Batch size的大小。

雜訊的影響

訓練數據和測試數據的比例

Batch size大小

Batch size就是每批進入神經網路數據點的個數。

FEATURES一欄包含了可供選擇的7種特徵:X1、X2、X1X1、X2X2、X1X2、sin(X1)、sin(X2)。

7種特徵

X1可以看成以橫坐標分布的數據特徵,X2是以縱坐標分布的數據特徵,X1X1和X2X2是非負的拋物線分布,X1X2是雙曲拋物面分布,sin(X1)和sin(X2)正弦分布。我們的目標就是通過這些特徵的分布組合將兩類數據(藍色和黃色)區分開,這就是訓練的目的。

HIDDEN LAYERS一欄可設置多少隱含層。一般來講,隱含層越多,衍生出的特徵類型也就越豐富,對於分類的效果也會越好,但不是越多越好,層數多了訓練的速度會變慢,同時收斂的效果不一定會更好,後面也會提到。

隱含層結構

因為在這裡是一個分類的問題,隱含層設置為兩層,剛好對應輸出的類型。層與層之間的連線粗細表示權重的絕對值大小,我們可以把滑鼠放在線上查看權值,也可以點擊修改。

OUTPUT一欄將輸出的訓練過程直接可視化,通過test loss和training loss來評估模型的好壞。

輸出模型

除了主要的四個部分外,在界面上還有一列控制神經網路的參數,從左到右分別是,訓練的開關、迭代次數、學習速率、激活函數、正則化、正則化率和問題的類型。

神經網路控制參數

我們接下來嘗試了幾個例子,考慮到圖片太多,直接講一些結論,讀者可以自行去摸索。

首先考慮的是激活函數的影響,比較了一下Sigmoid函數和ReLU函數:

1、選擇Sigmoid函數作為激活函數,明顯能感覺到訓練的時間很長,ReLU函數能大大加快收斂速度,這也是現在大多數神經網路都採用的激活函數。

2、當把隱含層數加深後,會發現Sigmoid函數作為激活函數,訓練過程loss降不下來,這是因為Sigmoid函數反向傳播時出現梯度消失的問題(在sigmoid接近飽和區時,變換太緩慢,導數趨於0,這種情況會造成信息丟失)。

接著我們選用ReLU函數作為激活函數,比較一下隱含層數量對結果的影響:

1、我們選用了3層隱含層,每層特徵個數為8,8,2的模型和6層隱含層,每層特徵個數為8,8,8,8,8,2的模型。3層隱含層模型大概200步就達到了test loss為0.005,training loss為0.005,而6層隱含層模型跑了700步,test loss為0.015,training loss為0.005,有點過擬合。

8,8,2模型

8,8,8,8,8,2模型

隱含層的數量不是越多越好,層數和特徵的個數太多,會造成優化的難度和出現過擬合的現象。

如果你感興趣,很多測試你都可以嘗試一下。通過神經網路,我們的系統自己就能學習到哪些特徵是有效的,哪些特徵是無效的,通過自己學習這些特徵,然後判斷問題。值得一提的是,最近很熱的AlphaGo zero通過自我學習的過程,從無到有,打敗了參照人類知識學習的AlphaGo,可見機器自我學習,自我進化的速度太快了,遠遠超越了人類歷史經驗的總結。人生苦短,快用Tensorflow!


推薦閱讀:

你說說激活函數?
一文看懂各種神經網路優化演算法:從梯度下降到Adam方法
用深度學習(DNN)構建推薦系統 - Deep Neural Networks for YouTube Recommendations論文精讀
機器學習必知的八大神經網路架構

TAG:TensorFlow | 神经网络 |