1. 程式人生 > >DeepLearning:四、BP神經網路

DeepLearning:四、BP神經網路

目錄:

  • 基本原理
  • BP演算法演算法
    • cost function
    • 求引數
    • BP演算法推導
  • 參考資料

  前面簡單的認識了一下神經網路,這裡我要與大家分享的是神經網路中的大明星:BP演算法。下面的內容主要是來自斯坦福大學的教程,這篇教程是我看過的所有BP相關教程中最好的,其中補充了一些內容。
  BP(Back Propagation)神經網路是1986年由Rumelhart和McCelland為首的科學家小組提出,是一種按誤差逆傳播演算法訓練的多層前饋網路,是目前應用最廣泛的神經網路模型之一。BP網路能學習和存貯大量的輸入-輸出模式對映關係,而無需事前揭示描述這種對映關係的數學方程。它的學習規則是使用梯度下降法,通過反向傳播來不斷調整網路的權值和閾值,使網路的誤差平方和最小。BP神經網路模型拓撲結構包括輸入層(input)、隱層(hidden layer)和輸出層(output layer)。

基本原理

  BP演算法基本原理是利用輸出後的誤差來估計輸出層的直接前導層的誤差,再用這個誤差估計更前一層的誤差,如此一層一層的反傳下去,就獲得了所有其他各層的誤差估計。看下面幾個動圖:
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
這裡寫圖片描述
如上面動圖展示,誤差就這樣通過一層一層的傳播,最後根據誤差使用梯度下降法更新每個節點的引數。

BP演算法1

Cost Function

這裡寫圖片描述
  一個固定樣本集 {(x(1),y(1)),,(x(m),y(m))},它包含 m 個樣例。我們可以用批量梯度下降法來求解神經網路。具體來講,對於單個樣例(x,y),其代價函式為:

J(W,b;x,y)=12hW,b(x)y
2
.

  這是一個(二分之一的)方差代價函式。給定一個包含 m 個樣例的資料集,我們可以定義整體代價函式為: J(W,b)=[1mi=1mJ(W,b;x(i),y(i))]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2=[1mi=1m(12hW,b(x(i))y(i)2)]+λ2l=1nl1i=1slj=1sl+1(W(l)ji)2
  以上公式中的第一項 J(W,b) 是一個均方差項。第二項是一個規則化項(也叫權重衰減項),其目的是減小權重的幅度,防止過度擬合。

[注:通常權重衰減的計算並不使用偏置項 b(l)i,比如我們在 J(W,

b)的定義中就沒有使用。一般來說,將偏置項包含在權重衰減項中只會對最終的神經網路產生很小的影響。如果你在斯坦福選修過CS229(機器學習)課程,或者在YouTube上看過課程視訊,你會發現這個權重衰減實際上是課上提到的貝葉斯規則化方法的變種。在貝葉斯規則化方法中,我們將高斯先驗概率引入到引數中計算MAP(極大後驗)估計(而不是極大似然估計)。]

  權重衰減引數 λ 用於控制公式中兩項的相對重要性。在此重申一下這兩個複雜函式的含義:J(W,b;x,y) 是針對單個樣例計算得到的方差代價函式;J(W,b) 是整體樣本代價函式,它包含權重衰減項。

  以上的代價函式經常被用於分類和迴歸問題。在分類問題中,我們用 y=01,來代表兩種型別的標籤(回想一下,這是因為 sigmoid啟用函式的值域為 [0,1];如果我們使用雙曲正切型啟用函式,那麼應該選用1+1作為標籤)。對於迴歸問題,我們首先要變換輸出值域(譯者注:也就是 y),以保證其範圍為 [0,1](同樣地,如果我們使用雙曲正切型啟用函式,要使輸出值域為 [1,1])。

求參

  我們的目標是針對引數 Wb來求其函式

相關推薦

DeepLearning:BP神經網路

目錄: 基本原理 BP演算法演算法 cost function 求引數 BP演算法推導 參考資料   前面簡單的認識了一下神經網路,這裡我要與大家分享的是神經網路中的大明星:BP

基於BP神經網路的數字識別基礎系統(

基於BP神經網路的數字識別基礎系統(四) (接上篇) 上一篇的連結:http://blog.csdn.net/z_x_1996/article/details/68490009 3.系統設計 上一篇筆者已經討論完了BP神經網路需要用到的知識點,接下來就開始設計符合我們標題

機器學習與神經網路):BP神經網路的介紹和Python程式碼實現

前言:本篇博文主要介紹BP神經網路的相關知識,採用理論+程式碼實踐的方式,進行BP神經網路的學習。本文首先介紹BP神經網路的模型,然後介紹BP學習演算法,推導相關的數學公式,最後通過Python程式碼實現BP演算法,從而給讀者一個更加直觀的認識。 1.BP網路模型 為了將理

機器學習():BP神經網路_手寫數字識別_Python

機器學習演算法Python實現 三、BP神經網路 全部程式碼 1、神經網路model 先介紹個三層的神經網路,如下圖所示 輸入層(input layer)有三個units(為

西瓜書5.5 程式設計實現BP神經網路——標準BP演算法累積BP演算法

這裡照著書上的公式,實現了一下標準BP演算法,和累積BP演算法,BP是error Back Propagation的意思,誤差逆傳播。BP網路通常是指用BP演算法訓練的多層前饋神經網路。程式碼是照著書本公式自己寫的,沒有參考網上的其他版本。 資料和程式碼地址:https:/

BP神經網路基於Tensorflow的實現(程式碼註釋詳細)

BP(back propagation)神經網路是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播演算法訓練的多層前饋神經網路,是目前應用最廣泛的神經網路。 在一般的BP神經網路中,單個樣本有m個輸入和n個輸出,在輸入層

Tensorflow系列專題():神經網路篇之前饋神經網路綜述

目錄: 神經網路前言 神經網路 感知機模型 多層神經網路 啟用函式 Logistic函式 Tanh函式 ReLu函式 損失函式和輸出單元 損失函

從神經元到CNNRNNGAN…神經網路看本文絕對夠了

在深度學習十分火熱的今天,不時會湧現出各種新型的人工神經網路,想要實時瞭解這些新型神經網路的架構還真是不容易。光是知道各式各樣的神經網路模型縮寫(如:DCIGN、BiLSTM、DCGAN……還有哪些?),就已經讓人招架不住了。 因此,這裡整理出一份清單來梳理所有這些架構。其中大部分是人工神經網路

BP神經網路 如何進行權值的初始化

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

遺傳演算法+BP神經網路組合求解非線性函式

用遺傳演算法求解非線性問題是常見的求解演算法之一,求解的過程就是隨機生成解,計算適應度,然後選擇,交叉,變異,更新種群,不斷迭代,這樣,每個個體都會向每代中最佳的個體學習並靠攏,這是區域性最優解;而變異操作是為了在靠近當前最優解的同時還有機會變異出更佳的基因,從而跳出區域性最優解而達到全域性最優解。

BP神經網路說明及推導

    學習神經網路,很多基礎知識不用就會忘了,這段時間重新進行一下整理和總結。在此留做記錄。首先從最基礎的BP神經網路開始。並進行相關演算法的推導。     人工神經網路是仿照人大腦的功能而用數學公式搭建的一種結構。現在藉助計算機語言在高效能的計算機上得

神經網路學習(3)————BP神經網路以及python實現

一、BP神經網路結構模型                BP演算法的基本思想是,學習過程由訊號的正向傳播和誤差的反向傳播倆個過程組成,輸入從輸入層輸入,經隱層處理以後,傳向輸出層。如果輸出層的實際輸出和期望輸出不符合

機器學習與深度學習系列連載: 第二部分 深度學習(十)迴圈神經網路 2(Gated RNN - LSTM )

迴圈神經網路 2(Gated RNN - LSTM ) simple RNN 具有梯度消失或者梯度爆炸的特點,所以,在實際應用中,帶有門限的RNN模型變種(Gated RNN)起著至關重要的作用,下面我們來進行介紹: LSTM (Long Short-term Memory )

BP神經網路演算法的理解

BP神經網路在百度百科中的解釋就是:BP(back propagation)神經網路是1986年由Rumelhart和McClelland為首的科學家提出的概念,是一種按照誤差逆向傳播演算法訓練的多層前饋神經網路,是目前應用最廣泛的神經網路。大家應該對基本的神經網路模型有一定程度的瞭解,

單隱層BP神經網路C++實現

    這幾天抽時間學習了一下很久之前就想學習的BP神經網路。通過閱讀西瓜書的神經網路部分的原理和參考了網上幾篇部落格,我自己用C++編寫、實現了一個單隱層BP神經網路。     簡單畫了個示意圖,好理解下面給出的公式:(注意:圖中省略了其他的節點之間的連

Tensorflow: MNIST資料集實現DNNCNNLSTM神經網路

最近學了一下tensorflow的基本用法,這裡做一下總結 全連線深度神經網路(FC-DNN) 全連線深度神經網路,每一層的神經元直接都是全連線,並且不共享權值。在普通的分類的問題中表現的不錯,但是對於圖片處理等具有網格形式的資料,最好採用CNN(卷積神經網路),對於序列化資料如NL

Tensorflow學習筆記()——簡單的神經網路實現

首先要建立一個神經網路,就要把架構瞭解清楚才能動手。 建立的神經網路如下: 有一個輸入層和二個隱藏層和一個輸出層組成的簡單神經網路,結果通過交叉熵softmax分類得到損失函式,然後通過梯度下降優化模型。 程式碼如下: import numpy as np import tensorfl

神經網路學習(三)——BP神經網路演算法

前面學習了感知器和自適應線性神經網路。 下面介紹經典的三層神經網路結構,其中每個神經元的啟用函式採用Sigmoid。PS:不同的應用場景,神經網路的結構要有針對性的設計,這裡僅僅是為了推導演算法和計算方便才採用這個簡單的結構。 訓練步驟: 1.正向傳播 2.反向傳播(BP)

Tensorflow實現BP神經網路

Tensorflow實現BP神經網路 摘要:深度學習中基本模型為BP深度神經網路,其包括輸入層、隱含層和輸出層。輸入層的神經元個數取決於資料集屬性特徵的個數,輸出層神經元個數取決於劃分類標的個數。BP神經網路通過梯度下降法不斷調整權重矩陣和偏向進行調參,實現神經網路的訓練。   本人

基於PCA與BP神經網路的人臉識別

基於PCA與BP神經網路的人臉識別 引言 1、PCA演算法 2、PCA原理推導 3、神經網路 4、matlab程式碼 5、C++程式碼 引言 前面的特徵提取部分採用的是PCA,後面的識別分類