機器學習之神經網路

2021-07-31 10:59:37 字數 2934 閱讀 8778

機器學習是一門致力於研究如何通過計算的手段,利用經驗來改善系統自身的效能。經驗通常以資料的形式存在,因此機器學習所研究的主要內容是關於在計算機上從資料中產生「模型」的演算法,即「學習演算法」。有了學習演算法,將經驗資料提供給它,它就能基於這些資料產生模型;當面對新情況時,模型會給我們提供相應的判斷。一般的「模型」是指全域性性結果,而用「模式」指區域性性結果。

1.神經元模型

神經網路的定義是指:由具有適應性的簡單單元組成的並行互聯的網路。它的組織能夠模擬生物神經系統對真實世界物體所做的互動反應。我們在機器學習中討論神經網路是指「神經網路學習」,或者說是機器學習與神經網路這兩個學科領域交叉部分。

2023年,mcculloch and pitts 提出的「m-p神經元模型」如下:

上述模型中,神經元接收到來自n個其他神經元傳遞過來的輸入訊號,這些輸入訊號通過帶權重的連線進行傳遞,神經元接收到的總輸入值將與神經元的閾值進行比較,然後通過「啟用函式」處理以產生神經元的輸出。

2.感知機與多層網路

感知機(perceptron)由兩層神經元組成,如下圖所示:

輸入層接收外界輸入訊號後傳遞給輸出層,輸出層是m-p神經元,亦稱為「閾值邏輯單元」,感知機能夠容易實現邏輯與、或、非運算。

更一般地,給定訓練資料集,權重w

i(i=1,2,…,n)以及閾值

θ 可通過學習得到。閾值

θ 可以看作乙個固定輸入為-1.0的啞節點所對應的連線權重w

n+1,這樣權重和閾值的學習就可以統一為權重的學習。

需注意的是,感知機只有輸出層神經元進行啟用函式處理,即只擁有一層神經元,其學習能力非常有限。可以證明,若兩類模式是線性可分的,即存在乙個線性超平面能將他們分開,則感知機學習過程一定是收斂而求得適當的權向量w=(w

1,w2,…,w

n+1);否則感知機學習過程將會發生振盪,w難以穩定下來,不能求得合適解。

要解決非線性可分問題,需考慮多層神經元。一般常見的神經網路結構如下,每一層神經元與下一層神經元全互連,同層神經元之間不連線,也不存在跨層連線。這種神經網路結構稱為「多層前饋神經網路」。其中input layer 神經元接收外界輸入,隱層與輸出層神經元對訊號進行加工,最終結果由輸出層神經元輸出。神經網路學習過程中,就是根據訓練資料來調整神經元之間的「連線權」以及每個功能神經元的閾值,換言之,神經網路學到的東西,蘊含在連線權和閾值之中。

多層前饋神經網路(單隱層前饋網路)

3.誤差逆傳播演算法

誤差逆傳播(error backpropagation,簡稱bp)演算法是一種強大的神經網路學習演算法。值得指出的是,bp演算法不僅可用於多層前饋神經網路,還可以用於其他型別的神經網路,但是通常所說的bp網路是指bp演算法訓練的多層前饋神經網路,結構如下。

上圖給出了乙個擁有

d個輸入神經元、

l個輸出神經元、

q個隱層神經元的多層前饋網路。即輸入示例由

d個屬性描述,輸出

l維實值向量。另外可以看出網路中有(

d+l+1)

q+l個引數需確定:輸入層到隱層的d×

q 個權值、隱層到輸出層的q×

l 個權值、

q個隱層神經元的閾值、

l個輸出層神經元的閾值。

bp演算法基於梯度下降策略(gradient descent),以目標的負梯度方向對引數進行調整,對網路在(x

k,yk)上的均方誤差e

k=1/2∑l

n=1(

y^kj

−ykj

)2,給定學習速率

η ,有: δw

hj=−

η∂ek

∂whj

注意到 wh

j 先影響到第j個輸出神經元的輸入值βj

, 再影響到其輸出值y^

kj,然後影響到ek

。具體推理如下:

可見學習率

η 控制著演算法每一輪迭代中的更新步長,太大則容易振盪,太小會導致收斂速度慢,因此會選擇每一層學習率因子ηn

不同,n表示神經網路的層數。

bp演算法的工作流程如下:先將輸入示例提供給輸入神經元,然後逐層將訊號前傳,直到產生輸出層的結果;然後計算輸出層的誤差,再將誤差逆向傳播至隱層神經元,最後根絕隱層神經元的誤差來對連線權和閾值進行調整,該迭代過程迴圈進行,直到達到某些停止條件為止,例如訓練誤差已經達到乙個很小的值。

「標準bp演算法」每次針對乙個訓練樣例更新連線權和閾值,如果類似的推導出基於累積誤差最小化的更新規則,就得到累積誤差逆傳播演算法。累計誤差逆傳播演算法直接針對累積誤差最小化,它在讀取整個訓練集一遍後才對引數進行更新,其引數更新的頻率相對標準bp低很多。但是在很多任務中,累積誤差下降到一定程度後,進一步下降會非常緩慢,這時標準bp往往會更快獲得較好的解

事實上,設定乙個包含足夠多神經元的隱層,多層前饋網路就能以任意精度逼近任意複雜度的連續函式,一般通過試錯法(trial-by-error)解決隱層神經元個數問題。與此同時,bp神經網路強大的表示能力也會帶來過擬合問題,導致訓練誤差持續下降,測試誤差上公升。目前主要通過「早停」策略(將資料分成訓練和測試兩部分,當訓練集誤差降低但測試集誤差公升高則停止訓練)和正則化(在誤差目標函式中增加乙個用於描述網路複雜度的部分)。詳細試錯針對實際應用而來,具體請參考更多的文獻,這裡不做過多贅述。

機器學習之神經網路NN

神經網路 neural network 以人腦中的神經網路為啟發而產生的,最著名對的演算法是backpropagation bp 演算法。可用來解決分類問題,也可用來解決回歸問題 詳情見前言 多層向前神經網路中使用了bp演算法 多層向前神經網路的組成,每一層由單元組成 圖中小圈圈 輸入層 由訓練集的...

python機器學習之神經網路 三

來自 前面兩篇文章都是參考書本神經網路的原理,一步步寫的 這篇博文裡主要學習了如何使用neurolab庫中的函式來實現神經網路的演算法。首先介紹一下neurolab庫的配置 neurolab需要採用python安裝第三方軟體包的方式進行安裝,這裡介紹一種安裝方式 1 進入cmd視窗 2 進入解壓檔案...

機器學習之 神經網路演算法原理

神經網路 好了,前面花了不少篇幅來介紹啟用函式中那個暗藏玄機的e,下面可以正式介紹神經元的網路形式了。下圖是幾種比較常見的網路形式 前面講過,使用梯度下降的方法,要不斷的修改k b兩個引數值,使最終的誤差達到最小。神經網路可不只k b兩個引數,事實上,網路的每條連線線上都有乙個權重引數,如何有效的修...