1 新智元原創(chuàng)
作者:鄧侃
【新智元導(dǎo)讀】本文作者鄧侃認(rèn)為,機(jī)器閱讀其實(shí)就是自然文本的結(jié)構(gòu)化,而文本摘要和機(jī)器翻譯在2016年的進(jìn)展,昭示了機(jī)器閱讀即將取得的突破。
機(jī)器閱讀將是深度學(xué)習(xí)的下一個(gè)重大進(jìn)展
回顧2016年,深度學(xué)習(xí)在應(yīng)用領(lǐng)域取得了三個(gè)重大進(jìn)展。
1. Google DeepMind 的 AlphaGo,戰(zhàn)勝了人類頂級(jí)圍棋高手。
2. Google Translate 上線,達(dá)到了與人類媲美的精度。
3. Tesla 的 AutoPilot 投入使用,讓自動(dòng)導(dǎo)航成為大眾使用的日常工具。
展望2017年,深度學(xué)習(xí)在應(yīng)用領(lǐng)域?qū)?huì)有新的突破,其中一大看點(diǎn),就是機(jī)器閱讀。
書籍是人類文明的主要傳承工具。讓機(jī)器掌握自動(dòng)閱讀的能力,將會(huì)顛覆性地降低知識(shí)傳承和使用的難度。
機(jī)器閱讀之所以可能在2017年取得突破性進(jìn)展,原因是機(jī)器翻譯的工作原理,可以拓展到機(jī)器閱讀領(lǐng)域。
文本摘要的研究,在2016年取得的進(jìn)展,已經(jīng)昭示了機(jī)器閱讀的前進(jìn)方向。
所謂文本摘要,就是把整篇文章,輸入給電腦,電腦自動(dòng)輸出文章的中心思想。
文本摘要的工作原理,與機(jī)器翻譯的工作原理,一脈相承。
機(jī)器翻譯的原理,編碼及解碼
機(jī)器翻譯的工作原理,說(shuō)來(lái)簡(jiǎn)單,先編碼,后解碼 [1]。
編碼的任務(wù),是把輸入的文章,轉(zhuǎn)換成一連串?dāng)?shù)字向量,數(shù)字向量包含文章每一詞的語(yǔ)義和語(yǔ)法信息,如同基因DNA。
解碼的任務(wù),是把數(shù)字向量,逐個(gè)轉(zhuǎn)換成其它語(yǔ)言的詞語(yǔ),完成翻譯。
任務(wù)明確后,接下去談如何實(shí)現(xiàn)。
如何提煉文章中每一個(gè)詞的語(yǔ)義信息?機(jī)器翻譯用了兩個(gè)辦法,
1. 詞向量,詞向量包含這一個(gè)詞的語(yǔ)義信息。詞向量的實(shí)現(xiàn)方式,用的是神經(jīng)網(wǎng)絡(luò)與語(yǔ)言模型的組合,稍后介紹。
2. 語(yǔ)義向量,語(yǔ)義向量包含了從文章開(kāi)頭到當(dāng)前詞的主要語(yǔ)義,也包含了從當(dāng)前詞到文章末尾的主要語(yǔ)義,所以語(yǔ)義向量又稱為前后文向量。語(yǔ)義向量的實(shí)現(xiàn)方式,用的是 LSTM 的隱狀態(tài),稍后介紹。
除了語(yǔ)義信息,編碼是否需要容納語(yǔ)法和統(tǒng)計(jì)信息?
文本摘要的研究者們,提議在編碼中也容納語(yǔ)法詞性標(biāo)注(POS tagging)、實(shí)體標(biāo)注(NER)、信息挖掘統(tǒng)計(jì)值(TF-IDF)等等信息 [2]。
懸念是,還有哪些其它有用的信息,也應(yīng)該被容納進(jìn)編碼中?
更大的懸念是,如何提高編碼的正確性,精準(zhǔn)地全面地表達(dá)原文的語(yǔ)義和語(yǔ)法信息?
編碼的實(shí)現(xiàn)原理
編碼的實(shí)現(xiàn),依賴于詞向量和語(yǔ)義向量。
詞向量的實(shí)現(xiàn)方式,用的是神經(jīng)網(wǎng)絡(luò)與語(yǔ)言模型的組合 [3]。
先說(shuō)語(yǔ)言模型(Language Model),語(yǔ)言模型的任務(wù),是根據(jù)前文,預(yù)測(cè)下一個(gè)詞,最可能是什么?
有時(shí)候聽(tīng)眾會(huì)打斷對(duì)方的發(fā)言,說(shuō),“你不用再說(shuō)了,你下面想說(shuō)什么,我已經(jīng)猜到了”。這樣的聽(tīng)眾,腦子里擁有出色的語(yǔ)言模型。
人類語(yǔ)言有缺陷,“版圖” 與 “疆界”,無(wú)一字相同,但是語(yǔ)義相同。
語(yǔ)言模型把每一個(gè)人類詞匯,對(duì)應(yīng)到一個(gè)詞向量。詞向量是數(shù)字向量,數(shù)字向量的好處在于,容易計(jì)算數(shù)字向量之間的距離。同義詞的詞向量之間的距離為零,近義詞的詞向量之間的距離較短。
人類詞匯,有一詞多義的情況。詞向量的技術(shù)難題,在于如何給多義詞配置多個(gè)詞向量。
[3] 用神經(jīng)網(wǎng)絡(luò),來(lái)根據(jù)前文,預(yù)測(cè)下一個(gè)出現(xiàn)的詞。
所謂預(yù)測(cè),其實(shí)是估算詞庫(kù)中所有詞匯,哪一個(gè)詞匯在下一個(gè)出現(xiàn)的概率最大。神經(jīng)網(wǎng)絡(luò)發(fā)揮的作用,是概率模擬器。
預(yù)測(cè)很準(zhǔn)的時(shí)候,神經(jīng)網(wǎng)絡(luò)中的諸多參數(shù)就不需要調(diào)整。預(yù)測(cè)不準(zhǔn)的時(shí)候,就調(diào)整這些參數(shù),提高后續(xù)預(yù)測(cè)的精準(zhǔn)度。這就是語(yǔ)言模型訓(xùn)練的過(guò)程。
因?yàn)橐浪阍~庫(kù)中所有詞出現(xiàn)的概率,所以訓(xùn)練語(yǔ)言模型的計(jì)算量,往往大得驚人。
解決的辦法,是盡可能縮小候選詞匯的數(shù)量。辦法很多,譬如 beam search。
語(yǔ)義向量的實(shí)現(xiàn),依賴 LSTM(Long Short Term Memory)。LSTM 也是一種神經(jīng)網(wǎng)絡(luò),特色有二 [4]。
1. 循環(huán):神經(jīng)網(wǎng)絡(luò)前一次的輸出,將作為同一個(gè)神經(jīng)網(wǎng)絡(luò)下一次的輸入。所以,LSTM 是處理序列的利器,語(yǔ)句就是序列的一種,序列的例子還包括,股票價(jià)格波動(dòng),心電圖腦電圖,音頻視頻等等。
2. 遺忘:語(yǔ)句中每個(gè)詞匯的重要性不同,記住重要的詞匯,忘記冗詞。人類記憶有限,聽(tīng)演講往往要做筆記,記住要點(diǎn)。電腦的記憶無(wú)限,但是也要取舍,避免噪音淹沒(méi)了要點(diǎn)。
人類聽(tīng)演講時(shí),把要點(diǎn)寫在筆記本里。LSTM 處理序列時(shí),把要點(diǎn)存儲(chǔ)在隱狀態(tài)里。
隱狀態(tài)(Hidden State)也是數(shù)字向量,隱狀態(tài)數(shù)字向量的維度,往往比詞向量的維度高。就像筆記本里能夠?qū)懴潞芏嘣~匯。
但是隱狀態(tài)向量并非詞向量的簡(jiǎn)單積累。隱狀態(tài)向量是前后文詞向量的剪接,如同基因剪接一樣。
LSTM 的隱狀態(tài)向量,勝任前后文語(yǔ)義向量的職能。但是隱狀態(tài)向量的軟肋,在于含義晦澀,如同基因不易讀解。
好的隱狀態(tài)向量,容易識(shí)別。如果用 Autoencoder [5] 把隱狀態(tài)向量復(fù)原成原文,復(fù)原后的原文,與真正的原文越相近,說(shuō)明隱狀態(tài)向量的質(zhì)量越好。
但是壞的隱狀態(tài)向量,壞在哪里,很難甄別。因?yàn)?,隱狀態(tài)向量的含義晦澀難懂。這是需要研究解決的難題。
除了提煉前后文語(yǔ)義,LSTM 還可以做很多事情,譬如給文章中每個(gè)詞匯標(biāo)注詞性,識(shí)別文章中地址名稱等等詞組。
作為神經(jīng)網(wǎng)絡(luò)的一種,LSTM 也需要訓(xùn)練,訓(xùn)練就需要語(yǔ)料。不同的任務(wù),譬如詞性標(biāo)注,詞組識(shí)別,需要不同的訓(xùn)練語(yǔ)料。
獲得大量語(yǔ)料,也是難題。譬如有人提議,收集文章及其標(biāo)題,作為文本摘要的訓(xùn)練語(yǔ)料。但是遇到標(biāo)題黨,這個(gè)辦法就失效。
解碼的實(shí)現(xiàn)原理
解碼的理想境界,與翻譯的理想境界相似,
1. “信”:語(yǔ)義要正確,不要曲解。
2. “達(dá)”:措辭要恰當(dāng),即便語(yǔ)義相同,如果措辭不同,那么語(yǔ)氣迥異。
3. “雅”:行文要流暢。
解碼器的實(shí)現(xiàn)原理,與詞向量的實(shí)現(xiàn)原理相似,依賴語(yǔ)言模型,根據(jù)前文,預(yù)測(cè)下一個(gè)詞,最可能是詞庫(kù)中的哪一個(gè)詞匯?
不要忘記,估算詞庫(kù)中所有詞出現(xiàn)的概率,計(jì)算量往往大得驚人。
要達(dá)到“信”的境界,對(duì)于機(jī)器翻譯而言,難度較低,因?yàn)榉g基本上是逐個(gè)詞匯一對(duì)一翻譯。
對(duì)于文本摘要而言,“信”的難度較高。如何摘錄重點(diǎn)?人類做摘要,往往摘錄論點(diǎn),不摘錄論據(jù),往往摘錄故事結(jié)局,不摘錄故事過(guò)程。
如何讓電腦辨別論點(diǎn)與論據(jù),結(jié)局與過(guò)程?這是需要研究的難題。
所以,對(duì)于機(jī)器翻譯而言,解碼器的輸入,只需要原文中的詞向量和語(yǔ)義向量,就可以翻譯得相當(dāng)精準(zhǔn)。
但是,對(duì)于文本摘要而已,除了詞向量和語(yǔ)義向量,還需要詞性標(biāo)注、詞組識(shí)別、TF-IDF,信息越豐富,摘要越簡(jiǎn)潔。
簡(jiǎn)單暴力的辦法,是摘錄原文中每個(gè)段落的起首一兩句,遇到兩個(gè)段落的起首句的語(yǔ)義相同,就忽略其中一個(gè)。
要達(dá)到“達(dá)”的境界,對(duì)于機(jī)器翻譯而言,難度較高,每種語(yǔ)言都有同義詞,但是同義詞之間的語(yǔ)氣差別,往往難以界定。
對(duì)于文本摘要而言,“達(dá)”的難度較低,簡(jiǎn)單粗暴但是行之有效的辦法,是直接引用原文中的詞匯。
引用原文詞匯,還有一個(gè)好處,是大大降低了計(jì)算量。說(shuō)得學(xué)術(shù)點(diǎn),這叫 LVT,Large Vocabulary Tricks [6]。
麻煩在于,原文中出現(xiàn)的詞匯很多,下一個(gè)詞應(yīng)該引用原文中的哪一個(gè)詞匯?
解決辦法是先用語(yǔ)言模型,根據(jù)當(dāng)前的詞向量、語(yǔ)義向量,預(yù)測(cè)下一個(gè)詞的詞向量。然后再去原文中,尋找最貼切的詞匯。
尋找的辦法,說(shuō)得學(xué)術(shù)點(diǎn),叫 Attention [1]。
大意是根據(jù)原文中每一個(gè)詞匯本身的語(yǔ)義、語(yǔ)法詞性、詞組標(biāo)注、TF-IDF 統(tǒng)計(jì)信息,以及前后文的語(yǔ)義等等盡可能多的信息,評(píng)估原文中的每一個(gè)詞匯,與下一個(gè)詞的詞向量的相關(guān)性。
但是 Attention 的辦法,也會(huì)導(dǎo)致巨大的計(jì)算量。[2] 提議了一個(gè)減少計(jì)算量的辦法,先評(píng)估每個(gè)語(yǔ)句的相關(guān)性,找到相關(guān)語(yǔ)句后,再評(píng)估這個(gè)語(yǔ)句中每個(gè)詞匯的相關(guān)性。
要達(dá)到“雅”的境界,無(wú)論機(jī)器翻譯還是文本摘要,都必須做到下一個(gè)詞的選擇,必須與前文詞匯保持流暢。
對(duì)于文本摘要而言,下一個(gè)詞的選擇,不能全部選用原文中詞匯。實(shí)現(xiàn)方式有兩個(gè)要素。
1. 預(yù)先從訓(xùn)練語(yǔ)料中,構(gòu)建摘要的詞庫(kù)。
2. 實(shí)現(xiàn)一個(gè)開(kāi)關(guān)函數(shù),決定從詞庫(kù)中選詞,還是從原文詞匯中摘錄。
開(kāi)關(guān)函數(shù)可以用 sigmoid 函數(shù),輸入有三項(xiàng),前文的詞匯、預(yù)測(cè)出的下一個(gè)詞的詞向量、Attention 找到的原文中最貼切的詞匯。
未來(lái)有待解決的問(wèn)題
除了進(jìn)一步降低語(yǔ)言模型的計(jì)算量,除了識(shí)別原文中各個(gè)語(yǔ)句及詞匯的重要性,未來(lái)最大的挑戰(zhàn),可能是如何引用外援知識(shí)。
人類閱讀的時(shí)候,經(jīng)常需要查字典,查參考文獻(xiàn)。
引用外援知識(shí)的目的,是擴(kuò)大讀者現(xiàn)有的知識(shí)結(jié)構(gòu),消除現(xiàn)有知識(shí)結(jié)構(gòu)與文章內(nèi)容之間的落差。
閱讀結(jié)束后,進(jìn)一步擴(kuò)大現(xiàn)有知識(shí)結(jié)構(gòu)。這就是人類通過(guò)閱讀,不斷學(xué)習(xí)知識(shí)的過(guò)程。
知識(shí)結(jié)構(gòu)的表達(dá)方式有多種,“一圖勝千言”,自然語(yǔ)言似乎不是最高效的表達(dá)方式。
知識(shí)圖譜由點(diǎn)和邊組成,點(diǎn)表達(dá)概念,邊表達(dá)一個(gè)概念與另一個(gè)概念之間的關(guān)系。
譬如 “發(fā)燒” 和 “炎癥” 是兩個(gè)概念,在知識(shí)圖譜中用兩個(gè)點(diǎn)來(lái)表達(dá)。“炎癥”導(dǎo)致“發(fā)燒”,在知識(shí)圖譜中用有向邊來(lái)表達(dá)。
當(dāng)閱讀一篇文章時(shí),如果文章中出現(xiàn)的概念,沒(méi)有出現(xiàn)在現(xiàn)有知識(shí)圖譜中,那么閱讀就會(huì)出現(xiàn)困難,這就是知識(shí)的落差。
消除知識(shí)落差的辦法,是查字典,查參考文獻(xiàn),擴(kuò)大閱讀,直到文章中出現(xiàn)的新概念,與現(xiàn)有知識(shí)圖譜相連接。
如何把文章轉(zhuǎn)換為知識(shí)圖譜?不妨沿用機(jī)器翻譯和文本摘要的工作原理,把文章從自然語(yǔ)言,轉(zhuǎn)換成知識(shí)圖譜。
換而言之,機(jī)器閱讀其實(shí)就是自然文本的結(jié)構(gòu)化。
參考文獻(xiàn)
[1] Neural Machine Translation by Jointly Learning to Align and Translate
https://arxiv.org/abs/1409.0473
[2] Abstractive Text Summarization Using Sequence-to-Sequence RNNs and Beyond
https://arxiv.org/abs/1602.06023
[3] Distributed Representations of Words and Phrases and their Compositionality
https://arxiv.org/abs/1310.4546
[4] Understanding LSTM Networks
http://colah.github.io/posts/2015-08-Understanding-LSTMs/
[5] Autoencoders tutorial
http://ufldl.stanford.edu/tutorial/unsupervised/Autoencoders/
[6] On using very large target vocabulary for neural machine translation
https://arxiv.org/abs/1412.2007
聯(lián)系客服