【NLP面試】簡述RNN、LSTM、NLP

1.RNN:處理序列數據

循環神經網絡是一類以序列數據爲輸入,在序列的演進方向進行遞歸,且所有節點(循環單元)按鏈式連接形成閉合迴路遞歸神經網絡

RNN的獨特價值: 它能有效的處理序列數據。因爲序列中,前面的輸入也會影響到後面的輸出。RNN相當於有了記憶功能

缺點: 嚴重的短期記憶問題,長期的數據影響很小(哪怕是重要的信息)。越晚的輸入影響越大,越早的輸入影響越小。

變種算法LSTM和GRU等的特點:

  • 長期信息可以有效的保留
  • 挑選重要信息保留,不重要的信息會選擇“遺忘”

1.1.爲什麼需要RNN?

 CNN和普通的算法大都是輸入和輸出的一一對應,也就是一個輸入得到一個輸出不同的輸入之間是沒有聯繫的

序列數據:一串相互依賴的數據流。(考慮詞序)

 對於序列數據,因爲要考慮詞之間的依賴性、順序,則一個輸入就不夠了。因此,需要RNN。

1.2.基本原理

RNN跟傳統神經網絡最大的區別:將前一次的輸出結果,帶到下一次的隱藏層中,一起訓練
在這裏插入圖片描述
 下圖中,輸入 “time” 的時候,前面 “what” 的輸出也產生了影響(隱藏層中有一半是黑色的)。以此類推,前面所有的輸入都對未來的輸出產生了影響,大家可以看到圓形隱藏層中包含了前面所有的顏色。當我們判斷意圖的時候,只需要最後一層的輸出。

1.3.缺點

1.3.1.短期記憶、訓練成本大

 根據上圖的最後一個hidden layer(下圖):短期的記憶影響較大(如橙色區域),但是長期的記憶影響就很小(如黑色和綠色區域),這就是RNN存在的短期記憶問題。
 RNN有短期記憶問題,無法處理很長的輸入序列。而且訓練RNN需要投入極大的成本。
越晚的輸入影響越大,越早的輸入影響越小。
在這裏插入圖片描述

1.3.2.梯度消失/爆炸

BPTT:Back propogation through time

求導過程的鏈太長
 太長的求導鏈在以tanh爲激活函數(其導數值在0~1之間)的BPTT中,連乘就會使得最終的求導爲0,導致梯度消失。因此,t時刻已經學習不到t-N時刻的參數了
解決方法: LSTM、設計更好的初始參數、更換激活函數ReLU等。

1.4.LSTM:RNN的優化算法

長短期記憶(LSTM) 單位是遞歸神經網絡的單位。由LSTM單元組成的RNN常簡稱爲LSTM。
 公共LSTM單元由單元、輸入門、輸出門和忘記門組成。該單元記住任意時間間隔內的值,並且三個門控制進出單元的信息流

1.4.1.與RNN相比

  • 保留較長序列數據中的重要信息,忽略不重要的信息,解決了RNN短期記憶的問題
  • 處理了在訓練傳統RNN時,可能遇到的梯度爆炸和消失的問題。
    在這裏插入圖片描述
  • 所有遞歸神經網絡都具有神經網絡的鏈式重複模塊
    在標準的RNN中,這個重複模塊具有非常簡單的結構,例如只有單個tanh層。
    LSTM的鏈式結構重複模塊:不是一個單獨的神經網絡層,而是4個非常特殊的方式進行交互的層。而且多了一個控制長時記憶的Cell state(細胞狀態)
    在這裏插入圖片描述
    在這裏插入圖片描述

1.4.2.核心步驟(前向計算過程)

該小節的圖中:

  • 最上面CtC_t線的狀態代表了長時記憶
  • 最下面的hth_t線代表了工作記憶或短時記憶

門結構:用來控制增加或刪除信息的程度,一般由 sigmoid函數(值域 (0,1))和向量點乘來實現。
LSTM共包含3個門結構(遺忘門、輸入門、隱藏門),來控制細胞狀態和隱藏狀態。
在這裏插入圖片描述

  1. 遺忘門:確定什麼樣的信息要被丟棄。
    決定上一時刻細胞狀態Ct1C_{t−1}中的多少信息(由ft(0,1)f_t\in(0,1)控制)可以傳遞到當前時刻CtC_t中。
    在這裏插入圖片描述
  2. 輸入門:確定什麼樣的新信息被存放在細胞狀態中。
    控制當前輸入新生成的信息C~t\widetilde{C}_t中有多少信息(由it(0,1)i_t\in(0,1)控制)可以加入到細胞狀態CtC_t中。
  • tanh層:產生當前時刻新的信息
  • sigmoid層:控制有多少新信息可以傳遞給細胞狀態
    在這裏插入圖片描述
  1. 更新細胞狀態:丟棄需要丟棄的、保留需要保留的。
    基於遺忘門和輸入門的輸出,來更新細胞狀態。更新後的細胞狀態有兩部分構成:
    (1) 來自上一時刻、舊的細胞狀態信息Ct1C_{t−1},由遺忘門控制:ftCt1f_t*C_{t-1}
    (2) 當前輸入新生成的信息C~t\widetilde C_t,由輸入門控制:itC~ti_t*\widetilde C_t
    在這裏插入圖片描述
  2. 輸出門:基於更新的細胞狀態,輸出隱藏狀態hth_t
    sigmoid層:輸出門,用oto_t來控制有多少細胞狀態信息。
    tanh(Ct)tanh(C_t)將細胞狀態縮放至 (−1,1),使之作爲隱藏狀態的輸出hth_t
    在這裏插入圖片描述

1.4.3.反向傳播算法BPTT

詳見博客

1.4.4.python實現

  1. 某博主大神自己搭建的框架
  2. 某博主大神用keras搭建的框架

1.4.5.LSTM變體

1.4.5.1.在門上增加窺視孔

在這裏插入圖片描述

1.4.5.2.整合遺忘門和輸入門

在這裏插入圖片描述

1.5.GRU:LSTM 的變體

  • 將忘記門和輸入門合成爲更新門
  • 混合了細胞狀態和隱藏狀態
  • 其他一些改動…

最終的模型比標準的LSTM模型要簡單效果和LSTM差不多,但是參數少了1/3,不容易過擬合
在這裏插入圖片描述

1.6.應用

  • 文本生成:類似填空題,給出前後文,然後預測空格中的詞是什麼。
  • 機器翻譯:翻譯工作也是典型的序列問題,詞的順序直接影響了翻譯的結果。
  • 語音識別:根據輸入音頻判斷對應的文字是什麼。
  • 生成圖像描述:類似看圖說話,給一張圖,能夠描述出圖片中的內容。這個往往是 RNN和CNN的結合。
  • 視頻標記:將視頻分解爲圖片,然後用文字來描述圖片內容。

3.【科普】NLP

詳見博客
在這裏插入圖片描述

3.1.核心任務

3.1.1.自然語言理解 – NLU | NLI

希望機器像人一樣,具備正常人的語言理解能力。
難點:

  • 語言的多樣性
  • 語言的歧義性
  • 語言的魯棒性
  • 語言的知識依賴
  • 語言的上下文

詳見博文

3.1.2.自然語言生成 – NLG

將非語言格式的數據轉換成人類可以理解的語言格式,如文章、報告等。
步驟:

  • 內容確定 – Content Determination
  • 文本結構 – Text Structuring
  • 句子聚合 – Sentence Aggregation
  • 語法化 – Lexicalisation
  • 參考表達式生成 – Referring Expression Generation|REG
  • 語言實現 – Linguistic Realisation

詳見博文

3.2.難點

  • 語言是規律複雜的。
  • 語言是可以自由組合的,可以組合複雜的語言表達。
  • 語言是一個開放集合,我們可以任意的發明創造一些新的表達方式。
  • 語言需要聯繫到實踐知識,有一定的知識依賴
  • 語言的使用要基於環境和上下文

3.3.流程步驟

3.3.1.語料預處理

在這裏插入圖片描述
在這裏插入圖片描述

3.3.2.特徵工程

特徵提取、特徵選擇

3.3.3.選擇分類器/設計DL模型

3.4.典型應用

在這裏插入圖片描述

參考

https://easyai.tech/ai-definition/rnn/
https://easyai.tech/ai-definition/lstm/
https://easyai.tech/ai-definition/nlp/
https://blog.csdn.net/flyinglittlepig/article/details/72229041
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
https://www.cnblogs.com/jins-note/p/9715610.html
https://www.jianshu.com/p/daedde46eae5
https://blog.csdn.net/u012735708/article/details/82769711

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章