Chapter7-10_Deep Learning for Question Answering (1/2)
文章目錄
- 1 什么是Question Answering(QA)
- 2 按答案分類
- 2.1 答案是一個單詞
- 2.2 答案是多個選項
- 2.3 答案是source中的一段話
- 2.4 答案是生成的一段話
- 3 按source分類
- 3.1 source是網頁
- 3.2 source是圖片或者視頻
- 3.3 source是語音
- 3.4 source是視頻
本文為李弘毅老師【Deep Learning for Question Answering (1/2)】的課程筆記,課程視頻youtube地址,點這里👈(需翻墻)。
下文中用到的圖片均來自于李宏毅老師的PPT,若有侵權,必定刪除。
文章索引:
上篇 - 7-9 Deep Learning for Dependency Parsing
下篇 - 7-11 Deep Learning for Question Answering (2/2)
總目錄
1 什么是Question Answering(QA)
顧名思義,QA要做的事情就是回答問題。我們的問題類型大致可以分為三類。
- 可以從一個source中直接找到答案的問題,如"Who is the U.S. president?"
- 需要從多個sources中找答案的問題,如"Is Trump older than Obama?"
- 沒有標準答案的問題,如"Who should pay for the date, and why?"
這些問題的答案都是從sources中整合出來的,sources可以是文本,語音,視頻等等。現有的模型基本思路都是一致的,就是把sources放到一個類似BERT的模型里做embedding,同時也把question放到另一個BERT里做embedding,這兩個module之間往往需要做一下attention,最后把兩個modules的輸出放到一個生成答案的module當中去,得到最終的答案。
答案也可以分為好幾類。
- 一個詞
- source中的一段話
- 選擇題的話就是一個或多個選項
- 也可以是生成的一個段落
2 按答案分類
2.1 答案是一個單詞
早在2015年的時候,就有了一個測試QA的數據集bAbI,這個數據集把問題分成了20個類別,每個問題的答案都是一個單詞。當時人們覺得要讓機器自動回答出這些問題是非常困難的,但是如今這20類問題都被deep learning破解了,所以現在的paper也很少有拿bAbI來當數據集的。
這種答案只有一個單詞的問題,就是一個簡單的分類問題,訓練一個模型,然后取概率最高的那個答案就可以了。
2.2 答案是多個選項
當答案為幾個選項時,就要給模型增加一個choice的module。source,question和choice這三個module之間是有attention的。每次丟給choice module的輸入是其中的一個選項,模型只需要輸出yes或者no就可以了。這樣的方式適用于選項數量會變,答案數量也會變的情況。
2.3 答案是source中的一段話
有一類答案必定是source中的一段話,典型的就有SQuAD和DRCD,這樣的QA也被稱為是extraction-based。對于這類答案,我們會給source中的每一個token輸出一個start score和一個end score。分別取start score最大的和end score最大的,就是答案的頭和尾了。
模型大概長下圖這個樣子,在沒有BERT的時候,answer module是LSTM,而在有了BERT之后,就只需要是一個start vetor和end vector就可以了。
2.4 答案是生成的一段話
也有的答案的自由度比較高:
- 有可能是source中不同的spans拼湊起來的
- 有可能是答案是在問題和source之中的
- 有可能是部分答案在問題和source中都沒有
- 有可能根據source根本得不到答案
這類問題比較經典的模型有MS MARCO和DuReader。有些人也會直接用extraction-based的方法來解決這個問題。
不管用何種方法,當答案不在source中時,模型會強行在source中找個答案,這也必定會犯錯。為了解決這個問題,有人會在source中加一個Null的token,這樣當Null的start score和end score都超過某個閾值時,就表示沒有答案了。
如果不是extraction-based的方法,那就會對答案做一個額外的分類,判斷有無答案。下圖中上面的這個模型,會吃source,question和answer來驗證答案對不對,不對的話就是沒有答案;下圖中下面這個模型會僅根據source和question來判斷source中有沒有答案。
3 按source分類
3.1 source是網頁
從一篇文章中去找答案不是我們一般情況下會有的需求,這樣的工作,人做也是很輕松的,困難的是,我們不知道問題的答案在哪篇文章里。這個時候的做法就是用所搜索引擎去搜索這個問題,然后拿前幾篇,判斷這幾篇文章是否和問題有關,然后再從有關的文章中查找答案。
比較經典的就有V-Net,它就是綜合了多篇文章的答案,然后認為大多數的文章都是有正確答案的,采用投票的方式得到最終的答案。
3.2 source是圖片或者視頻
有時候問題可能是針對圖片或者視頻的內容的,這個時候的處理方法和NLP的沒有太多的差異,只要用CNN抽取圖片的embedding,其他就和NLP的QA一樣了。
3.3 source是語音
早在2016年的時候,李老師的團隊就開始嘗試語音作為source的QA了。他們在網上爬取了托福的聽力資料作為訓練數據進行訓練。在當時是很了不起的嘗試。
技術進步之后,發布了ODSQA數據集,也提出了基于語音辨識的Subword Units和Adversarial learning的QA。
當然也嘗試過直接用語音作為輸入的,但是效果不及有語音辨識的。
3.4 source是視頻
最后還有輸入是一段視頻的,被稱為Movie QA。這個時候的輸入信息不光有視頻,還有音頻和字幕。不過最終發現,大部分還是靠的字幕,視頻和音頻起的作用不大。
總結
以上是生活随笔為你收集整理的Chapter7-10_Deep Learning for Question Answering (1/2)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七、操作系统——动态分区分配算法(详解)
- 下一篇: 一、node.js搭建最简单的服务器