最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

54 循環(huán)神經(jīng)網(wǎng)絡(luò) RNN【動手學(xué)深度學(xué)習v2】

2022-08-23 14:10 作者:如果我是泡橘子  | 我要投稿

循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)

  • recurrent neural networks,RNNs
  • 對于序列模型的神經(jīng)網(wǎng)絡(luò)



回顧

潛變量自回歸模型

使用潛變量 ht 總結(jié)過去的信息

  • n 元語法模型中,單詞 xt 在時間步 t 的條件概率僅取決于前面 n-1 個單詞
  • xt 是和 ht 與 x(t-1) 相關(guān)的
  • t 時刻的潛變量 ht 是和 h(t-1) 和 x(t-1) 相關(guān)的

隱藏層和隱狀態(tài)的區(qū)別:

  • 隱藏層是在從輸入到輸出的路徑上(以觀測角度來理解)的隱藏的層
  • 隱狀態(tài)是在給定步驟所做的任何事情(以技術(shù)角度來定義)的輸入,并且這些狀態(tài)只能通過先前時間步的數(shù)據(jù)來計算





循環(huán)神經(jīng)網(wǎng)絡(luò)是具有隱狀態(tài)的神經(jīng)網(wǎng)絡(luò)

假設(shè)有一個觀察 x 和一個隱變量 ht ,根據(jù)ht就能夠生成輸出 ot

  • t 時刻的輸出 ot 是根據(jù) ht 輸出的,ht 使用的是 x(t-1) 中的內(nèi)容
  • 在計算損失的時候,是比較 ot 和 xt 之間的損失
  • xt 是用來更新 ht 使得觀察 xt 向后移動
  • 捕獲并保留序列直到當前時間步的歷史信息(如當前時間步下神經(jīng)網(wǎng)絡(luò)的狀態(tài)或記憶)的隱藏變量被稱為隱狀態(tài)(hidden state)



循環(huán)神經(jīng)網(wǎng)絡(luò)在三個相鄰時間步的計算邏輯

  • 首先拼接當前時間步 t 的輸入 Xt 和前一時間步 t-1 的隱狀態(tài) H(t-1)
  • 然后將拼接的結(jié)果送入帶有激活函數(shù) Φ 的全連接層
  • 全連接層的輸出就是當前時間步 t 的隱狀態(tài) Ht



循環(huán)神經(jīng)網(wǎng)絡(luò)與 MLP(多層感知機)的區(qū)別就在于多了一個時間軸,假設(shè)沒有這個時間關(guān)系的話,循環(huán)神經(jīng)網(wǎng)絡(luò)就會退化成為 MLP

  • 保存了前一個時間步的隱藏狀態(tài) h(t-1)
  • 引入了一個新的權(quán)重參數(shù) Whh 來描述如何在當前時間步中使用前一個時間步的隱藏變量

?
RNN P1 - 07:05
?

  • 假設(shè) ht 是一個隱藏狀態(tài),Φ 是激活函數(shù)。Whx 是 MLP 隱層的權(quán)重,x(t-1) 是 t-1 時刻的輸入,bh 是對應(yīng)的偏移量
  • ht 不僅和 x 相關(guān),還和前一時刻的 h 相關(guān)
  • 輸出是由隱藏狀態(tài)乘上權(quán)重再加上一個偏移量得到的

所以,

1、循環(huán)神經(jīng)網(wǎng)絡(luò)就是在 MLP 的基礎(chǔ)上加了一項 Whh*h(t-1) 使得它能夠于前一時刻的 h(t-1) 產(chǎn)生關(guān)聯(lián),假設(shè)忽略掉時間軸的情況下,本身和 MLP 是沒有任何區(qū)別的

2、循環(huán)神經(jīng)網(wǎng)絡(luò)并沒有對 x 進行建模,所有 x 之間的時序信息都存儲在潛變量 h 當中

  • 實際上就相當于是將時序信息存儲在了 Whh 中

3、因為在當前時間步中,隱狀態(tài)使用的定義與前一個時間步中使用的定義相同,因此隱藏變量的計算是循環(huán)的,于是基于循環(huán)計算的隱狀態(tài)神經(jīng)網(wǎng)絡(luò)被命名為循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network),循環(huán)神經(jīng)網(wǎng)絡(luò)中執(zhí)行隱藏變量計算的層稱為循環(huán)層(recurrent layer)





循環(huán)神經(jīng)網(wǎng)絡(luò)在語言模型中的使用

基于循環(huán)神經(jīng)網(wǎng)絡(luò)的字符級語言模型

  • 語言模型的目標是根據(jù)過去的的和當前的詞元預(yù)測下一個詞元(因此需要將原始序列移位一個詞元作為標簽)
  • 為簡化訓(xùn)練,這里所使用的是字符級語言模型,將文本詞元化為字符而不是單詞



訓(xùn)練步驟

輸入序列和標簽分別是“machine”和“achine”

在訓(xùn)練過程中,對每個時間步的輸出層的輸出進行 softmax 操作,然后利用交叉熵損失計算模型輸出和標簽之間的誤差

  • 以上圖中第3個時間步的輸出 O3 為例,由于隱藏層中隱狀態(tài)的循環(huán)計算,O3 由文本序列 “m” 、“a” 和 “c” 確定
  • 由于訓(xùn)練數(shù)據(jù)中輸入文本序列的下一個字符是 “h” ,因此第三個時間步的損失將取決于下一個字符的概率分布,而下一個字符是基于特征序列 “m”、“a”、“c” 和這個時間步的標簽 “h” 生成的



語言模型中,假設(shè)當前輸入是“你”的話,那么會更新隱變量,然后預(yù)測“好”,接下來觀測到了“好”,然后更新隱變量,再輸出逗號

  • 輸出是用來匹配觀察的,但是在生成 t 時刻的輸出 ot 時,不能夠看到 t 時刻的觀察 xt ,也就是說當前時刻的輸出是用來預(yù)測當前時刻的觀察,但是輸出發(fā)生在觀察之前





困惑度(perplexity)

語言模型實際上就是一個分類模型,假設(shè)字典大小是 m 的話,語言模型實際上就是 m 類的分類問題,每次預(yù)測下一個詞的時候,實際上就是在預(yù)測下一個詞的類別

衡量分類問題的好壞可以用交叉熵,因此,衡量一個語言模型的好壞可以用平均交叉熵

  • n:序列長度,長為 n 的序列就相當于是做 n 次預(yù)測,也就是做了 n 次分類,因此衡量一個語言模型的好壞可以在交叉熵的基礎(chǔ)上取平均
  • p:語言模型的預(yù)測概率,由語言模型給出
  • xt:真實詞,在時間步 t 從該序列中觀察到的實際詞元

由于歷史原因 NLP 使用困惑度 exp(π) 來衡量,平均每次可能的選項,也就是對上面的平均交叉熵做指數(shù)運算

  • 為什么做指數(shù)運算?好處是做完指數(shù)運算之后結(jié)果會變大,數(shù)值變大之后就能夠很容易看出來改進所帶來的好處

困惑度的最好的理解是“下一個詞元的實際選擇數(shù)的調(diào)和平均數(shù)”,也可以認為是下一個詞的候選數(shù)量,這樣在直觀上更容易理解

  • 在最好的情況下,模型總是完美地估計標簽詞元的概率為1。 在這種情況下,模型的困惑度為1
  • 在最壞的情況下,模型總是預(yù)測標簽詞元的概率為0。 在這種情況下,困惑度是正無窮大,表示根本預(yù)測不出下一個詞到底是什么
  • 在基線上,該模型的預(yù)測是詞表的所有可用詞元上的均勻分布。 在這種情況下,困惑度等于詞表中唯一詞元的數(shù)量。 事實上,如果在沒有任何壓縮的情況下存儲序列, 這將是我們能做的最好的編碼方式。 因此,這種方式提供了一個重要的上限, 而任何實際模型都必須超越這個上限





梯度裁剪

迭代中計算這 T 個時間步上的梯度,在反向傳播過程中產(chǎn)生長度為 O(T) 的矩陣乘法鏈,導(dǎo)致數(shù)值不穩(wěn)定

  • 一連串的矩陣相乘的話會導(dǎo)致結(jié)果要么很小,要么很大:如果結(jié)果很小的話可能會導(dǎo)致訓(xùn)練不動;如果結(jié)果很大的話,可能會發(fā)生梯度爆炸導(dǎo)致結(jié)果出錯

梯度裁剪能夠有效預(yù)防梯度爆炸

  • 如果梯度長度超過 θ ,那么拖影回長度 θ
  • g:所有層上的梯度全部放在向量 g 當中
  • 假設(shè) g 的長度 L 太長導(dǎo)致超過了 θ ,那么就需要將長度 L 降回到 θ ,也就是說只要是 g 的長度是正常的就不做任何操作,如果 g 的長度超出了給定的范圍,就將其裁剪回給定的范圍中,這樣就能夠有效地避免梯度爆炸





更多應(yīng)用

一對一

  • 也就是最簡單的 MLP :給定一個樣本,然后輸出一個標簽

一對多

  • 文本生成:給定一個詞,然后生成一個一個的詞

多對一

  • 文本分類:給定一個序列,在最后的時刻輸出,得到具體的分類

多對多

  • 問答、機器翻譯:給定一個序列,先不輸出,然后在序列輸入完畢之后輸出答案
  • Tag 生成:給定一個序列,然后輸出每個詞的 Tag ,比如輸入一個句子,然后輸出句子中每個詞是名詞、動詞還是形容詞等





總結(jié)


1、對隱藏狀態(tài)使用循環(huán)計算的神經(jīng)網(wǎng)絡(luò)稱為循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN),循環(huán)神經(jīng)網(wǎng)絡(luò)的輸出取決于當下輸入和前一時間的隱變量

  • 循環(huán)神經(jīng)網(wǎng)絡(luò)的隱藏狀態(tài)可以捕獲當前時間步序列的歷史信息
  • 隱變量是用來存儲歷史信息和下一個歷史信息的轉(zhuǎn)換規(guī)則,所以在拿到過去的輸入和當前的隱藏狀態(tài)就能夠預(yù)測當前的輸出
  • Whh 擁有一定的時序預(yù)測目的

2、應(yīng)用到語言模型中時,循環(huán)神經(jīng)網(wǎng)絡(luò)根據(jù)當前詞預(yù)測下一次時刻詞

  • 根據(jù)當前的輸入更新當前時刻的隱藏狀態(tài)就能夠預(yù)測下一個時刻的輸出
  • RNN 是一個隱變量模型,隱變量是一個向量

3、通常使用困惑度來衡量語言模型的好壞

  • 取平均值,然后進行指數(shù)操作,就得到了困惑度
  • 困惑度實際上衡量了語言模型對下一個詞的預(yù)測所選取的候選詞數(shù)量,這個候選詞的數(shù)量越少越好

4、為了解決梯度爆炸的問題,RNN 一般是需要進行梯度裁剪的,這也是最簡單的方法

5、循環(huán)神經(jīng)網(wǎng)絡(luò)模型的參數(shù)數(shù)量不會隨著時間步的增加而增加

6、使用循環(huán)神經(jīng)網(wǎng)絡(luò)可以創(chuàng)建字符級語言模型





Q&A

  • 1、循環(huán)神經(jīng)網(wǎng)絡(luò)與遞歸神經(jīng)網(wǎng)絡(luò)是一個東西嗎?如果不是,有什么區(qū)別呢?
  • ?
    QA P2 - 00:00
    ?


  • 2、前面講的目標檢測現(xiàn)在發(fā)展已經(jīng)比較成熟了,一個人做的話,也不是很容易發(fā) paper ,現(xiàn)在講的自然語言處理方面,有哪些方向適合一個人做?。?/strong>
  • ?
    QA P2 - 01:04
    ?


  • 3、中文需不需要分詞,可否直接基于字來做?
  • ?
    QA P2 - 04:04
    ?


  • 4、現(xiàn)在有沒有什么 voice 和 image 融合算法適合落地?
  • ?
    QA P2 - 05:05
    ?


  • 5、請問老師,中文文本語調(diào)用什么算法做比較好?除了詞頻統(tǒng)計之類的
  • ?
    QA P2 - 06:39
    ?


  • 6、有沒有模型既能處理時序信息,同時還能做目標檢測?比如想追蹤一個視頻里的目標,應(yīng)該怎么做?
  • ?
    QA P2 - 07:20
    ?





----end----

其他參考

1、《動手學(xué)深度學(xué)習》,PPT,https://courses.d2l.ai/zh-v2/assets/pdfs/part-3_3.pdf

2、《動手學(xué)深度學(xué)習》,教材,https://zh-v2.d2l.ai/chapter_recurrent-neural-networks/rnn.html

54 循環(huán)神經(jīng)網(wǎng)絡(luò) RNN【動手學(xué)深度學(xué)習v2】的評論 (共 條)

使用qq登录你需要登录后才可以评论。
夹江县| 呼伦贝尔市| 博野县| 鄂州市| 邯郸县| 巴马| 黄龙县| 兴化市| 宿松县| 乐亭县| 湘潭县| 赣榆县| 竹山县| 如皋市| 鄱阳县| 新丰县| 和龙市| 石城县| 昂仁县| 南江县| 政和县| 芜湖市| 山丹县| 驻马店市| 伊春市| 凌海市| 丁青县| 崇仁县| 永春县| 舟山市| 普兰店市| 宜宾县| 吉林省| 阿瓦提县| 韶山市| 临武县| 奇台县| 滨海县| 英超| 文登市| 凯里市|