深度學習 (二)Back Propagation Network

發展史

       人們一直在探索想算法來模擬生物神經系統的組織機能,各個年代對於這一課題的研究也是幾經沉浮、命運多舛,也正如此它的強大之處在算法中一直被追求,

生物神經元到感知器

       在生物神經系統中,神經元是組成神經系統的基本結構和單元,它是19世紀末意大利解剖學家用銀染法發現了神經元,對於研究人類是如何處理各種複雜信號的機制一直備受科學家的關注,讓我們先從最基本單元入手結構如下:

在這裏插入圖片描述

       神經元細胞一般由兩個突起樹突和軸突,它們在結構和功能上有所不同,樹突短小分支多,樹突是傳入纖維,軸突是傳出纖維,一個神經元有很多個樹突,每個樹突有自己的敏感度即化學物質,當一個神經元傳入的信號足夠多時,在軸突膜內外將產生電位差,外面正電裏面負電,隨着電位差加大超過設定的閾值時將產生神經衝動傳遞到下一個細胞,傳遞過程如下圖:

在這裏插入圖片描述
       每個神經元通過突觸上面的突觸小體來傳遞給下一個神經元的樹突,各個神經指令就這樣在神經系統之間傳遞,有人試圖從將這一過程抽象出來一個運算單元,如果成功將可以模擬出來和人一樣的功能系統如情感分類、圖片識別等等。
       大約過了半個世紀,20世紀40年代Mccullob 和 Pirts 提出來了第一個神經網絡模型,其數學模型如下:

在這裏插入圖片描述
       上面的x1、 x2、 …… xn即神經元的樹突,w即每個樹突對應的敏感度,激活函數即軸突膜內外的電位,這個最簡單的數學結構被稱爲perceptron感知器,有的書也叫作感知機,它只能夠解決線性可分的問題,在1986年提出了第二代神經網絡 多層感知器網絡,它可以解決非線性不可分問題,爲以後神經網絡發展奠定了基礎。

什麼是BP網絡?

       BP(Back Propagation)網絡是1986年由Rumelhart和McCelland兩位科學家提出,是一種按誤差逆傳播算法訓練的多層前饋網絡,是目前應用最廣泛的神經網絡模型之一。BP網絡能學習和存貯大量的輸入-輸出模式映射關係,而無需事前揭示描述這種映射關係的數學方程。它的學習規則是使用梯度下法,通過反向傳播來不斷調整網絡的權值和閾值,使網絡輸出誤差平方和最小。

數學

先來補充一下BP網絡涉及的數學
高等數學上冊 第二章 一元函數微分學
導數的定義
       導數(Derivative)是微積分中的重要基礎概念。當函數y=f(x)的自變量x在一點x0上產生一個增量Δx時,函數輸出值的增量Δy與自變量增量Δx的比值在Δx趨於0時的極限a如果存在,a即爲在x0處的導數,記作f’(x0)或df(x0)/dx。
導數是函數的局部性質。一個函數在某一點的導數描述了這個函數在這一點附近的變化率。如果函數的自變量和取值都是實數的話,函數在某一點的導數就是該函數所代表的曲線在這一點上的切線斜率。導數的本質是通過極限的概念對函數進行局部的線性逼近。例如在運動學中,物體的位移對於時間的導數就是物體的瞬時速度。

       在理解數學概念時萬不可只記公式,一定要理解各個概念,否則學了後不能擴展和應用,例如在經典的梯度求解過程中充分運用了導數的概念,導數表示的是函數線上任何一點的變化率既有方向又有大小,正表示逐漸增大,負表示逐漸減小。
       BP網絡主要運算了導數的四則運算以及複合函數鏈式求導法則,如果不太理解的可以先看一下高數這一章。

先來研究一下sigmoid函數 ,如下
在這裏插入圖片描述

       sigmoid是由指數函數變化而來,除了指數函數還有其它一些函數也可以作爲激活函數,但是激活函數需要可以求導,在進行反向傳播時需要通過導數往前傳遞,求導過程可以自己網上搜索。

簡單例子

初始化網絡

       下面我們以一個二維特徵的單個樣本來模擬計算一下BP網絡是如何正向傳播和反向傳播的,如下圖表示初始網絡,已經在圖上標明瞭初始權重值、特徵值、偏置項等數據,網絡分爲簡單三層輸入層、隱藏層、輸出層。
在這裏插入圖片描述

第一層爲input layer 輸入層 i1 、i2表示輸入樣本的兩個特徵值,b1表示偏置項,第二層爲hidden layer 節點爲h1 權重爲w1 w2、h2 權重爲w3 w4 ,右邊爲輸出層output layer 權重分別爲w5 w6 w7 w8,輸出爲o1 0.01 、o2 0.99

第一步 確定網絡各層以及節點數、初始化權重值
輸入輸出即我們的訓練樣本這些數據值是給出的,從訓練數據中得到,權重初始值需要我們設置好,一般根據經驗設置
第二步 向前計算各層輸出值 計算出來總誤差損失
第三部 基於損失誤差最小目的,反向傳播計算各層權重值並更新
網絡確定好之後,重新計算網絡的損失誤差是多少,一直到誤差小到可以接收的範圍之內。

正向傳播

       正向傳播的是根據每層輸入值、權重 計算出來輸出結果,最終計算的是網絡的總體誤差。
在這裏插入圖片描述

反向傳播

       反向傳播目的是將網絡的整體誤差傳播到每個權重值上,求每個權重值對總誤差的影響程度,以便更新每個權重以便它們使實際輸出誤差更接近目標誤差,從而最小化每個輸出神經元和整個網絡的誤差。

       我們是想通過調整w1至w8 ,8個權重值的大小來使得總體誤差最小,那麼一般的思維即會想每個權重值要調整多少呢,不同的權重值即使調整相同大小對總體誤差影響也是不一樣的,因此每個權重值調整多少並不是憑感覺而是要量化,要知道改動多少對總體誤差有多少影響,如果我們把權重看做自變量把總體誤差看做因變量,那麼在數學函數中恰有這樣的指標表示一個自變量改動時對因變相影響多少,即變化率又稱爲導數,現在只要求出來每個權重值對於總體誤差的導數既可以知道每個權重值改變時對誤差的影響大小,從而做出改動。
       在求各層權重的導數時用到了複合函數的鏈式求導法則,神經網絡從輸入層要經過各層權重作用、各層加點的激活函數作用 逐層向後計算求得總體誤差,如果用權重全部展示也會是比較複雜,逐層求導反而感覺簡單了好多,下面就讓我們來看一看如何逐層求導:
在這裏插入圖片描述

在這裏插入圖片描述

問題思考

  • 爲什麼是三層
  • hidden node 數如何確定?
  • 誤差平方和累加求和與樣本的關係
  • hidden layer 、output layer 爲什麼會選擇sigmoid作爲激活函數
    對於hidden layer 需要有激活函數,可以作爲激活函數的有可導、連續函數,其它常用的激活函數如sigmoid、tanh、relu等。
    output layer是作爲最後一層s激活函數單調遞增正好把實數映射到了[0,1]之間,也正好值可以作爲屬於類別的概率,但是對於多分類會不合適,多分類可以將softmax作爲激活函數

隨筆思考

如何培養原創能力?
       對於在校學生搞研究的人提高原創力,感覺最關鍵的是有興趣對自己研究的東西有自己的興趣而不是研究那麼容易賺錢,見效快的東西,其次就是有一個好的人生導師非常重要,如果導師指導的重利,那也不利於創作自己的原創力,即研究和探索未知領域的課題有濃厚的興趣,而不是急功近利,近期沒有利益就不去研究的心態,要有遠期規劃。

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