神經網路模型的原理

2022-04-22 21:57:12 字數 2461 閱讀 8501

深度學習最近火的不行,因為在某些領域應用的效果確實很好,深度學習本質上就是機器學習的乙個topic,是深度人工神經網路的另一種叫法,因此理解深度學習首先要理解人工神經網路。

生物神經網路就是由大量神經元構成的網路結構如下圖:

生物的神經網路是通過神經元、細胞、觸電等結構組成的乙個大型網路結構,用來幫助生物進行思考和行動等。那麼人們就想到了電腦是不是也可以像人腦一樣具有這種結構,這樣是不是就可以思考了?

類似於神經元的結構,人工神經網路也是基於這樣的神經元組成:

這裡面的x1、x2、x3是輸入值,中間的圓就像是神經元,經過它的計算得出hw,b(x)的結果作為神經元的輸出值。

由這樣的神經元組成的網路就是人工神經網路:

其中橙色的圓都是用來計算hw,b(x)的,縱向我們叫做層(layer),每一層都以前一層為輸入,輸出的結果傳遞給下一層

如果我們把神經網路看做乙個黑盒,那麼x1、x2、x3是這個黑盒的輸入x,最右面的hw,b(x)是這個黑盒的輸出y,按照之前幾篇機器學習的文章可以知道:這可以通過乙個數學模型來擬合,通過大量訓練資料來訓練這個模型,之後就可以預估新的樣本x應該得出什麼樣的y。

但是使用普通的機器學習演算法訓練出的模型一般都比較膚淺,就像是生物的進化過程,如果告訴你很久以前地球上只有三葉蟲,現在地球上有各種各樣的生物,你能用簡單的模型來表示由三葉蟲到人類的進化過程嗎?不能。但是如果模擬出中間已知的多層隱藏的階段(低等原始生物、無脊椎動物、脊椎動物、魚類、兩棲類、爬行動物、哺乳動物、人類時代)就可以通過海量的訓練資料模擬出。

也可以模擬成md5演算法的實現,給你無數個輸入字串和它的md5值,你能用膚淺的演算法推出md5的演算法嗎?不能。因為md5的計算是一階段一階段的,後一階段的輸入依賴前一階段的結果,無法逆推。但是如果已知中間幾個階段,只是不知道這幾個階段的引數,那麼可以通過海量資料訓練出來。

以上說明了神經網路結構的特別之處:通過較深的多個層次來模擬真實情況,從而構造出最能表達真實世界的模型,它的成本就是海量的訓練資料和巨大的計算量。

每乙個神經元的數學模型是:

其中的矩陣向量乘法

表示的就是輸入多個資料的加權求和,這裡的b(也就是上面圖中的+1)是截距值,用來約束引數值,就像是乙個向量(1,2,3)可以寫成(2,4,6)也可以寫成(10,20,30),那麼我們必須取定乙個值,有了截距值就可以限定了

其中f叫做啟用函式,啟用函式的設計有如下要求:1)保證後期計算量盡量小;2)固定取值範圍;3)滿足某個合理的分布。常用的啟用函式是sigmond函式和雙曲正切函式(tanh):

sigmond函式:

雙曲正切函式(tanh):

這兩個函式顯然滿足2)固定取值範圍;3)滿足某個合理的分布,那麼對於1)保證後期計算量盡量小這個要求來說,他們的好處在於:

sigmond函式的導數是:

tanh函式的導數是:

這會減少非常多的計算量,後面就知道了。

當計算多層的神經網路時,對於如下三層神經網路來說

我們知道:

其中的分別表示第2層神經元的輸出的第1、2、3個神經元產生的值

這三個值經過第3層最後乙個神經元計算後得出最終的輸出是:

以上神經網路如果有更多層,那麼計算原理相同。

我們發現這些神經元的啟用函式f是相同的,唯一不同的就是權重w,那麼我們做學習訓練的目標就是求解這裡的w,那麼我們如何通過訓練獲得更精確的w呢?

回想一下前面文章講過的回歸模型,我們也是知道大量訓練樣本(x,y),未知的是引數w和b,那麼我們計算w的方法是:先初始化乙個不靠譜的w和b,然後用輸入x和w和b預估y,然後根據預估的y和實際的y之間的差距來通過梯度下降法更新w和b,然後再繼續下一輪迭代,最終逼近正確的w和b

神經網路演算法也一樣的道理,使用梯度下降法需要設計乙個代價函式:

以上是對於乙個(x,y)的代價函式,那麼當我們訓練很多個樣本時:

其中m是樣本數,左項是均方差,右項是正則化項,我們的目的就是經過多輪迭代讓代價函式最小。

單獨解釋一下對這個正則化項的理解:正則化項的目的是防止過擬合,過擬合的含義就是「太適合這些樣本了,導致不適合樣本之外的資料,泛化能力低」,正則化項首先增大了代價函式的值,因為我們訓練的目的是減小代價函式,所以我們自然就會經過多輪計算逐步減小規則化項,規則化項裡面是各個w的平方和,因為∑w=1,所以要想平方和變小,只有讓各個w的值盡量相同,這就需要做乙個折中,也就是w既要顯示出各項權重的不同,又要降低差別,因此這裡的λ的值就比較關鍵了,λ大了權重就都一樣了,小了就過擬合了,所以需要根據經驗給乙個合適的值。

首先我們為w和b初始化乙個很小的隨機值,然後分別對每個樣本經過上面說過的神經網路的計算方法,計算出y的預估值。

然後按照梯度下降法對w和b進行更新:

神經網路模型

神經網路往往不需要人為的構造資料特徵,因為乙個神經元就可以看做是原始資料的不同特徵的組合,在神經元數目足夠大,層數足夠多的情況下,是很容易準確的進行分類的.神經網路是由具有適應性的簡單單元組成的廣泛並行互連的網路,它的組織能夠模擬生物神經系統對真實世界物體所做出的互動反應 神經元模型 m p神經元模...

神經網路原理

一 應用情況 神經網路在機器學習中應用比較廣泛,比如函式逼近,模式識別,分類,特徵提取 影象處理等方面。二 原理 1 神經元模型 神經元模型基本上包括多個輸入 類似突觸 這些輸入分別被不同的權值相乘 收到的訊號強度不同 然後被乙個數學函式用來計算決定是否激發神經元。還有乙個函式 也許是不變,就是複製...

神經網路原理

神經網路是一種模擬人腦的神經網路以期能夠實現類人工智慧的機器學習技術。人腦中的神經網路是乙個非常複雜的組織。的大腦中估計有1000億個神經元。神經網路的發展背後的外在原因可以被總結為 更強的計算效能,更多的資料,以及更好的訓練方法。只有滿足這些條件時,神經網路的函式擬合能力才能得已體現。神經元分為三...