- 作者:韓信子@ShowMeAI
- 教程地址:http://www.showmeai.tech/tutorials/36
- 本文地址:http://www.showmeai.tech/article-detail/245
- 宣告:版權所有,轉載請聯絡平臺與作者並註明出處
- 收藏ShowMeAI檢視更多精彩內容
本系列為史丹佛CS224n《自然語言處理與深度學習(Natural Language Processing with Deep Learning)》的全套學習筆記,對應的課程視訊可以在 這裡 檢視。
ShowMeAI為CS224n課程的全部課件,做了中文翻譯和註釋,並製作成了 GIF動圖!點選 第10講-NLP中的問答系統 檢視的課件註釋與帶學解讀。更多資料獲取方式見文末。
引言
CS224n是頂級院校史丹佛出品的深度學習與自然語言處理方向專業課程,核心內容覆蓋RNN、LSTM、CNN、transformer、bert、問答、摘要、文字生成、語言模型、閱讀理解等前沿內容。
本篇筆記對應史丹佛CS224n自然語言處理專項課程的知識板塊:問答系統。主要針對NLP中的問答系統場景,介紹了一些模型和思路。
筆記核心詞
- question answering
- Dynamic Memory Networks \ 動態記憶網路
- QA
- 問答
- 對話
- MemNN
- DCN
- VQA
1.圖文問答系統與動態記憶網路( DMN )
QA 系統的概念是直接從文件、對話、線上搜尋等中提取資訊(有時是段落,或是單詞的範圍),以滿足使用者的資訊需求。 QA 系統不需要使用者通讀整個文件,而是傾向於給出一個簡短的答案。
現在, QA 系統可以很容易地與其他 NLP 系統(如聊天機器人)結合起來,有些 QA 系統甚至超越了文字文件的搜尋,可以從一組圖片中提取資訊。
有很多型別的問題,其中最簡單的是 Factoid Question Answering 事實類問題回答。它包含的問題看起來像
The symbol for mercuric oxide is?
(氧化汞的符號是什麼?)Which NFL team represented the AFC at Super Bowl 50?
(哪支NFL球隊代表AFC參加超級碗50賽?)
當然還有其他型別的問題,如數學問題(\(2+3=?\))、邏輯問題,這些問題需要廣泛的推理(而且沒有背景資訊)。然而,我們可以說在人們的日常生活中,尋求資訊的事實類問題回答是最常見的問題。
事實上,大多數 NLP 問題都可以看作是一個問答問題,其正規化很簡單:
- 我們發出一個查詢,然後機器提供一個響應。通過閱讀文件或一組指令,智慧系統應該能夠回答各種各樣的問題。
- 我們可以要求句子的 POS 標籤,我們可以要求系統用不同的語言來響應。
因此,很自然地,我們想設計一個可以用於一般 QA 的模型。
為了實現這一目標,我們面臨兩大障礙。
- ① 許多NLP任務使用不同的架構,如TreeLSTM (Tai et al., 2015)用於情緒分析,Memory Network (Weston et al., 2015) 用於回答問題,以及雙向LSTM-CRF (Huang et al., 2015) 用於詞性標註。
- ② 全面的多工學習往往非常困難,遷移學習仍然是當前人工智慧領域(計算機視覺、強化學習等)神經網路架構的主要障礙。
我們可以使用NLP的共享體系結構來解決第一個問題:動態記憶體網路( DMN ),這是一種為一般 QA 任務設計的體系結構。 QA 很難,部分原因是閱讀一段很長的文字很難。即使對於人類,我們也不能在你的工作記憶中儲存一個很長的文件。
1.1 輸入模組
將 DMN 分為多個模組。首先我們來看輸入模組。輸入模組以單詞序列 \(T_I\) 作為輸入,輸出事實表示序列 \(T_C\)。如果輸出是一個單詞列表,我們有 \(T_C = T_I\)。如果輸出是一個句子列表,我們有 \(T_C\) 作為句子的數量, \(T_I\) 作為句子中的單詞數量。我們使用一個簡單的 GRU 來讀取其中的句子,即隱藏狀態 \(h_{t}=\operatorname{GRU}\left(x_{t}, h_{t-1}\right)\),其中 \(x_{t}=L\left[w_{t}\right]\), \(L\) 為嵌入矩陣,\(w_t\) 為 \(t\) 時刻的單詞,我們使用 Bi- GRU 進一步改進,如下圖所示。
(本部分DMN網路頻繁使用到GRU結構,具體的GRU細節講解可以檢視ShowMeAI的對吳恩達老師課程的總結文章深度學習教程 | 序列模型與RNN網路,也可以檢視本系列的前序文章NLP教程(5) - 語言模型、RNN、GRU與LSTM)
1.2 問題讀取模組
我們也使用標準的 GRU 來讀取問題(使用嵌入矩陣 \(L : q_{t}=\operatorname{GRU}\left(L\left[w_{t}^{Q}\right], q_{t-1}\right)\)),但是問題模組的輸出是問題的編碼表示。
1.3 情景記憶模組
動態記憶網路的一個顯著特徵是情景記憶模組,它在輸入序列上執行多次,每次關注輸入的不同事實子集。它使用 Bi- GRU 實現這一點, Bi- GRU 接收輸入模組傳入的句子級別表示的輸入,並生成情景記憶表示。
我們將情景記憶表徵表示為 \(m^i\),情景表徵(由注意機制輸出)表示為 \(e^i\)。情景記憶表示使用 \(m^0 = q\) 初始化,然後繼續使用 \(\mathrm{GRU} : m^{i}=\mathrm{GRU}\left(e^{i}, m^{i-1}\right)\)。使用來自輸入模組的隱藏狀態輸出更新情景表徵,如下所示,其中 \(g\) 是注意機制。
注意向量 \(g\) 的計算方法有很多,但是在原始的 DMN 論文(Kumar et al. 2016)中,我們發現以下公式是最有效的
這樣,如果句子與問題或記憶有關,這個模組中的門就會被啟用。在第 \(i\) 遍中,如果總結不足以回答問題,我們可以在第 \(i +1\) 遍中重複輸入序列。
例如,考慮這樣一個問題 Where is the football?
以及輸入序列 John kicked the football
和 John was in the field
。在這個例子中,John和football可以在一個pass中連線,然後John和field可以在第二個pass中連線,這樣網路就可以根據這兩個資訊進行傳遞推斷。
1.4 回答模組
回答模組是一個簡單的 GRU 解碼器,它接收問題模組、情景記憶模組的輸出,並輸出一個單詞(或者通常是一個計算結果)。其工作原理如下:
1.5 實驗
通過實驗可以看出, DMN 在 babl 問答任務中的表現優於 MemNN,在情緒分析和詞性標註方面也優於其他體系結構。情景記憶需要多少個情景?答案是,任務越難,通過的次數就越多。多次傳遞還可以讓網路真正理解句子,只關注最後一項任務的相關部分,而不是隻對單詞嵌入的資訊做出反應。
關鍵思想是模組化系統,你可以通過更改輸入模組來允許不同型別的輸入。例如,如果我們用一個基於卷積神經網路的模組替換輸入模組,那麼這個架構就可以處理一個稱為視覺化問題回答(VQA)的任務。它也能夠在這項任務中勝過其他模型。
1.6 總結
自2015年以來,尋找能夠解決所有問題的通用體系結構的熱情略有減退,但在一個領域進行訓練並推廣到其他領域的願望有所增強。要理解更高階的問答模組,讀者可以參考動態注意力網路(DCN)。
2.參考資料
- 本教程的線上閱讀版本
- 《史丹佛CS224n深度學習與自然語言處理》課程學習指南
- 《史丹佛CS224n深度學習與自然語言處理》課程大作業解析
- 【雙語字幕視訊】史丹佛CS224n | 深度學習與自然語言處理(2019·全20講)
ShowMeAI系列教程推薦
- 大廠技術實現 | 推薦與廣告計算解決方案
- 大廠技術實現 | 計算機視覺解決方案
- 大廠技術實現 | 自然語言處理行業解決方案
- 圖解Python程式設計:從入門到精通系列教程
- 圖解資料分析:從入門到精通系列教程
- 圖解AI數學基礎:從入門到精通系列教程
- 圖解大資料技術:從入門到精通系列教程
- 圖解機器學習演算法:從入門到精通系列教程
- 機器學習實戰:手把手教你玩轉機器學習系列
- 深度學習教程 | 吳恩達專項課程 · 全套筆記解讀
- 自然語言處理教程 | 史丹佛CS224n課程 · 課程帶學與全套筆記解讀
NLP系列教程文章
- NLP教程(1)- 詞向量、SVD分解與Word2vec
- NLP教程(2)- GloVe及詞向量的訓練與評估
- NLP教程(3)- 神經網路與反向傳播
- NLP教程(4)- 句法分析與依存解析
- NLP教程(5)- 語言模型、RNN、GRU與LSTM
- NLP教程(6)- 神經機器翻譯、seq2seq與注意力機制
- NLP教程(7)- 問答系統
- NLP教程(8)- NLP中的卷積神經網路
- NLP教程(9)- 句法分析與樹形遞迴神經網路
史丹佛 CS224n 課程帶學詳解
- 史丹佛NLP課程 | 第1講 - NLP介紹與詞向量初步
- 史丹佛NLP課程 | 第2講 - 詞向量進階
- 史丹佛NLP課程 | 第3講 - 神經網路知識回顧
- 史丹佛NLP課程 | 第4講 - 神經網路反向傳播與計算圖
- 史丹佛NLP課程 | 第5講 - 句法分析與依存解析
- 史丹佛NLP課程 | 第6講 - 迴圈神經網路與語言模型
- 史丹佛NLP課程 | 第7講 - 梯度消失問題與RNN變種
- 史丹佛NLP課程 | 第8講 - 機器翻譯、seq2seq與注意力機制
- 史丹佛NLP課程 | 第9講 - cs224n課程大專案實用技巧與經驗
- 史丹佛NLP課程 | 第10講 - NLP中的問答系統
- 史丹佛NLP課程 | 第11講 - NLP中的卷積神經網路
- 史丹佛NLP課程 | 第12講 - 子詞模型
- 史丹佛NLP課程 | 第13講 - 基於上下文的表徵與NLP預訓練模型
- 史丹佛NLP課程 | 第14講 - Transformers自注意力與生成模型
- 史丹佛NLP課程 | 第15講 - NLP文字生成任務
- 史丹佛NLP課程 | 第16講 - 指代消解問題與神經網路方法
- 史丹佛NLP課程 | 第17講 - 多工學習(以問答系統為例)
- 史丹佛NLP課程 | 第18講 - 句法分析與樹形遞迴神經網路
- 史丹佛NLP課程 | 第19講 - AI安全偏見與公平
- 史丹佛NLP課程 | 第20講 - NLP與深度學習的未來