BP神經網路模型與學習演算法

2022-09-13 04:57:14 字數 2441 閱讀 7323

在感知器神經網路模型與線性神經網路模型學習演算法中,理想輸出與實際輸出之差被用來估計神經元連線權值誤差。當解決線性不可分問題而引入多級網路後,如何估計網路隱含層神經元的誤差就成了一大難題。因為在實際中,無法知道隱含層的任何神經元的理想輸出值。2023年rumelhart、mcclelland提出了bp網路的誤差反向後傳(bp)學習演算法,實現了minsky設想的多層神經網路模型。

bp演算法在於利用輸出後的誤差來估計輸出層的直接前導層的誤差,再用這個誤差估計更前一層的誤差,如此一層一層的反傳下去,就獲得了所有其他各層的誤差估計。使用bp演算法進行學習的多級肺迴圈網路稱為bp網路,屬於前向神經網路型別。雖然這種誤差估計本身的精度會隨著誤差本身「向後傳播」而不斷降低,但它還是給多層網路的訓練提供了比較有效的辦法,加之多層前向神經網路能逼近任意非線性函式。

構成bp網路的神經元仍然是神經元。按照bp演算法的要求,這些神經元所用的啟用函式必須處處可導。一般都使用s型函式。對乙個神經元來說,它的網路輸入可以表示為:$$net = \overrightarrow x \cdot \overrightarrow \omega$$

其中\(\overrightarrow x\) 表示該神經元所接受的輸入,\(\overrightarrow \omega\) 表示神經元對應的連線權值。

該神經元的輸出為:$$y = f(net) = \frac}$$

進一步地,我們可以求y關於net的導數:

\[\beginf'(net) & = \frac})^2} \\& = \frac - 1})^2} \\& = \frac} - \frac)^2} \\& = y(1 - y) \end

\]顯然地 我們可以注意到$$\lim_\frac} = 1 \ \lim_\frac)2} = 0$$

根據s型啟用函式可知,y的值域為(0, 1), 從而,f'(net)的值域為(0, 0.25),而且是在y=0.5時,f'(x)有最大值。

標準bp演算法是基於梯度下降法的學習演算法,學習過程是通過調整權值和閾值,使刪除期望值和神經網路實際輸出值的均方誤差區域最小而實現的,但是它只用到均方誤差函式對權值和閾值的一階導數(梯度)的資訊,使得演算法存在收斂速度緩慢、容易陷入區域性極小等缺陷。

定義:bp標準演算法具體實現步驟如下:

網路初始化,給\(w_\)

\(w_\)

\(b_h\)

\(b_o\) 分別賦乙個區間(-1, 1)內的隨機數,並設定誤差函式為

\[e = \frac \sum^q_(d_o(k) - y_o(k))^2$$給定計算精度值$\varepsilon$ 和最大學習次數m

2. 隨機選取第k個輸入樣本$\overrightarrow$ 以及對應的期望輸出 $\overrightarrow$

3. 計算隱含層各神經元的輸入$hi_h(k)$ ,然後用輸入以及啟用函式計算隱含層各神經元的輸出$ho_h(k)$

$$\begin& hi_h(k) = \sum^n_i w_x_i(k) - b_h \\& ho_h(k) = f(hi_h(k)) \\& yi_o(k) = \sum^p_hw_ho_h(k) - b_o\\& yo_o(k) = f(yi_o(k)) \end\]

利用網路期望輸出向量 \(\overrightarrow\) 網路的實際輸出 \(yo_o(k)\) ,計算誤差函式對輸出層各神經元的偏導數 \(\delta_o(k)\)

\[\delta_o(k) = \left( d_o(k) - yo_o(k) \right)yo_o(k)(1-yo_o(k))

\]利用隱含層到輸出曾的連線權值\(w_(k)\) 、輸出層的 \(\delta_o(k)\) 和隱含層的輸出 \(ho_h(k)\) 計算誤差函式對隱含層各神經元的偏導數 \(\delta_h(k)\)

\[\delta_h(k) = \left[ \sum^q_ \delta_o(k) w_\right]ho_h(k)(1-ho_h(k))

\]利用輸出層各神經元的 \(\delta_o(k)\) 和隱含層各神經元的輸出 \(ho_h(k)\) 來修正連線權值 \(w_(k)\) 和閾值 \(b_o(k)\) :

\[w^_(k) = w^n_(k) + \eta \delta_o(k)ho_h(k) \\ b^_o(k) = b_o^n(k) + \eta \delta_o(k)

\]n為調整前,n+1為調整後,\(\eta\) 為學習率, 在(0, 1) 之間取值。

7. 使用隱含層各神經元的\(\delta_h(k)\) 和輸入層各神經元的輸入\(x_i(k)\) 修正連線權和閾值$$w^ = w^n + \eta \delta_h(k)x_i(k) \ b_h^(k) = b^(k) + \eta \delta_h(k)$$

8. 計算全域性誤差e $$e = \frac \sum^m \sum^q_(d_o(k) - y_o(k))^2$$

9. 判斷網路誤差是否滿足要求,當 \(e < \varepsilon\) 或學習次數大於設定的最大次數m,則演算法結束。否則,隨機選取下乙個學習樣本及對應年的期望輸出,返回到第三步,進入下一輪的學習過程。

BP神經網路模型與學習演算法

一,什麼是bp bp back propagation 網路是1986年由rumelhart和mccelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。bp網路能學習和存貯大量的輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學...

BP神經網路模型與學習演算法

一,什麼是bp bp back propagation 網路是1986年由rumelhart和mccelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。bp網路能學習和存貯大量的輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學...

BP神經網路模型與學習演算法

一,什麼是bp bp back propagation 網路是1986年由rumelhart和mccelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。bp網路能學習和存貯大量的輸入 輸出模式對映關係,而無需事前揭示描述這種對映關係的數學...