一点关于cloze-style问题的简谈
一個小任務:給出一個問題和諾干個候選句子,從候選句子中選出答案,有沒有好的實現方案?
一個小任務:類似于:“中國最大的內陸湖是哪個?”給出候選句子1.”中國最大的內陸湖,就是青海湖”2.“青海湖在中國內陸湖中最大的”等等 這種句子 然后根據句子找出答案 請問有什么實現的方案嗎?
寫了個答案,算是個科普向的,搬運到專欄
1 從“是什么”說起
這個問答屬于傳統的question-answer問題,比如例子上的
中國最大的淡水湖是___(轉義,并不一定存在填空,但性質相同)
需要的結果,是補全出,青海湖這個結果
在英文中,我們稱這種,給予一個query,回答一個詞,作為“填空”,來回答的問題,稱為“cloze style”的問題,來源于英語中的填字游戲
我們的input是一個query,一篇context,然后從文章中選取一個 存在于文章中的(point) 詞,來做一個 填空 問題,將這個詞作為output
現在,問題明確了,我們的任務,就是構建這個"端對端"的,input-output系統
2 從“為什么”談談
首先想說一說attention這個概念,以此導入后面的介紹
準確的描述請看
@Tao Lei 大神關于attention的回答我們現在已經確定了兩點
第一,我們所要找的"填空"詞,必然是context中的一個
第二,判定這個詞我們需不需要,主要取決與我們的query,也就是問題
那么很自然的就會想到,如果我們能夠對context中的每個詞,和這個query都構建一個函數,假設context = {word1,word2......},我們希望有一個量化的函數f(query,word_i) = value,然后我們只需要選擇出max的那個詞來進行"填空",就完成了
放到題目中,我們假設存在那么一個f
query:中國最大的淡水湖是哪一個?
f(query,青海湖) = 10
f(query,doge) = 1
f(query,野鴨湖) = 5
然后我們就max(),直接獲得了青海湖這個答案
3 往"怎么做"說說
現在的問題變成了:
(1) 如何把這些離散的變量納入函數去計算?
寫過相關代碼的,說一句embedding足夠了,本質上就是用詞向量去表達
簡單解釋一下,詞向量就是用向量來把離散化的詞來進行另一個形式的表達,比較好的詞向量可以model到語義,具體來說就是,v1如果表達"青海湖",v2 表達 "撫仙湖",v3表達"青海".v4表達"云南",我們甚至可以直接做到v3 -v1 = v4-v2的神奇效果
但這顯然不夠
如果只是model到單個詞,很大程度上浪費了文章信息,我們需要盡可能的涵蓋上下文的意思,英文capture
我們希望,model出青海湖這個詞的向量的時候,能包含"淡水湖,最大"之類的描述信息,這又如何做到呢
LSTM,時序神經網絡RNN,一個經典的解決方案,embedding日常
看個熱鬧的話,這里,我們已經用一個向量表達了青海湖,還包含了一些它的屬性信息,當然這個表達,只有計算機看得懂
(2) 如何構建合理的函數f?
第一篇開山的是這個
Teaching Machines to Read and Comprehend (Hermann et al., 2015)
Y. Cui, Z. Chen, S. Wei, S. Wang, T. Liu, G. Hu
藍紅部分做的就是所謂的capture的工作,也就是對詞做了一個抽象,也對問題進行了一個抽象,在這個時候,訓練了一個權重向量s,也就是attention
計算的思路也是非常清晰的,g就是我們之前試圖尋找的那個f,表達的東西是一樣的
秉承這個attention的思路,IBM搞出了一個更清晰的完全體,大概是1.0版本和1.1版本的關系,并且github上有完整的實現,能給一個比較好的參考
Text Understanding with the Attention Sum Reader Network (Kadlec et al., 2016)
Y. Cui, Z. Chen, S. Wei, S. Wang, T. Liu, G. Hu
網絡的結構和計算非常簡單,但是人家就有soa的效果
今年的Squad,stanford的全球性評測當中,科大訊飛andHIT和MSRA的兩篇論文我記得第一第二,其中Aoa reader的論文和上兩篇可以說是一脈相承的思路,只不過在對attention的利用上更近一層,MSRA的r-net有所不同,都是值得一讀的文章,我在此貼一下paper的鏈接,這算是目前我知道的,這類問題的最好解決方案了
MSRA
http://aka.ms/rnet
Joint Laboratory of HIT and iFLYTEK Research
[1607.04423] Attention-over-Attention Neural Networks for Reading Comprehension
前一個復雜一些,后一個實現一下不難就是了,不過嘛,誰知道煉丹過程中有什么佐料呢
感謝觀看
編輯于 2017-09-21 原文鏈接:https://zhuanlan.zhihu.com/p/29548295總結
以上是生活随笔為你收集整理的一点关于cloze-style问题的简谈的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 快速理解bootstrap,baggin
- 下一篇: Barra 结构化风险模型实现(1)——