日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习笔记 RNN初探 LSTM

發布時間:2025/4/5 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习笔记 RNN初探 LSTM 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1 引入

一個input的屬性 會受到其前后文的影響——>神經網絡需要記憶

這里“Taipei”的屬性(destination還是source)受到前面的動詞“arrive”和“leave”的影響。所以為了更好地預測"Taipei",神經網絡必須記住前面的動詞時arrive還是leave。

2 圖示RNN

每一次隱藏層的輸出將被保存起來,作為下一時間片的另外一個輸入。

2.1 實例

假設圖上所有的箭頭表示的運算都是求和運算。一開始我們沒有歷史記憶,隱藏層狀態為0。那么隱藏層的兩個輸出都是1+1=2(這個2被儲存起來),然后輸出層的輸出都是2+2=4。

我們將此時的input(1,1)和上一時刻的隱藏層輸出(2,2)一起作為本輪的輸入,那么隱藏層狀態分別為2+2+1+1=6(存起來),輸出的內容為6+6=12

之后的同理。RNN的輸出結果和順序有關,順序不同,最終的output也會不同

RNN相當于同樣的一個network,被不斷地使用。隱藏層狀態h在各個時間片內傳遞。

2.2 RNN計算圖

?2.2.1 many to many

2.2.2? many to one

只有最有一個有輸出

?

?2.2.3 one to many

只有第一個輸入是x+hidden state,之后的都是只有hidden state作為輸入

?2.2.4 seq2seq

many to one + one to many

2.3 RNN的優劣

2.3.1 優勢

  • 可以處理任意長度的input
  • 模型參數的大小不會隨著input尺寸而增加
  • 時刻t的計算可以使用很多時間片之前的信息

2.3.2 劣勢

  • 計算較慢
  • 無法并行操作
  • 很難處理很多很多步之前的信息

2.4 RNN language model的訓練

2.4.1 損失函數

比如我們對每個時間步t,計算輸出分布

?我們用交叉熵來計算損失函數‘

(因為實際的是one-hot 編碼,所以只會有ground truth的的預測概率)

整個訓練集的損失函數是整體平均:

2.4.2? 語言模型的perplexity?

?

?2.4.3?圖示

?

?

?

?

?但是,如果sequence很長的話,我們計算整個預料的loss是很昂貴的,所以在實際問題中,我們一般固定一個大小的sequence length(類似于mini-batch SGD)

2.5 RNN的反向傳播(BPTT)

?這里是因為RNN中參數共享,所以鏈式法則中的一項為1(紫色框起來的部分),可以去掉?

3?word2vector

3.1?one hot encoding

由于詞匯很多,所以我們需要一個表示“other”這一層意思的one hot encoding。

3.2 n-gram

將每個單詞分為多個小的連續塊,如果單詞里面出現了這個連續塊,對應的這一位設置為1。

上面這個例子為3-gram,就是因為apple里面出現了"app","ppl","ple",所以這三個3-gram對應的位為1,其他的為0。

那么這樣就只需要一個26^3的一維向量,比one-hot節省空間。

4 Elman Network & Jordan Network

二者的區別在于,傳遞給下一時間片的memory是隱藏層還是輸出層的output。

5 Bidirectional RNN

兩個方向隱藏層的信息合并起來,喂給下一個時間片,然后得到輸出。

雙向 RNN 僅適用于可以訪問整個輸入序列的情況。 它們不適用于語言建模,因為未來的單詞不可訪問。

6 RNN Gradient Flow

?我們看一下,如果要反向傳播的話,誤差是一個什么樣的流向

但如果RNN對應的這個W矩陣設置不當的話,可能會出現梯度爆炸/梯度消失的問題:?

對于梯度爆炸的情況,我們可以設置一個梯度的上界:

而對于梯度消失,我們則需要改變RNN的結構了(模型并沒有看到足夠的信息,并沒有充分學習數據的特征)

?下面的LSTM,就是一種改進:

7 LSTM

lstm有四個輸入(神經網絡的輸入,輸入門信號,遺忘門信號,輸出門信號)

注:LSTM不能保證它一定沒有梯度下降/梯度消失,但是它確實提供了一個更好地學習長距離關聯性的方法

7.1 原理

z是神經網絡的輸入,zi是輸入門信號(z經過線性變換而來)。zi通過激活函數(比如sigmoid)得到一個0~1的值f(zi),表示我們的輸入信號保留多少比例g(z)*f(zi)

同理,zf是遺忘門的信號,他表示我們的memory保留的比例c*f(zf)

將這一輪的輸入和之前的memory加總:c'=g(z)*f(zi)+c*f(zf)

對c'進行一層線性變換,得到h(c')

zo是輸出門,控制我們輸出的比例

7.2 舉例

假設參數【weight+bias】已經學習完畢

1,先考慮第一個輸入(3,1,0,1)[最后一個對應的是wx+b的b]。因為輸入和三個門的權重已經有了,我們就通過權重計算各個門的比例,得到輸入門和遺忘門為1,輸出們為0。又輸入為3,所以按下圖方式更新權重:

然后是(4,1,0,1)

(2,0,0,1),此時輸入門關閉,那么記憶部分本輪不更新。

(1,0,1,1),此時輸出門打開,記憶存儲的7被輸出

(3,-1,0,1)

7.3 幾點補充

李宏毅教授之后的可見又補充了一些細節

7.3.1 傳遞狀態

????????相比RNN只有一個傳遞狀態 ?,LSTM有兩個傳輸狀態,一個??(cell state),和一個??(hidden state)。(Tips:RNN中的??對于LSTM中的??)

????????其中對于傳遞下去的改變得很慢,通常輸出的??是上一個狀態傳過來的??加上一些數值。

?????????而則在不同節點下往往會有很大的區別。?

7.3.2 門信號的處理

使用LSTM的當前輸入和上一個狀態傳遞下來的??拼接,然后得到三個門信號+輸入信號z

8 RNN的缺陷

8.1 RNN不太容易訓練

8.2?rnn的loss function會很曲折

假設圖中最右方的橙色點表示初始值,由于剛開始error surface比較flat,gradient也比較小,learning rate比較大;經過多次的訓練后,如果這時候剛好到達懸崖和平原的交接處,這一次的gradient就超級大,再加上之前很大的learning rate,loss可能就會直接‘飛’出去了。

改進措施是clipping,當gradient大于15的時候,就看做是15,不再繼續增加,這時gradient的移動方向就是上圖中的藍色虛線部分,就不會再飛出去了,仍然可以繼續做RNN training。

8.2.1 可能的原因?

8.2.2 解決方案

LSTM可以把一些很平坦的地方拿掉,使error surface不再有那么平坦的地方;可以解決gradient vanishing問題,但并不能解決gradient exploding的問題,有的地方還是會特別崎嶇,因此在使用LSTM時,需要設置很小的learning rate

LSTM可以解決gradient vanishing的原因:如果forget gate是打開的狀態,一旦weight可以影響memory里面的值,這個影響就會永遠存在,每次都會有新的東西加進來,不會被直接覆蓋掉,除非forget gate打算把memory cell的值忘掉;但RNN是直接覆蓋,前面的影響就消失了。(換句話說,RNN是直接把本輪hidden_layer的輸出作為memory的,但是LSTM在此基礎上,還融合了之前的memory,相當于一個“慣性”)

9 RNN應用

9.1 情感分析?sentiment analysis

輸入一些vector組成的sequence,輸出情感。

這個sequence最后一個vector的隱藏層接上輸出,因為這時候整個句子都看到了。

9.2?語音識別 speech recognition

給一段語音,每隔一段時間采一個樣,辨識它聽到的聲音。

9.3?機器翻譯 machine translation

首先先讀入這個完整的sequence,然后讀完sequence之后,輸出第一個翻譯的word“機”。

根據上一個時間點的memory和上一個時間點的輸出“機”,RNN就可以學習到輸出為“器”。

如果不停止的話,rnn可能會一直生成下去,因此要加入一個“斷“字,停止生成。

9.4?attention-based model

首先機器會讀取一堆sequence,作為它的memory。

然后我們輸入一些東西(比如一句問句什么的),input經過一些神經網路后,生成一個reading head controller,告訴我們應該去machine memory的哪里尋找到我們的答案,我們把reading head對應的memory提取出來,再經過神經網路,生成output。

機器閱讀理解machine reading comprehension就是這個原理。

當然可以多次生成reading head controller,提取多次信息。

藍色表示每一個hop,我們reading head controller指向的是誰。

總結

以上是生活随笔為你收集整理的机器学习笔记 RNN初探 LSTM的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。