1. 程式人生 > >NO.1:自學tensorflow之路------神經網絡背景知識

NO.1:自學tensorflow之路------神經網絡背景知識

英文 梯度下降 傳播 激活 Go sub doc 統計學 又是

引言

  從本周,我將開始tensorflow的學習。手頭只有一本《tensorflow:實戰Google深度學習框架》,而這本書又講的非常粗淺。tensorflow中文社區中的翻譯的谷歌官方教程十分詳細,是自學tensorflow的好幫手,當然如果是英文熟手可以直接看谷歌官方給出的原版教程(博主英語是靠谷歌翻譯和百度翻譯救活的)。

  本篇博客主要講述機器學習的發展過程,以及BP神經網絡的主要內容。不涉及tensorflow的編程。具體BP神經網絡tensorflow的實現將在下一篇博文中展示。

正文

機器學習背景

  在20世紀以來,任何一門技術的發展都離不開學科間的交融,計算機技術的發展,以及才華橫溢的工作者的創新。機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、凸分析、算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以獲取新的知識或技能,重新組織已有的知識結構使之不斷改善自身的性能。

  人類的大腦十分神奇,它幫助人們認識,學習這個世界。神經網絡不僅是生物學習記憶的一種結構,同樣也是機器學習的基礎。將人類的單個神經元傳遞處理信息的過程簡化,並用數學表示,就是神經網絡的來源。

技術分享圖片

技術分享圖片

圖1.生物神經元(上)和神經網絡神經元(下)

  早在1958年,Rosenblatt就提出了名為感知機的線性分類模型。但是後來研究人員發現它對非線性問題難以處理,並且當時計算機計算能力低下,難以完成復雜的計算過程。

  神經網絡的第一次大的革新是在1974年,Paul Werbos提出了反向傳播算法,為神經網絡的訓練提供了良好的方法。讓神經網絡出現在各種應用場景中,也逐漸出現了多種多樣的神經網絡結構。

  1992年,Vapnik等人提出了支持向量機,支持向量機方法是建立在統計學習理論的VC維理論和結構風險最小原理基礎上的,根據有限的樣本信息在模型的復雜性(即對特定訓練樣本的學習精度)和學習能力(即無錯誤地識別任意樣本的能力)之間尋求最佳折中,以求獲得最好的泛化能力。

  從此,一場支持向量機與神經網絡的較量就展開了。並且神經網絡在後來的較量中逐漸敗下陣來。究其原因主要是由於當時計算機的計算能力依然難以滿足多層神經網絡訓練,計算的要求,同時神經網絡還存在著梯度消失的現象,使得多層神經網絡難以實現。

  在2006年,深度學習(Deep Learning)算法的提出是神經網絡的第二次大的革新。谷歌AlphaGo在圍棋中戰勝李世石,點燃了深度學習的一個新的熱潮。所以本人就在這個浪頭上開始跟風了,希望能在明年畢業之前完成畢設論文。

BP神經網絡

  一個3層的BP神經網絡,是學習神經網絡的基礎。雖然如今很多工具都有現成的BP神經網絡工具,但是如果不能深入了解神經網絡內部實際的運作,也將很難對其進行創新。這裏將介紹最簡單的BP神經網絡的正向傳播,反向傳播過程。

正向傳播

  一般的BP神經網絡是由輸入層、隱含層和輸出層三層神經網絡組成。輸入層神經元的個數等於輸入變量的個數,輸出層神經元的個數等於輸出變量的個數,隱含層神經元的個數一般通過經驗法選取。變量從輸入層傳播到隱藏層,其計算過程如下所示:

技術分享圖片

其中, xi為輸入層神經元i的輸入變量,vij輸入層神經元i到隱含層神經元j之間突觸的權值,θj為隱含層神經元j的偏置,f()為隱含層激活函數,hj為隱含層神經元的輸出。

  從輸入層到隱藏層的計算過程如下所示:

技術分享圖片

其中,g()為輸出層激活函數,yk為輸出層神經元k的輸出。

  激活函數為神經網絡引入非線性因素,讓神經網絡可以解決線性模型不能解決的問題。常用的又sigmoid函數與tanh函數,但這兩種都存在梯度消失的問題。Re-lu函數可以解決梯度消失的問題,目前被大量使用。這樣就講完了正向傳播的過程。

反向傳播

  正向傳遞神經網絡,可以得到神經網絡輸出,隨後就可以得到神經網絡的誤差。神經網絡反向傳播誤差,就可以得到神經元參數應該向最優值運動的方向。通過多次的循環學習,就可以逐漸逼近最優的神經網絡參數,完成神經網絡的訓練。

  輸出誤差函數為:

技術分享圖片

  隱藏層誤差函數為:

技術分享圖片

  其中,ok為系統實際輸出。將誤差進行反向傳遞後,利用梯度下降法,分別讓誤差對應各層的權值和閾值求偏導數,以達到最優。其表達式如下所示:

技術分享圖片

  這樣就得到了誤差反向傳播的公式,通過設定合適的batch,就可以進行神經網絡的訓練了。

後記

  由於平日學習用Matlab居多,而學習深度學習,tensorflow又是其目前最好用的工具之一。希望一切努力不會付諸流水,與正在學習的朱軍共勉。

NO.1:自學tensorflow之路------神經網絡背景知識