1. 程式人生 > >深度學習基本知識

深度學習基本知識

toc a-z 維數 原子 新的 均值 mage 起點 反向傳播


概念與理解

來源:https://zhuanlan.zhihu.com/p/22888385

一、基本變換:層。層在做什麽?

神經網絡由層來構建。每一層的工作內容:

技術分享圖片

技術分享圖片

(動態圖5種空間操作)

  每層神經網絡的數學理解:用線性變換跟隨著非線性變化,將輸入空間投向另一個空間。

技術分享圖片

技術分享圖片

  每層神經網絡的物理理解:通過現有的不同物質的組合形成新物質。

二、理解視角:層的行為如何完成識別任務?

 數學視角:“線性可分”

技術分享圖片

  技術分享圖片

技術分享圖片

技術分享圖片

這裏有非常棒的可視化空間變換demo,一定要打開嘗試並感受這種扭曲過程。更多內容請看Neural Networks, Manifolds, and Topology。

線性可分視角:神經網絡的學習就是學習如何利用矩陣的線性變換激活函數的非線性變換,將原始輸入空間投向線性可分/稀疏的空間分類/回歸
  增加節點數:增加維度(W權重矩陣的維度),即增加線性轉換能力
增加層數:增加激活函數的次數,即增加非線性轉換次數

物理視角:“物質組成”

  • 類比:回想上文由碳氧原子通過不同組合形成若幹分子的例子。從分子層面繼續叠代這種組合思想,可以形成DNA,細胞,組織,器官,最終可以形成一個完整的人。繼續叠代還會有家庭,公司,國家等。這種現象在身邊隨處可見。並且原子的內部結構與太陽系又驚人的相似。不同層級之間都是以類似的幾種規則再不斷形成新物質。你也可能聽過分形學這三個字。可通過觀看從1米到150億光年來感受自然界這種層級現象的普遍性。
  • 人臉識別情景:我們可以模擬這種思想並應用在畫面識別上。由像素組成菱角再組成五官最後到不同的人臉。每一層代表不同的不同的物質層面 (如分子層)。而每層的W存儲著如何組合上一層的物質從而形成新物質。 如果我們完全掌握一架飛機是如何從分子開始一層一層形成的,拿到一堆分子後,我們就可以判斷他們是否可以以此形成方式,形成一架飛機。 附:Tensorflow playground展示了數據是如何“流動”的。

技術分享圖片

  物質組成視角:神經網絡的學習過程就是學習物質組成方式的過程
  增加節點數:增加同一層物質的種類,比如118個元素的原子層就有118個節點。


  增加層數:增加更多層級,比如分子層,原子層,器官層,並通過判斷更抽象的概念來識別物體。

三、神經網絡的訓練

  神經網絡的學習過程就是學習控制著空間變換方式(物質組成方式)的權重矩陣W。如何學習W?

  如何訓練:

   既然我們希望網絡的輸出盡可能的接近真正想要預測的值。那麽就可以通過比較當前網絡的預測值和我們真正想要的目標值,再根據兩者的差異情況更新每一層的權重矩陣(比如,如果網絡的預測值高了,就調整權重讓它預測低一些,不斷調整,直到能夠預測出目標值)。因此就需要先定義“如何比較預測值和目標值的差異”,這便是損失函數或目標函數(loss function or objective function),用於衡量預測值和目標值的差異的方程。loss function的輸出值(loss)越高表示差異性越大。那神經網絡的訓練變成了盡可能的縮小loss的過程。 所用的方法是梯度下降(Gradient descent):通過使loss值向當前點對應梯度的反方向不斷移動,來降低loss。一次移動多少是由學習速率(learning rate)來控制的。

  

  梯度下降的問題:

   使用梯度下降訓練神經網絡擁有兩個主要難題。

  技術分享圖片

  

  試圖解決“卡在局部極小值”問題的方法分兩大類:

  • 調節步伐:調節學習速率,使每一次的更新“步伐”不同。常用方法有:
    • 隨機梯度下降(Stochastic Gradient Descent (SGD):每次只更新一個樣本所計算的梯度
    • 小批量梯度下降(Mini-batch gradient descent):每次更新若幹樣本所計算的梯度的平均值
    • 動量(Momentum):不僅僅考慮當前樣本所計算的梯度;Nesterov動量(Nesterov Momentum):Momentum的改進
    • Adagrad、RMSProp、Adadelta、Adam:這些方法都是訓練過程中依照規則降低學習速率,部分也綜合動量
  • 優化起點:合理初始化權重(weights initialization)、預訓練網絡(pre-train),使網絡獲得一個較好的“起始點”,如最右側的起始點就比最左側的起始點要好。常用方法有:高斯分布初始權重(Gaussian distribution)、均勻分布初始權重(Uniform distribution)、Glorot 初始權重、He初始權、稀疏矩陣初始權重(sparse matrix)

  

  2、梯度的計算

   機器學習所處理的數據都是高維數據,該如何快速計算梯度、而不是以年來計算。 其次如何更新隱藏層的權重? 解決方法是:計算圖,反向傳播算法。這裏的解釋留給非常棒的Computational Graphs: Backpropagation 需要知道的是,反向傳播算法是求梯度的一種方法。如同快速傅裏葉變換(FFT)的貢獻。 而計算圖的概念又使梯度的計算更加合理方便

  基本流程圖:

   下面結合圖簡單瀏覽一下訓練和識別過程,並描述各個部分的作用。要結合圖解閱讀以下內容。

技術分享圖片

  

    技術分享圖片

     技術分享圖片

      技術分享圖片

      • 預測新值:訓練過所有樣本後,打亂樣本順序再次訓練若幹次訓練完畢後,當再來新的數據input,就可以利用訓練的網絡來預測了。這時的output就是效果很好的預測值了。

    

  為了理解深層神經網絡,需要明白最基本的訓練過程。 若能理解訓練過程是通過梯度下降盡可能縮小loss的過程即可。 若有理解障礙,可以用python實踐一下從零開始訓練一個神經網絡,體會整個訓練過程。若有時間則可以再體會一下計算圖自動求梯度的方便利用TensorFlow。

  結合Tensorflow playground理解5種空間操作和物質組成視角

  https://zhuanlan.zhihu.com/p/22888385

  技術分享圖片

  技術分享圖片

四、表現原因

  文章的最後稍微提一下深層神經網絡。深層神經網絡就是擁有更多層數的神經網絡。

  按照上文在理解視角中所述的觀點,可以想出下面兩條理由關於為什麽更深的網絡會更加容易識別,增加容納變異體(variation)(紅蘋果、綠蘋果)的能力、魯棒性(robust)。

  數學視角:變異體(variation),很多的分類的任務需要高度非線性的分割曲線。不斷的利用那5種空間變換操作將原始輸入空間像“捏橡皮泥一樣”在高維空間下捏成更為線性可分/稀疏的形狀。

  物理視角:通過對“抽象概念”判斷識別物體,而非細節。比如對“飛機”的判斷,即便人類自己也無法用語言或者若幹條規則來解釋自己如何判斷一個飛機。因為人腦中真正判斷的不是是否“有機翼”、“能飛行”等細節現象,而是一個抽象概念。層數越深,這種概念就越抽象,所能涵蓋的變異體就越多,就可以容納戰鬥機,客機等很多種不同種類的飛機。


深度學習

參考:https://zhuanlan.zhihu.com/p/24245040


參考:

https://zhuanlan.zhihu.com/p/24245040

https://zhuanlan.zhihu.com/p/22888385

https://www.zhihu.com/question/26006703/answer/126777449

深度學習基本知識