1. 程式人生 > >獨家連載 | BP網路介紹和代價函式介紹

獨家連載 | BP網路介紹和代價函式介紹

4.1 BP神經網路介紹及發展背景

BP(back propagation)神經網路是1986年由Rumelhart和McClelland為首的科學家提出的概念,他們在《Parallel Distributed Processing》一書中對BP神經網路進行了詳細的分析。BP神經網路是一種按照誤差逆向傳播演算法訓練的多層前饋神經網路,它是20世紀末期神經網路演算法的核心,也是如今深度學習演算法的基礎。

感知器對人工神經網路的發展發揮了極大的作用,但是它的結構只有輸入層和輸出層,不能解決非線性問題的求解。Minsky和Papert在頗具影響力的《Perceptron》一書中指出,簡單的感知器只能求解線性問題,能夠求解非線性問題的網路應該具有隱藏層,但是對隱藏層神經元的學習規則還沒有合理的理論依據。從前面介紹的感知器學習規則來看,其權值的調整取決於期望輸出與實際輸出之差:

但是對於各個隱藏層的節點來說,不存在已知的期望輸出,因而該學習規則不能用於隱藏層的權值調整。

BP演算法的基本思想是,學習過程由訊號的正向傳播和誤差的反向傳播兩個過程組成。

正向傳播時,把樣本的特徵從輸入層進行輸入,訊號經過各個隱藏層逐層處理後,最後從輸出層傳出。對於網路的實際輸出與期望輸出之間的誤差,把誤差訊號從最後一層逐層反傳,從而獲得各個層的誤差訊號,再根據誤差訊號來修正各個層神經元的權值。

這種訊號正向傳播與誤差反向傳播,然後各個層調整權值的過程是周而復始地進行的。權值不斷調整的過程,也就是網路學習訓練的過程。進行此過程直到網路輸出誤差減小到預先設定的閾值以下,或者是訓練了一定的次數之後為止。

4.2 代價函式

代價函式也稱為損失函式,英文稱為loss function或cost function,有些地方我們會看到使用loss表示代價函式的值,有些地方我們會看到用cost表示代價函式的值。為了統一規範,本書中我們統一使用代價函式這個名字,英文使用loss。

代價函式並沒有準確的定義,一般我們可以理解為是一個人為定義的函式,我們可以利用這個函式來優化模型的引數。最簡單常見的一個代價函式是均方差(mean-square error, MSE) 代價函式:

矩陣可以用大寫字母來表示,這裡的T表示真實標籤,Y表示網路輸出。

T-Y可以到每個訓練樣本與真實標籤的誤差。誤差的值有正有負,我們可以求平方,把所有的誤差值都變成正的,然後除以2N。這裡2沒有特別的含義,主要是我們對均方差代價函式求導的時候,公式中的2次方的2可以跟分母中的2約掉,使得公式推導看起來更加整齊簡潔。N表示訓練樣本的個數(注意這裡的N是一個大於0的整數,不是矩陣),除以N表示求每個樣本誤差平均的平均值。

公式可以用矩陣形式來表達,也可以拆分為用∑來累加各個訓練樣本的真實標籤與網路輸出的誤差的平方。

4.3梯度下降法

4.3.1 梯度下降法(Gradient Descent)介紹

在求解機器學習演算法的模型引數時,梯度下降法是最常用的方法之一。在講解梯度下降法之前我們先來了解一下導數(derivative)偏導數(partial derivative)、**方向導數(directional derivative)梯度(****gradient)**的概念。

導數 —— 導數的概念就如圖4.1所示:
圖4.1 導數

導數的定義如下:


表示函式f在x0處的導數

△x 表示x的變化量

表示函式的增量


表示△x 趨近於0

dx表示x的變化量△x趨近於0

dy表示

總的來說

反映的是函式 y = f(x) 在x軸上某一點處沿x軸正方向的變化率/變化趨勢。也就是在x軸上的某一點初,如果f '(x)>0,說明f(x)的函式值在x點沿x軸正方向是趨向於增加的;如果f '(x)<0,說明f(x)的函式值在x點沿x軸正方向是趨向於減小的。

偏導數 —— 偏導數的定義如下:

可以看到,導數與偏導數本質是一致的,都是當自變數的變化量趨近於0時,函式值的變化量與自變數變化量比值的極限。直觀地說,偏導數也就是函式在某一點上沿座標軸正方向的的變化率。

區別在於:  
導數,指的是一元函式中,函式y = f(x)在某一點處沿x軸正方向的變化率;  
偏導數,指的是多元函式中,函式
在某一點處沿某一座標軸
正方向的變化率。

方向導數 —— 方向導數的定義如下:

其中

l 表示某個方向

在前面導數和偏導數的定義中,均是沿座標軸正方向討論函式的變化率。那麼當我們討論函式沿任意方向的變化率時,也就引出了方向導數的定義,即:某一點在某一趨近方向上的導數值。

通俗的解釋是:  
我們不僅要知道函式在座標軸正方向上的變化率(即偏導數),而且還要設法求得函式在其他特定方向上的變化率。而方向導數就是函式在其他特定方向上的變化率。

梯度 —— 梯度的定義如下:

對於

上的某一點來說存在很多個方向導數,梯度的方向是函式在某一點增長最快的方向,梯度的模則是該點上方向導數的最大值,梯度的模等於:

這裡注意三點:

  1. 梯度是一個向量,即有方向有大小

  2. 梯度的方向是最大方向導數的方向

  3. 梯度的值是最大方向導數的值

梯度下降法—— 既然在變數空間的某一點處,函式沿梯度方向具有最大的變化率,那麼在優化代價函式的時候,就可以沿著負梯度方向去減小代價函式的值。計算過程可以描述如下:

Repeat表示不斷重複


表示引數調整,η表示學習率

作者介紹