神經網路BP演算法簡單推導

2021-07-25 21:26:58 字數 2695 閱讀 5808

這幾天圍繞**a neural probability language model 看了一些周邊資料,如神經網路、梯度下降演算法,然後順便又延伸溫習了一下線性代數、概率論以及求導。總的來說,學到不少知識。下面是一些筆記概要。

一、 神經網路

神經網路我之前聽過無數次,但是沒有正兒八經研究過。形象一點來說,神經網路就是人們模仿生物神經元去搭建的乙個系統。人們建立它也是為了能解決一些其他方法難以解決的問題。

對於單一的神經元而言,當生物刺激強度達到一定程度,其就會被激發,然後做出一系列的反應。模仿這個過程,就有了下面這張圖:

其中x可以看作是一系列的刺激因素,而w可以看作各個刺激因素所對應的權值。計算各個刺激因素的加權和就可以作為我們總的刺激強度了。注意一下,上圖中的x0和wk0代表了隨機雜訊。得到中的刺激強度之後我們就可以根據這個強度做出一定的反應,這個過程交由圖中的activation function函式來處理,處理後就獲得了我們最終的結果。

一般而言,activation function函式可以有三種(下圖中的a和b可以看做一種):

至此,神經網路的最基本結構——單層神經網路,已經介紹的差不多了。對於神經網路而言,我們可以利用這樣的簡單的單層神經網路去組合搭建乙個複雜的神經網路,以實現不同的功能。它可以是這樣的(接受一下引數表示的不同):

將這個圖中的變數以向量的形式表示可以得到下圖:

除了這種相對簡單的多層神經網路,網路還可以是這樣的:

這一部分的資料可以參見:

an introduction to neural networks

:ibm做的乙個科普資料

introduction to neural networks

:這個頁面相對更加的規範

以及hagan教授的書籍:neural_network_design

二、 梯度下降法

這個方法呢,說起來很簡單。乙個很形象的比喻就是說,你站在山坡上想下山,那麼如何才能盡快下山(預設速度是恆定的,你也不會摔死)?

你應該會環顧四周,找到當前最陡峭的方向下山吧?這個方向就可以用梯度來計算,這也就是梯度下降法的**。是不是覺得很簡單,以為自己掌握了?哈哈,還是太年輕了。

這一部分就不贅述了,給出我學習時候用到的兩個資料:

ng教授的機器學習

課程中的第二課(話說,聽完了,我就會了,之前可是看了一大堆資料還是似懂非懂);

機器學習中的數學

這個部落格也很不錯,看完課程再來看看這個還是有點好處的。

對了,梯度下降法還有乙個變種:隨機梯度下降法。這個才是很多場合下真正使用的方法。

三、 梯度下降法和神經網路的結合

好了,上面分別介紹完了梯度下降法以及神經網路,下面就是它們的結合應用了。

我們需要利用樣本資料去訓練我們的神經網路模型(其實很大程度上就是修改神經網路裡面的引數,如上面看到的權值等等),那麼怎麼修改呢?我們當時是應該對照我們的目標去做修改,這往往意味著要去最值化一些量,提到最值,是不是跟梯度下降法搭上勾勾了啊。我們可以利用梯度下降法做多輪迭代一步步逼近我們最終的目標。這也就是它們結合的地方。哦,聽說所謂的深度學習也就基本上是這個思路了。瞬間感覺高大上有沒有??

注意一下,這部分需要用了很多線性代數以及導數的很多知識,自行腦補。我是參考了ng教授機器學習

乙個簡單例子:房子**

自行學習ng教授機器學習

這門課的第二課,講的很好!

下面的是乙個複雜一點的例子。

我們把多層神經網路分為三層,輸入層、輸出層以及中間的隱藏層,對於中間隱藏層我們沒有辦法直接去計算梯度,進而修改引數。於是乎就只能利用求導的鏈式規則,從輸出層開始往回計算梯度,從而得以更新引數。這也就是傳說中的bp神經網路了,我的學習資料是:hagan教授的書籍:neural_network_design。其中有一章節專門將bp神經網路,講的很好。推導過程稍微有點長,我看完後不知所以,自己又找時間不看書推到了一遍,挺有意思的,哈哈。

看完後可以再參考這篇文章:backpropagation

。加深自己的理解。

四、 a neural probability language model

有了上面的基礎知識,再看這篇文章就容易多了。這篇文章的地位很高,文章主要亮點在於:首先,利用詞向量去表示乙個詞從而可以獲知不同詞語之間的相似度;其次,搭建神經網路去做計算(bp神經網路加上梯度下降法);其三,並行化去做計算,從而可以處理大規模的資料;最後也是最亮的地方在於該方法的實驗結果非常理想!

這篇部落格也有提到:deep learning in nlp (一)詞向量和語言模型

自己感覺對於這篇文章有些細節問題還是沒有理解,比如網路的輸入是怎麼來的?

**:

BP神經網路演算法推導

1 前饋神經網路 反饋神經網路 bp網路等,他們之間的關係 前饋型神經網路 取連續或離散變數,一般不考慮輸出與輸入在時間上的滯後效應,只表達輸出與輸入的對映關係 在此種神經網路中,各神經元從輸入層開始,接收前一級輸入,並輸入到下一級,直至輸出層。整個網路中無反饋,可用乙個有向無環圖表示。常見的前饋神...

BP神經網路演算法推導

目錄正向計算 反向傳播 設損失函式為f vec 則f vec delta f vec nabla cdot delta 其中 nabla 是 f vec 的梯度 所以當 delta eta nabla f vec eta 0 時,下降速率最快 即 delta eta frac 設當前啟用函式為f x...

神經網路BP演算法推導

j theta frac1m sum m sum k left y k log left h theta left x right right k left 1 y k right log left 1 left h theta left x right right k right right fr...