iT邦幫忙

2022 iThome 鐵人賽

DAY 27
0
AI & Data

語言學與NLP系列 第 27

Day 27 雙向長短記憶網路(Bi-directional Long Short-Term Memory, BiLSTM)

  • 分享至 

  • xImage
  •  

看過昨天的文章的大家應該對 LSTM 有了一定的了解,所以今天要更進一步的看看以 LSTM 為基礎而產生的雙向長短記憶網路 BiLSTM。

開始之前,我們簡單複習一下 LSTM。LSTM 是 RNN 的一種。因為其可以接受序列資料、多個輸入、有記憶這些特點,非常適合用來處理文本資料。而 BiLSTM 名稱中的 Bi-directional 其實就道盡了它的特點,它是由前向 LSTM 和後向 LSTM 组合而成的「雙向」LSTM。也就是說,在一個序列的輸入中,BiLSTM 能夠同時編碼由前至後的訊息和由後至前的訊息,如下圖所示。這種能力在文本或情緒的分析時是非常有用的。假設有個句子是:「今天晚上的_____很好聽,令人回味無窮。」若是只從前向推測,可能的候選就非常多,有晚餐、聚會、音樂會、月亮......然而,若將後向的編碼考慮進來,在以上的選項中就只有「音樂會」是最有可能的,顯而易見,範圍縮小了許多。

bi

圖片來源

看完圖示後發現了嗎?其實 BiLSTM 就是串接兩個 LSTM 的神經網路,一串從前向後,一串從後向前。 每一個輸入的字 Embedding 後的結果會分別傳遞給兩串 LSTM。這兩串 LSTM 運算的結果再通過下圖公式的算法得到兩串編碼的結果。

考慮到後向的編碼會如下圖所呈現之方式

bid

各層計算公式如下:

for

圖片來源

就是說,正向計算時,st 與 st-1 有關,反向計算時 s't 與 s't+1 有關,最後在綜合二者的結果,成為輸出門之輸出。所以通過 BiLSTM 較能捕捉到前後文,甚至是同一句話中每個詞之間的語意依賴。

因為 BiLSTM 其實和 LSTM 差不多,而且網路上許多大神做出來的 projects 和 介紹都非常詳盡,所以這篇就不帶實作了。在這裡推薦幾個不錯的 Python 實作 BiLSTM 網站與 coding 內容,大家有興趣就參考一下吧!

  1. TF Keras Tutorial - Bi LSTM, Glove, GRU

  2. Next Word Prediction BI-LSTM tutorial easy way

大家明天見~


上一篇
Day 26 循環神經網路 RNN 與 長短期記憶 LSTM 介紹與實作
下一篇
Day 28 NLP 的重要模型 —— BERT 的時代 前篇
系列文
語言學與NLP30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言