1. 程式人生 > >神經網路中的前向和後向演算法

神經網路中的前向和後向演算法

  最近深度學習的研究在學界火的一塌糊塗,大老闆終於也下定決心組織實驗室開展相關研究了,何況實驗室的主流方向是做成像的,不做點這方面的研究感覺說不過去。研究生小朋友們剛進來還得看視覺方面的東西,博三博四的師兄師姐們基本都達到畢業要求了已經無心學習,最後這種為實驗室服務性的工作就丟到了我們博二的頭上。。。
   看了一段時間的深度網路模型,也在tf和theano上都跑了一些模型,但是感覺沒有潛下去,對很多東西的理解都只停留在“這個是幹什麼的”層次上面。昨天在和小老師一起看一篇文章的時候,就被問到RNN裡面的後向傳播演算法具體是怎麼推。當時心裡覺得BP演算法其實很熟悉啊,然後在推導的過程中就一臉懵逼了。於是又去網上翻了翻相關內容,自己走了一遍,準備做個筆記,算是個交代。

準備一個神經網路模型,比如:

這裡寫圖片描述

   其中,[i1,i2]代表輸入層的兩個結點,[h1,h2]代表隱藏層的兩個結點,[o1,o2]為輸出。[b1,b2]為偏置項。連線每個結點之間的邊已經在圖中標出。

來了解一下前向演算法:

  前向演算法的作用是計算輸入層結點對隱藏層結點的影響,也就是說,把網路正向的走一遍:輸入層—->隱藏層—->輸出層
計算每個結點對其下一層結點的影響。
   例如,我們要算結點h1的值,那麼就是:

neth1=i1×w1+i2×w2+b1×1是一個簡單的加權求和。這裡稍微說一下,偏置項和權重項的作用是類似的,不同之處在於權重項一般以乘法的形式體現,而偏置項以加法的形式體現。
  而在計算結點o
1
時,結點h1的輸出不能簡單的使用neth1的結果,必須要計算啟用函式,啟用函式,不是說要去啟用什麼,而是要指“啟用的神經元的特徵”通過函式保留並映射出來。以sigmoid函式為例,h1的輸出:outh1=11+eneth1
於是neto1=outh1×w5+outh2×w6+b2×1
最後o1的輸出結果,也就是整個網路的一個輸出值是:outo1=11+eneto1按照上面的步驟計算出out02,則[outo1,outo2] 就是整個網路第一次前向運算之後得到的結果。

後向演算法:

  在實際情況中,因為是隨機給定的權值,很大的可能(幾乎是100%)得到的輸出與實際結果之間的偏差非常的大,這個時候我們就需要比較我們的輸出和實際結果之間的差異,將這個殘差返回給整個網路,調整網路中的權重關係。這也是為什麼我們在神經網路中需要後向傳播的原因。其主要計算步驟如下:
1. 計算總誤差


Etotal=12(targetoutput)22. 隱藏層的權值更新
在要更新每個邊的權重之前,必須要知道這條邊對最後輸出結果的影響,可以用整體誤差對w5求偏導求出:Etotalw5具體計算的時候,可以採用鏈式法則展開:Etotalouto1×outo1neto1×

相關推薦

神經網路中的前演算法

  最近深度學習的研究在學界火的一塌糊塗,大老闆終於也下定決心組織實驗室開展相關研究了,何況實驗室的主流方向是做成像的,不做點這方面的研究感覺說不過去。研究生小朋友們剛進來還得看視覺方面的東西,博三博四的師兄師姐們基本都達到畢業要求了已經無心學習,最後這種為實驗

卷積神經網路CNN的前傳播(一)

卷積神經網路CNN的前向和後向傳播 卷積運算與相關的區別 卷積運算的正向和反向傳播 原文 Forward And Backpropagation in Convolutional Neural Network地址: https://medium.

卷積神經網路CNN的前傳播(二)

卷積神經網路CNN的前向和後向傳播(二) padding=1,stride=1的情形 輸入為8x8和卷積核3x3 對輸入的求導 對卷積核的求導 本文在卷積神經網路CNN的前向和後向傳播(一)的基礎上做一些擴充套件

神經網路中前傳播反向傳播解析

雖然學深度學習有一段時間了,但是對於一些演算法的具體實現還是模糊不清,用了很久也不是很瞭解,最近在看去年LeCun和Hinton在Nature上發表的deep learning的review,有兩張圖分別是講得網路的前向傳播和反向傳播,下面記錄一下。 前向

迴圈神經網路(RNN)模型與前反向傳播演算法

    在前面我們講到了DNN,以及DNN的特例CNN的模型和前向反向傳播演算法,這些演算法都是前向反饋的,模型的輸出和模型本身沒有關聯關係。今天我們就討論另一類輸出和模型間有反饋的神經網路:迴圈神經網路(Recurrent Neural Networks ,以下簡稱RNN),它廣泛的用於自然語言處理中的語音

Java種子填充演算法

種子填充演算法多用於計算機對圖形的處理。例如ps中填充區域一樣。當我們要填充某一塊區域,首先我們要讓電腦識別出你要填充的每個畫素點,種子演算法通過給定種子的座標獲取該畫素的顏色值,通過對比顏色資訊來判斷周圍的畫素是否是我們要選擇的。 接下來我們用一個字元陣列來代表我們的圖片,*號的點則是我們要選

python神經網路解決手寫識別問題演算法程式碼

1.演算法 2.程式碼 import numpy # scipy.special for the sigmoid function expit() import scipy.special # library for plotting arrays import matplotlib.

吳恩達《神經網路與深度學習》課程筆記歸納(三)-- 神經網路基礎之Python與量化

上節課我們主要介紹了邏輯迴歸,以輸出概率的形式來處理二分類問題。我們介紹了邏輯迴歸的Cost function表示式,並使用梯度下降演算法來計算最小化Cost function時對應的引數w和b。通過計算圖的方式來講述了神經網路的正向傳播和反向傳播兩個過程。本節課我們將來

影象處理八:前對映對映

        影象的幾何變換:在不改變影象畫素的前提下,對影象畫素進行空間幾何變換。常見的變換:距離變換,座標對映,平移,映象,旋轉,縮放和仿射變換等等。         影象的幾何變換:建立了一種源影象畫素與

雙層神經網路與邏輯迴歸正反傳播數學公式簡要推導

邏輯迴歸正向傳播和反向傳播推導: z=wTx+b(1) a=σ(z)=11+e−z(2) L(a,y)=−(ylog(a)+(1−y)log(1−a))(3) da=∂L(a,y)

神經網路】自編碼聚類演算法--DEC (Deep Embedded Clustering)

1.演算法描述      最近在做AutoEncoder的一些探索,看到2016年的一篇論文,雖然不是最新的,但是思路和方法值得學習。論文原文連結 http://proceedings.mlr.press/v48/xieb16.pdf,論文有感於t-SNE演算法的t-

誰擋了我的神經網路?(二)—— 優化演算法

誰擋了我的神經網路?(二)—— 優化演算法 這一系列文章介紹了在神經網路的設計和訓練過程中,可能提升網路效果的一些小技巧。前文介紹了在訓練過程中的一系列經驗,這篇文章將重點關注其中的優化演算法部分。更新於2018.11.1。 文章目錄 誰擋了我的神經網路?(

機器學習_1.神經網路的研究學習(一)

人工神經網路      — —百度百科          人工神經網路(Artificial Neural Network,即ANN ),是20世紀80 年代以來人工智慧領域興起的研究熱點。它從資訊處理角度對

深度學習之神經網路(CNN/RNN/GAN)演算法原理+實戰目前最新

第1章 課程介紹 深度學習的導學課程,主要介紹了深度學習的應用範疇、人才需求情況和主要演算法。對課程章節、課程安排、適用人群、前提條件以及學習完成後達到的程度進行了介紹,讓同學們對本課程有基本的認識。 1-1 課程導學 第2章 神經網路入門 本次實戰課程的入門課程。對機器學習和深度學習做了引入

神經網路學習(一)——感知器分類演算法

最近,學習了一下神經網路的相關知識。寫一篇部落格,做思路整理。 神經網路包含input layer、hidden layer、output layer三層。(考慮真實神經原傳輸訊號的過程) 感知器分類演算法只適用於可以線性分割的資料!!!!! 相關概念:   訓練樣本X

卷積神經網路--人臉識別神經風格遷移

卷積神經網路 — 特殊應用:人臉識別和神經風格遷移 人臉識別 人臉驗證(Verification): 1. Input:圖片、名字/ID; 2.Output:輸入的圖片是否是對應的人。 3.1 to 1 問題。     對於大多數的人臉識別系統都存在的一個問題就是

深度學習之PyTorch實戰(2)——神經網路模型搭建引數優化

  上一篇部落格先搭建了基礎環境,並熟悉了基礎知識,本節基於此,再進行深一步的學習。   接下來看看如何基於PyTorch深度學習框架用簡單快捷的方式搭建出複雜的神經網路模型,同時讓模型引數的優化方法趨於高效。如同使用PyTorch中的自動梯度方法一樣,在搭建複雜的神經網路模型的時候,我們也可以使用PyTor

[純C#實現]基於BP神經網路的中文手寫識別演算法

效果展示 這不是OCR,有些人可能會覺得這東西會和OCR一樣,直接進行整個字的識別就行,然而並不是. OCR是2維畫素矩陣的畫素資料.而手寫識別不一樣,手寫可以把使用者寫字的筆畫時間順序,抽象成一個維度.這樣識別的就是3維的資料了.識別起來簡單很多. 最近需要做一箇中文手寫識別演算法.搜尋了網上的

神經網路梯度消失梯度爆炸及解決辦法

關注微信公眾號【Microstrong】,我現在研究方向是機器學習、深度學習,分享我在學習過程中的讀書筆記!一起來學習,一起來交流,一起來進步吧!目錄:(1)神經網路梯度消失與梯度爆炸(2)幾種啟用函式的比較一、神經網路梯度消失與梯度爆炸(1)簡介梯度消失與梯度爆炸層數比較多

機器學習-實現簡單神經網路(筆記程式碼實現)

一、神經網路簡介        神經網路演算法的發展歷史        起源:20世紀中葉,一種仿生學產品。        興起:環境->2進位制創新;能力->軟硬體;需求->人的價效比。        主要功能:            分類識別