1. 程式人生 > >神經網路和反向傳播演算法推導

神經網路和反向傳播演算法推導

注:由於自己畫圖實在太難畫,本文中基本所有插圖來源於演算法糰子機器學習班,請勿轉載

1.普通的機器學習模型:

其實,基本上所有的基本機器學習模型都可以概括為以下的特徵:根據某個函式,將輸入計算並輸出。圖形化表示為下圖:

當我們的g(h)為sigmoid函式時候,它就是一個邏輯迴歸的分類器。當g(h)是一個只能取0或1值的函式時,它就是一個感知機。那麼問題來了,這一類模型有明顯缺陷:當模型線性不可分的時候,或者所選取得特徵不完備(或者不夠準確)的時候,上述分類器效果並不是特別喜人。如下例:

我們可以很輕易的用一個感知機模型(感知器演算法)來實現一個邏輯與(and),邏輯或(or)和邏輯或取反的感知器模型,

(感知器模型演算法連結),因為上述三種模型是線性可分的。但是,如果我們用感知器模型取實現一個邏輯非異或(相同為1,不同為0),我們的訓練模型的所有輸出都會是錯誤的,該模型線性不可分!

                                          

2.神經網路引入:

我們可以構造以下模型:

(其中,A代表邏輯與,B代表邏輯或取反,C代表邏輯或)

上述模型就是一個簡單的神經網路,我們通過構造了三個感知器,並將兩個感知器的輸出作為了另一個感知其的輸入,實現了我們想要的邏輯非異或模型,解決了上述的線性不可分問題。那麼問題是怎麼解決的呢?其實神經網路的實質就是每一層隱藏層(除輸入和輸出的節點,後面介紹)的生成,都生成了新的特徵,新的特徵在此生成新的特徵,知道最新的特徵能很好的表示該模型為止

。這樣就解決了線性不可分或特徵選取不足或不精確等問題的產生。(以前曾介紹過線性不可分的實質就是特徵不夠)

神經網路的模型結構如下:

(藍色,紅色,黃色分別代表輸入層,影藏層,輸出層)

在此我們介紹的神經網路中的每一個訓練模型用的都是邏輯迴歸模型即g(h)是sigmoid函式。

我們可以將神經網路表示如下:

3.神經網路的預測結果(hypothesis函式)的計算和CostFunction的計算

預測結果的計算其實與普通的邏輯迴歸計算沒有多大區別。只是有時候需要將某幾個邏輯迴歸的輸出作為其他邏輯迴歸模型的輸入罷了,比如上例的輸出結果為:

那麼CostFunction的計算又和邏輯迴歸的CostFunction計算有什麼區別呢?

邏輯迴歸的CostFunction如下:

上述式子的本質是將預測結果和實際標註的誤差用某一種函式估算,但是我們的神經網路模型有時候輸出不止一個,所以,神經網路的誤差估算需要將輸出層所有的CostFunction相加:


k:代表第幾個輸出。

補充:神經網路可以解決幾分類問題?

理論上,當輸出單元只有一個時,可以解決2分類問題,當輸出單元為2時可以解決4分類問題,以此類推...

實質上,我們三個輸出單元時,可以解決三分類問題([1,0,0],[0,1,0],[0,0,1]),為什麼如此設計?暫時留白,以後解決

ps:面試題:一個output機器,15%可能輸出1,85%輸出0,構造一個新的機器,使0,1輸出可能性相同? 答:讓output兩次輸出01代表0,10代表1,其餘丟棄

4.神經網路的訓練

這兒也同於logistic迴歸,所謂的訓練也就是調整w的權值,讓我們再一次把神經網路的CostFunction寫出來!

W代表所有層的特徵權值,Wij(l)代表第l層的第i個元素與第j個特徵的特徵權值

m代表樣本個數,k代表輸出單元個數

hw(x(i))k代表第i個樣本在輸出層的第k個樣本的輸出 y(i)k代表第i個樣本的第k個輸出

然後同於logistic迴歸,將所有的W更新即可。難處在於此處的偏導數怎麼求?首先得說說鏈式求導法則:

所以我們可以有:

接下來的問題就是有theta了,當我們要求的錯誤變化率是最後一層(最後一層既是輸出層的前一層)且只看一個輸出神經元時則:

多個相加即可

那麼中間層次的神經元變化率如何求得呢?我們需要研究l層和了+1層之間的關係,如下圖:

第l層的第i個Z與第l層的第i個a的關係就是取了一個sigmod函式,然而第l層的第i個a與和其對應的w相乘後在加上其他的節點與其權值的乘積構成了第l+1層的Z,好拗口,好難理解啊,看下式:


大體也就是這麼個情況,具體的步驟為:

1.利用前向傳播演算法,計算出每個神經元的輸出

2.對於輸出層的每一個輸出,計算出其所對應的誤差

3.計算出每個神經元的錯誤變化率即:

4.計算CostFunction的微分,即:

5.程式碼:

相關推薦

神經網路反向傳播演算法推導

注:由於自己畫圖實在太難畫,本文中基本所有插圖來源於演算法糰子機器學習班,請勿轉載 1.普通的機器學習模型: 其實,基本上所有的基本機器學習模型都可以概括為以下的特徵:根據某個函式,將輸入計算並輸出。圖形化表示為下圖: 當我們的g(h)為sigmoid函式時候,它就是一個

(轉載)深度學習基礎(3)——神經網路反向傳播演算法

原文地址:https://www.zybuluo.com/hanbingtao/note/476663 轉載在此的目的是自己做個筆記,日後好複習,如侵權請聯絡我!!   在上一篇文章中,我們已經掌握了機器學習的基本套路,對模型、目標函式、優化演算法這些概念有了一定程度的理解,而且已經會訓練單個的感知器或者

深層神經網路卷積神經網路反向傳播過程推導

反向傳播過程是深度學習的核心所在,雖然現在很多深度學習架構如Tensorflow等,已經自帶反向傳播過程的功能。我們只需要完成網路結構的正向傳播的搭建,反向傳播過程以及引數更新都是由架構本身來完成的。但為了更好的瞭解深度學習的機理,理解反向傳播過程的原理還是很重要的。 在學

吳恩達機器學習(第十章)---神經網路反向傳播演算法

一、簡介 我們在執行梯度下降的時候,需要求得J(θ)的導數,反向傳播演算法就是求該導數的方法。正向傳播,是從輸入層從左向右傳播至輸出層;反向傳播就是從輸出層,算出誤差從右向左逐層計算誤差,注意:第一層不計算,因為第一層是輸入層,沒有誤差。 二、如何計算 設為第l層,第j個的誤差。

吳恩達機器學習 - 神經網路反向傳播演算法 吳恩達機器學習 - 神經網路反向傳播演算法

原 吳恩達機器學習 - 神經網路的反向傳播演算法 2018年06月21日 20:59:35 離殤灬孤狼 閱讀數:373

通俗理解神經網路BP反向傳播演算法

轉載自  ​通俗理解神經網路BP反向傳播演算法 通俗理解神經網路BP反向傳播演算法 在學習深度學習相關知識,無疑都是從神經網路開始入手,在神經網路對引數的學習演算法bp演算法,接觸了很多次,每一次查詢資料學習,都有著似懂非懂的感覺,這次趁著思路比較清楚,也為了能夠讓一些像

全連線神經網路反向傳播演算法(BP)

一、預熱篇 參考連結:http://colah.github.io/posts/2015-08-Backprop/ 要理解的主要點:路徑上所有邊相乘,所有路徑相加 反向傳播演算法(Backpropagation)已經是神經網路模型進行學習的標配。但是有很多問題值得思考一下: 反向傳播

神經網路反向傳播演算法(BP)

神經網路中反向傳播演算法(BP) 本文只是對BP演算法中的一些內容進行一些解釋,所以並不是嚴格的推導,因為我在推導的過程中遇見很多東西,當時不知道為什麼要這樣,所以本文只是對BP演算法中一些東西做點自己的合理性解釋,也便於自己理解。 要想看懂本文,要懂什麼是神經網路,對前向傳播以

神經網路反向傳播演算法中矩陣的求導方法(矩陣求導總結)

  前言 神經網路的精髓就是反向傳播演算法,其中涉及到一些矩陣的求導運算,只有掌握了與矩陣相關的求導法則才能真正理解神經網路. 與矩陣有關的求導主要分為兩類: 標量 f 對 矩陣 W的導數 (其結果是和W同緯度的矩陣,也就是f對W逐元素求導排成與W尺寸相同的矩陣

神經網路反向傳播演算法(backpropagation)的pytorch實現,pytorch教程中的程式碼解讀以及其他一些疑問與解答

pytorch的官網上有一段教程,是使用python的numpy工具實現一個簡單的神經網路的bp演算法。下面先貼上自己的程式碼: import numpy as np N,D_in,H,D_out = 4,10,8,5 x = np.random.randn(N,D_i

深度神經網路反向傳播演算法

1.DNN反向傳播演算法簡介 回顧我們前面學到的監督問題,通常會遇到這種情況,假如有mmm個訓練樣本,分別為{(x1,y1),(x2,y2),(x3,y3),...,(xm,ym)}\{(x_1,y_1),(x_2,y_2),(x_3,y_3),...,(x_m

吳恩達機器學習筆記-神經網路的代價函式反向傳播演算法

代價函式 在神經網路中,我們需要定義一些新的引數來表示代價函式。 L = total number of layers in the network $s_l$ = number of units (not counting bias unit) in layer

神經網路反向傳播公式的推導

神經網路的反向傳播公式的推導 前言: 早該開始入坑CNN,RNN的博主總覺得要先能用python加numpy手擼一個神經網路,才能更好理解其他神經網路的原理(強迫症)。於是…這一拖就是快兩月(懶),最近填坑的時候才發現以為自己很通透的反向傳播過程,寫起程式碼推起來就…。 光看西瓜

神經網路反向傳播(bp)演算法詳解

      神經元和感知器的本質一樣神經元和感知器本質上是一樣的,只不過感知器的時候,它的啟用函式是階躍函式;而當我們說神經元時,啟用函式往往選擇為sigmoid函式或tanh函式。如下圖所示:    輸入節點     每一個輸入節點對應一個權值,輸入節點可以是任意數。

BP(反向傳播演算法CNN反向傳播演算法推導(轉載)

轉載來源: http://blog.csdn.net/walegahaha/article/details/51867904 http://blog.csdn.net/walegahaha/article/details/51945421 關於CNN推導可以參考文獻:

deeplearning.ai-正向反向傳播演算法公式

【正向和反向傳播】 【梯度下降i法】 【邏輯迴歸代價函式】 【實現神經網路的步驟】 【淺層神經網路例子】 import numpy as np def sigmoid(x): """ Compute the sigmoid of x

卷積神經網路之前向傳播演算法

0.雜談 本來個人是準備畢業直接工作的,但前段時間學校保研大名單出來之後,發現本人有保研機會,於是就和主管請了幾天假,回學校準備保研的事情。經過兩天的準備,也是非常幸運,成功拿到本院的保研名額。明確得到保研名額的時候已經是9月18號,然而國家推免系統開放時間是9月28號,也就是說我只

AI應用開發基礎傻瓜書系列2-神經網路反向傳播與梯度下降的基本概念

第二篇:神經網路中反向傳播與梯度下降的基本概念 預警:本篇部落格中會涉及到偏導數的概念,但是非常初級,很容易理解,建議硬著頭皮看,跟著算一遍,看完之後保證會覺得人生美好了很多。 反向傳播和梯度下降這兩個詞,第一眼看上去似懂非懂,不明覺厲。這兩個概念是整個神經網路中的重要組成部分,是和誤差函式/損失函式的概念

反向傳播演算法推導

      BP(backpropgationalgorithm ):後向傳導演算法,顧名思義就是從神經網路的輸出(頂層)到輸入(底層)進行求解。那麼求解什麼呢,求解的就是神經網路中的引數的導數,即引數梯度方向,從而就可以使用梯度下降等求解無約束問題(cost functio

100天搞定機器學習|day38 反向傳播演算法推導

往期回顧 100天搞定機器學習|(Day1-36) 100天搞定機器學習|Day37無公式理解反向傳播演算法之精髓 上集我們學習了反向傳播演算法的原理,今天我們深入講解其中的微積分理論,展示在機器學習中,怎麼理解鏈式法則。 我們從一個最簡單的網路講起,每層只有一個神經元,圖上這個網路就是由三個權重