神經網路學習札記

2021-10-08 21:21:28 字數 3381 閱讀 5014

卷積神經網路

迴圈神經網路

以下為本人學習過程中的筆記,剛開始接觸,內容會有些繁瑣。

若同樣是入門,可以參考 的內容,較為易懂。

深度學習中,每乙個神經元接受輸入x,通過帶權重w的連線進行傳遞,將總輸入訊號與神經元的閾值進行比較,最後通過啟用函式處理確定是否啟用,並將啟用後的計算結果y輸出。而我們需要訓練權重w。

輸入層(乙個)、隱藏層(多個)、輸出層(乙個)

:輸出層也可有多個。

啟用函式,用來判斷我們所計算的資訊,是否達到了往後傳輸的條件。

啟用函式都是非線性的,這樣可增加神經網路模型泛化的特性。常見的啟用函式有以下幾種:

正向傳播是輸入x,通過一系列的網路計算,得到**值y的過程。

對於乙個神經網路來說,把輸入特徵a[0

]a^a[0]

這個輸入值就是我們的輸入x

xx,放入第一層並計算第一層的啟用函式,用a[1

]a^a[1]

表示,本層中訓練的結果用w[1

]w^w[1]

和b [l

]b^b[l]

來表示。

這兩個值和計算的結果z[1

]z^z[1]

值都需要進行快取,而計算的結果還需要通過啟用函式生成啟用後的a[1

]a^a[1]

,即第一層的輸出值,這個值會作為第二層的輸入傳到第二層。

第二層裡,需要用到w[2

]w^w[2]

和b [2

]b^b[2]

,計算結果為z[2

]z^z[2]

,第二層的啟用函式a[2

]a^a[2]

。 後面幾層以此類推,直到最後算出了a[l

]a^a[l]

,第l

ll層的最終輸出值y

^\hat

y^​,即我們網路的**值。

反向傳播是正向傳播的反向迭代。通過反向計算梯度,優化w和b。

參考學習內容

rnn 的本質是:擁有記憶的能力,並且會根據這些記憶的內容來進行推斷。因此,他的輸出是依賴於當前的輸入和記憶。

rnn在許多nlp任務中取得成功。最常用的rnn型別是lstm。lstm與rnn基本相同,只是採用不同的方式來計算隱藏狀態。

將網路的輸出儲存在乙個記憶單元中,這個記憶單元和下一次的輸入一起進入神經網路中。下圖是乙個簡單的迴圈神經網路在輸入時的結構示意圖。

pytorch中使用nn.rnn類來搭建基於序列的rnn,其中建構函式有以下幾個引數,其中主要引數是前兩個,其餘引數可以使用預設值:

rnn中多了乙個hidden_state來儲存以前的狀態,rnn有乙個公式如下:

xt​ 是我們當前狀態的輸入值,h(t

−1)h_

h(t−1)

​ 就是hidden_state。 整個網路要訓練的部分就是 wih

w_wi

h​當前狀態輸入值的權重,whh

w_wh

h​h (t

−1)h_

h(t−1)

​是上乙個狀態的權重還有這兩個輸入偏置值。tanh為啟用函式。這個過程進行n次,n為序列設定的個數。

解決了短期依賴的問題,並且通過設計避免長期依賴問題。

lstm有4層:

lstm = torch.nn.lstm(10,

20,2)

input

= torch.randn(5,

3,10)

h0 = torch.randn(2,

3,20)

c0 = torch.randn(2,

3,20)

# 輸入網路

output, hn = lstm(

input

,(h0, c0)

)print

(output.size(

), hn[0]

.size(

), hn[1]

.size())

# torch.size([5, 3, 20]) torch.size([2, 3, 20]) torch.size([2, 3, 20])

gru中,網路不再額外給出記憶狀態,將輸出結果作為記憶狀態不斷向後迴圈傳遞,網路的輸入和輸出都變得特別簡單。

gru = torch.nn.gru(10,

20,2)

input

= torch.randn(5,

3,10)

h_0 = torch.randn(2,

3,20)

output, hn = gru(

input

, h_0)

print

(output.size(

), hn.size())

# torch.size([5, 3, 20]) torch.size([2, 3, 20])

向後傳播過程:

rnn在nlp中應用火熱。

用不同的特徵來對各個詞彙進行表徵,相對於不同的特徵,不同的單詞均有不同的值,這便是詞嵌入。(具體內容,之後深入了解補充)

詞嵌入不僅對不同單詞實現了特徵化的表示,還能通過計算詞與詞之間的相似度,實際上是在多維空間中,尋找詞向量之間各個維度的距離相似度,我們就可以實現模擬推理,比如說夏天和熱,冬天和冷,都是有關聯關係的。

# 表示有多少詞(10個),向量維度(大小為3的張量),的嵌入模組

embedding = torch.nn.embedding(10,

3)# 2個樣品,各4個指標

input

= torch.longtensor([[

1,2,

4,5]

,[4,

3,2,

9]])

output = embedding(

input

)print

(output.size(

))

神經網路學習之 Hopfield神經網路

1982年,美國加州理工學院的優秀物理學家hopfield提出了hopfield神經網路。hopfield神經網路引用了物理力學的分析方法,把網路作為一種動態系統並研究這種網路動態系統的穩定性。dhnn 離散型hopfield神經網路 這是一種單層全反饋網路,共有n個神經元。其特點是任一神經元的輸出...

神經網路學習

深度學習入門部落格 cnn 卷積神經網路 rnn 迴圈神經網路 dnn 深度神經網路 概念區分理解 deep learning 的概念源於人工神經網路的研究。含多隱層的多層感知器就是一種深度學習結構。深度學習通過組合低層特徵形成更加抽象的高層表示屬性類別或特徵,以發現資料的分布式特徵表示。深度學習是...

神經網路學習

1 神經元模型 神經網路最廣泛的定義 神經網路是由具有適應性的簡單單元組成的廣泛並行互聯的網路,他的組織能夠模擬生物神經系統對真實世界物體所作出的互動反應。神經網路中最基本的成分是神經元模型,即上述定義中的 簡單單元 在生物神經網路中,神經元之間相連,當某乙個 興奮 時,就會向相連的神經元傳送化學物...