TensorFlow+Keras 02 深度學習的原理

1 神經傳遞的原理

人類的神經元傳遞及其做用:html

這裏有幾個關鍵概念:算法

  • 樹突 - 接受信息
  • 軸突 - 輸出信息
  • 突觸 - 傳遞信息

將其延伸到神經元中,示意圖以下:網絡

 

將上圖整理成數學公式,則有函數

y = activation function( x1*w1 + x2*w2 + x3*w3 + b )post

相應說明:學習

  • x - 輸入值,仿真輸入神經元,上圖中有:x一、x二、x3
  • w - 權重值,仿真輸入神經元軸突,傳送信息,上圖中有:w一、w二、w3
  • b - 誤差值,仿真接受神經元樹突,表明接受神經元容易被活化的程度,誤差值越高、越容易被激活,上圖中接受神經元只有一個,因此也只有一個誤差值b。
  • y - 經過一些列信息傳導(激活函數運算),最終接受神經元所獲得的值,也能夠理解爲輸入神經元 x 有效傳遞了多少值
  • 激活函數 - activation function ,仿真神經傳遞的工做方式,當接受神經元接收到刺激的總和(x1*w1 + x2*w2 + x3*w3 + b)通過激活函數的運算後,其值大於臨界值時,就會傳遞至下一個神經元,常見的激活函數如Sigmoid、ReLU。

 

Sigmoid 激活函數優化

激活函數一般爲非線性函數,其可仿真神經傳導的工做方式將上一層神經元信號傳遞到下一層中。動畫

TensorFlow 和 Keras 支持不少激活函數,經常使用的有兩種:Sigmoid 和 ReLU。ui

函數圖像以下:google

 

Sigmoid 激活函數相似於人類感受神經:

  • 小於臨界值時,刺激被被忽略
  • 大於臨界值時,刺激會被接受
  • 達到必定程度時,感受會鈍化,即便接受更大的刺激,感受仍維持不變,如上圖中爲一條直線。

 

ReLU 激活函數

對比人類神經網絡,可理解爲:

  • 小於臨界值時,刺激會被忽略
  • 大於臨界值時,刺激被接受

2 以矩陣運算仿真神經網絡

實際的神經網絡存在有較多的值,此時通常用矩陣表示。

y = activation(x * w +b )

  • x - 輸入值,矩陣
  • w - 權重值,矩陣
  • b - 誤差值,矩陣
  • y - 計算結果,矩陣

3 多層感知器模型

多層感知器(Multilayar Perceptron ,MLP)模型是一種受歡迎的及其學習解決方案,尤爲是在語音識別、圖像識別、和機器翻譯等多個領域;20世紀90年代,MLP模型遭遇到更簡單模型(如支持向量機SVM)的強烈競爭,近年來,因爲深度學習的成功,MLP模型又從新收到業界重視。

以多層感知器模型識別MNIST手寫數字圖像爲例,通常有

  • 輸入層 input layer
  • 隱藏層 hidden layer
  • 輸出層 output layer

創建輸入層與隱藏層的映射關係公式:h1 = ReLU ( x * w1 + b1 )

創建隱藏層與輸出層的映射關係公式:y = softmax ( h1 * w2 + b2 )

4 使用反向傳播算法進行訓練

反向傳播(Back Propagation)是訓練人工神經網絡的常見方法,且與優化器(Optimizer,如梯度降低法)結合使用。

反向傳播是一種有監督的學習方法,必須有特徵值features 和 標籤 label

4.1 訓練前必須先進行 」 數據預處理 「 和 」 創建模型 「

4.1.1 數據預處理

MNIST 數據集通過數據預處理產生 數字圖像特徵值features和圖像標籤 label;備用。

4.1.2 創建模型

創建多層感知模型,並以隨機數初始化模型的權重weight 和誤差值 bias。

4.2 反向傳播算法訓練多層感知器模型

進行訓練時,數據分多批次喂入(如每次200項數據)進行模型訓練;重複傳播以使權重更新( weight update ),直到偏差 bias 收斂。

4.2.1 傳播

1 - 向模型中喂入數據

2 - 模型輸出計算結果

4.2.2 權重更新

1 - 損失函數計算偏差。使用損失函數計算模型輸出結果(預測結果)與 Label 標籤之間的偏差值

2 - 優化器更新權重與誤差。基於偏差值更新權重和誤差,以使損失函數的偏差值最小化。

4.3 損失函數

損失函數來幫助咱們計算偏差,其中 Cross Entropy 是深度學習經常使用的損失函數。

4.4 優化器

優化器是使用某種數值方法在不斷的批次訓練中不斷更新權重與誤差,是損失函數的偏差值最小化,並最終找到偏差值最小的 」 權重與誤差的組合 "。

在深度學習中,經常使用隨機梯度降低法(Stochastic Gradient Descent , SGD)來優化權重和誤差。

另外,還有許多隨機梯度降低法的變形,如 RMSprop、Adagrad、Adadelta、Adam 等,這些適用於不一樣的深度學習模型,

5 附件:不一樣的優化器具備不一樣的訓練效果圖

Alec Radford's animations for optimization algorithmsAlec Radford的優化算法動畫

地址:http://www.denizyuret.com/2015/03/alec-radfords-animations-for.html

原文摘錄:

Alec Radford建立了一些偉大的動畫,比較優化算法SGDMomentumNAGAdagradAdadeltaRMSprop(不幸的是沒有Adam)的低維問題。另請查看他關於RNN的演講

Alec Radford has created some great animations comparing optimization algorithms SGDMomentumNAGAdagradAdadeltaRMSprop(unfortunately no Adam) on low dimensional problems. Also check out his presentation on RNNs.

「 嘈雜的衛星:這是來自sklearn的嘈雜衛星數據集的邏輯迴歸,它顯示了基於動量的技術的平滑效果(這也致使過分射擊和校訂)。偏差表面在經驗上可視化爲整個數據集的平均值,可是軌跡顯示了微型數據在噪聲數據上的動態。下圖是精確度圖。「

"Noisy moons: This is logistic regression on noisy moons dataset from sklearn which shows the smoothing effects of momentum based techniques (which also results in over shooting and correction). The error surface is visualized as an average over the whole dataset empirically, but the trajectories show the dynamics of minibatches on noisy data. The bottom chart is an accuracy plot."

「 Beale的功能:因爲大的初始梯度,基於速度的技術射擊和反彈 - adagrad幾乎變得不穩定,出於一樣的緣由。像adadelta和RMSProp那樣縮放漸變/步長的算法更像加速SGD並處理大的漸變動穩定。「

"Beale's function: Due to the large initial gradient, velocity based techniques shoot off and bounce around - adagrad almost goes unstable for the same reason. Algos that scale gradients/step sizes like adadelta and RMSProp proceed more like accelerated SGD and handle large gradients with more stability."

「 長谷:沒有根據梯度信息進行縮放的Algos在這裏很難打破對稱性 - SGD沒有在哪裏和Nesterov加速梯度/動量呈現振盪,直到它們在優化方向上創建速度。阿爾戈斯基於梯度快速縮放步長打破對稱並開始降低。「

"Long valley: Algos without scaling based on gradient information really struggle to break symmetry here - SGD gets no where and Nesterov Accelerated Gradient / Momentum exhibits oscillations until they build up velocity in the optimization direction. Algos that scale step size based on the gradient quickly break symmetry and begin descent."

 

「 鞍點:圍繞鞍點的行爲.NAG / Momentum再次喜歡探索周圍,幾乎採起不一樣的路徑.Adadelta / Adagrad / RMSProp像加速SGD同樣前進。」

 "Saddle point: Behavior around a saddle point. NAG/Momentum again like to explore around, almost taking a different path. Adadelta/Adagrad/RMSProp proceed like accelerated SGD."

 

相關文章
相關標籤/搜索