神經網路學習筆記

2021-08-07 05:07:46 字數 2958 閱讀 2042

sigmoid函式是一種常見的擠壓函式,其將較大範圍的輸入擠壓到(0

,1)區間內,其函式的表示式與形狀如下圖所示:

該函式常被用於分類模型,因為其具有很好的乙個特性f′

(x)=

f(x)

(1−f

(x))

。這個函式也會被用於下面的神經網路模型中做啟用函式。

生物的神經網路系統中,最簡單最基本的結構是神經元。每個神經元都是接受其他多個神經元傳入的訊號,然後將這些訊號彙總成總訊號,對比總訊號與閾值,如果超過閾值,則產生興奮訊號並輸出出去,如果低於閾值,則處於抑制狀態。mcculloch在2023年將該過程抽象成如下圖所示的簡單模型:

該模型稱為「m-p神經元模型」。通過上圖我們可以知道,當前神經元的輸入是來自其他n個神經元的帶權值的輸出,而啟用函式f(

)是乙個如下圖所示的階躍函式

我們可以看到當總的輸入小於閾值的時候,神經元處於抑制狀態,輸出為0,而當總輸入大於閾值,則神經元被啟用為興奮狀態,輸出1。但是我們發現該函式是不連續且不光滑的,使用起來會很不方便,因此在實際應用中常常使用sigmoid函式代替階躍函式做神經元的啟用函式。

感知器模型,是一種最簡單的神經網路模型結構,其網路結構包括輸入層與輸出層兩層,如下圖所示:

其為具有兩個輸入神經元,乙個輸出神經元的感知器模型。我們知道該模型是可以做與或非運算的。這是因為如果我們要做與或非運算,那麼對於輸入x1

,x2,總輸入為0,大於閾值,輸出1。這裡的啟用函式為階躍函式。這個通過下面的三幅圖也可以看得出來

但是我們可以發現,對於只有輸入層與輸出層的感知機模型,∑2

i=1ω

ixi−

θ是線性的,其只能對線性資料進行劃分,對於如下圖的異或模型,其實無法準確劃分的。

因為任何一條線都無法將(1

,0),

(0,1

)劃為一類。但如果是像圖(a)中那樣的兩層網路(這裡的兩層指的是隱層與輸出層,因為只有這兩層中的節點是有啟用函式的),在隱層有兩個節點,那麼此時就可以得到兩條線性函式,再在輸出節點彙總之後,將會得到由兩條直線圍成的乙個面,如圖(b)所示,這時就可以成功的將異或問題解決。

因此我們可以看到,隨著網路深度的增加,每一層節點個數的增加,都可以加強網路的表達能力,網路的複雜度越高,其表示能力就越強,也就可以表達更複雜的模型。

通過上面你的示例,我們也可以看到,對網路的學習其實主要是對網路中各個節點之間的連線權值和閾值的學習,即尋找最優的連線權值和閾值從而使得該模型可以達到最優(一般是區域性最優)。下面主要介紹多隱層前饋神經網路模型引數的學習方法。

對於多隱層前饋神經網路,其網路中相鄰兩層是全連線,而層內是沒有連線的,跨層之間也沒有連線,如下圖所示:

這裡是乙個單隱層的前饋神經網路,可以看到該網路的引數主要是輸入層與隱層之間的連線權值ωh

j為沿梯度方向的變化量。

假設隱層與輸出層的啟用函式均為sigmoid函式,該網路的輸出為yˆ

=(yˆ

1,..

.,yˆ

j,..

.,yˆ

l)。 這裡我們將隱層第

h 同樣的方法,我們可以求出所有其他引數的變化值,依據這些變化值不斷調整引數直至收斂。這種學習引數的方法稱為標準bp演算法(誤差逆向傳播演算法)。

我們可以看到,對於標準bp演算法,其每輸入乙個樣本值的時候,就會對引數進行一次更新,當我們的樣本量非常大的時候,這種學習方式會耗費大量的時間成本,速度非常的慢,而且對不同的樣本進行更新的時候很可能會出現效果抵消的問題。那麼我們想如果可以將所有的樣本都輸入一次後,再對引數進行更新,即將所有的樣本的誤差都計算一遍,並將這些誤差累積,依據累積的誤差來對引數進行更新,這樣就會快很多。這種方法是可行的,以這種思想為基礎的bp演算法稱為累積bp演算法。累積bp演算法的更新頻率會低很多,但是該演算法在下降到一定程度之後,其再下降的速度就會慢很多。因此對於大部分的演算法,其都是首先使用累積梯度下降更新引數,在下降到一定程度之後,再用標準bp演算法進行更新。

但是使用bp演算法,常常會遇到過擬合的問題,對於過擬合問題,通常採用早停正則化的兩種方式來緩解。其中早停方法比較簡單,其就是講資料集分為訓練集和驗證集兩部分,當訓練集的誤差降低但驗證集的誤差公升高的時候,就結束訓練。而正則化方法則是在計算誤差的時候加上乙個正則項

μ在增加連線權值和閾值這些引數的平方項之後,使得網路更加傾向於比較小的引數,從而讓網路的輸出更加平滑,對過擬合有所緩解。

通過上面我們對梯度變化量的分析可以看到δω

hj=η

yˆj(

1−yˆ

j)(y

ˆj−y

j)bh

,同理可知,

神經網路學習筆記

隱含層數越多,越容易擬合複雜函式 為了擬合複雜函式需要的隱含節點數目,基本上隨著隱含層數目的增加呈現指數下降的趨勢,也就是說層數越多,神經網路所需要的隱含節點可以越少。層數越深,概念越抽象,需要背誦的知識點 神經網路的隱含節點 就越少。但是,層數越多,容易出現過擬合以及引數難以除錯以及梯度瀰散的問題...

神經網路 學習筆記

神經網路是用來解決分類問題的模型。他與感知機有著緊密的聯絡。神經網路中,神經元接收到的總輸入將與神經元的閾值進行比較,然後通過 啟用函式 處理以產生神經元的輸出。最理想的啟用函式是階躍函式,但是他不連續,不光滑,所以,採用sigmoid函式來進行替代。感知機只有輸出層神經元進行啟用函式處理,即只擁有...

神經網路學習筆記

python神經網路程式設計 這本書只認真讀完了第一章,大概80頁內容,就是簡單介紹了下三層前饋神經網路,以及推導了利用梯度下降法來反向傳播誤差,更新權重,即誤逆差傳播法 error backpropagation,bp 有點基礎的,這本書還是不推薦買了,完全可以直接閱讀 深度學習 周志華 第5章神...