基於深度學習的自然語言處理在 2016 年有哪些值得期待的發展?

技術上LSTM和RNN和其他機器學習方法在人機對話,QA系統方面會有什麼進展?


水平有限,勉強回答下這個問題。這兩天準備個講稿,剛好思考了一下深度學習在自然語言處理中需要關注的問題。趁著熱情未退,就順便記錄下。拋個磚,歡迎有興趣者一起討論。


畢竟2016年已將近過半,本文更多的是對未來的思考。

先說下目前深度學習在自然語言處理中的主要研究點(拋開具體任務):

1)對字、詞、句子、篇章等多粒度自然語言單位的分散式表示,也就是Embedding(嵌入),主要從兩個角度:一是得到更好的語言學解釋;二是後續任務的性能。具體研究就是通過各種CNN、RNN以及變體對語言進行建立各種的語義組合模型,後面接一個分類器或相似度計算就可以直接用到各種任務上。

2)序列到序列模型,配合注意力模型和外部記憶單元(神經圖靈機、記憶網路等),可以有效地解決長距離依賴問題,強大到無所不能,幾乎涵蓋了大部分自然語言處理任務(機器翻譯、自動問答、序列標註、文本摘要等)。

經過最近兩年的快速發展,深度學習給自然語言處理也帶來了很多新變化。

1)有了embedding,也就是基於低維稠密向量的語義表示,語義變得可以計算了,這點非常重要。可以說深度學習方法在自然語言處理中取得成功的最重要原因。通過大規模未標註文本,可以自動學習出字、詞、句子的語義表示,並且是稠密向量,可以無縫介入後續分類模型。研究者終於可以擺脫知識庫、詞法、句法等門檻或障礙,這些東西用過就知道多痛苦。

2)不斷出現的新「玩法」,比如看圖說話、作詩、作詞、寫代碼等,這些都是傳統方法不敢玩的遊戲。

3)門檻降低,包括自動問答、機器翻譯等以前需要大量知識積累的NLP任務,變得不那麼讓人望而生畏。一個懂深度學習的新生,找一些開源的工具,參照著學習下,就可以輕鬆上手。這使得自然語言處理的研究群體一下子大了好多。不過,競爭也激烈了。

但是,還是要說但是,雖然深度學習的應用在NLP中用得如火如荼,但是有些問題還是必須靜下心來思考的,也可以說是期待解決的問題。

1) Embedding是否可以代表一切?雖然Embedding使得語義計算變得十分方便,但是是否所有的東西都需要用Embedding來表示。比如,一個陌生的無意義的符號怎麼表示?變數什麼表示?數字什麼表示?embedding是不是過多地給一個詞附加了本不該有的含義。此外,大量的未登錄詞怎麼辦?肯定不能簡單地用UNK表示。未來怎麼解決這個問題看不清,很多人想把符號主義的方法引進來,但是也不是那麼容易的事。

2) Embedding的形式是否是「向量」?如果說詞的表示可以是向量的話,句子、文章也用向量表示的話就顯得句子和文章的內容太「單薄」了吧。有沒有更好的表示結構,比如矩陣、隊列、棧?

3) 語言理解的生物學啟發模型是什麼?我們都知道在計算機視覺中卷積神經網路的巨大威力,ImageNet比賽從2014年開始排行榜上就找不到了採用非卷積模型的系統。但是卷積是一個實實在在受到生物學啟發的模型,雖然比真正的生物學模型要簡單很多,但是已經很足以處理很多計算機視覺的任務。然而,人們對語言處理相關的生物神經系統到現在近乎一無所知。目前在NLP中使用最多的RNN怎麼看都不像是生物學模型。從某種意義上講,目前的研究都不是「正途」。雖然個人對memory enhanced的模型比較看好,但是目前的addressing(讀寫)機制差了些。

4) 真正的「深度」學習?我個人一直認為目前NLP的所謂的「深度學習」
多數是淺層學習。雖然很多人不太認同,認為RNN在時間維上非常深。但是從表示學習層面上(概念、語義等直覺上通過多層加工得來的),RNN的輸入到輸出之間的路徑很短。並且目前研究也表明即使是LSTM也不能很好地處理長距離依賴問題。特別是和計算機視覺相比,NLP中的網路是非常淺的。目前的成功主要受益於「分散式」表示。雖然不是說深的網路就一定好,但是淺的網路終究能力有限,不足以解決很多NLP任務,特別是涉及到語義理解以及推理的任務。(吐槽下今年IJCAI的審稿人之一居然認為我們一個工作的網路太深,別人的都是一層的,然後就給拒了)

5) 深度學習模型的可解釋性或可視化?我們知道一個模型表現好是遠遠不夠的,還要知道為什麼好?在計算機視覺中有大量的可視化工作,雖然也有很多不足,但是讓人在很大程度上理解了模型是如何工作的?但是在NLP上,雖然有一些工作(比如Karpathy的工作等),但是還不足以讓人理解「為什麼」效果好或「怎麼」工作?特別是embedding,到底代表了什麼?

6) 和ImageNet等視覺的數據集相比,大多數NLP任務(除了機器翻譯)的數據集都太小。Fei-Fei Li在TED上講,人每天無時無刻都在接收數據,一個3歲大的小孩已經看過上一張真實世界的照片了,人腦的訓練樣本是無限多的。同理,人對語言的理解也需要大量的樣本。因此,要訓練一個好的NLP系統也必須有足夠多的數據。要說深度學習方法在NLP上不行,首先要看下數據集是否足夠。因此,NLP中的ImageNet什麼時候在哪裡出現?以及類似CV中AlexNet、GoogleNet、ResNet們的標誌性NLP系統何時出現?這些都值得我們期待。

7) 最後,談一下Lecun、Bengio等大牛們看好的非監督學習。如果一個學生很聽老師的話,老師說好他就說,老師說差他就說差。我們不會說這個學生聰明,只會說他比較死板。因為智能某種程度上不是說要給一個正確答案(在很多情況下也沒有正確答案),而是一個思維方法,以及對新環境的適應,這些都是監督學習不能給予的。既然NLP中監督數據集都太小,何不嘗試性非監督學習方法呢?扯遠一點,當我們不再要求端到端的監督學習,不再要求整個模型可微,每個模型學到多少東西全靠自己的悟性,一種優勝劣汰的機制保證整個模型群體的進化,多熟悉的畫面!



從2013年的word2vec開始,自然語言處理領域引爆了深度學習這個熱點,至今有2年多了。在我看來,2014年的熱點是各種新穎的詞表示學習方法,而2015年則開始擴展到句子層次,CNN、RNN、LSTM等模型輪番上陣,在機器翻譯、文檔摘要、閱讀理解、關係抽取等任務上取得了重要進展。進入2016年,3月份DeepMind推出的AlphaGo在今年3月大勝李世乭,更是把深度學習的熱度推向新的高潮。


2016年已經快過去一半,在這裡猜測2016年NLP深度學習技術的發展趨勢,也許並沒有太大難度,我認為主要有以下幾個:

(1)深度學習模型在更多NLP任務上的定製化應用。例如將過去統計機器翻譯的成熟成果遷移到神經網路模型上,基於深度學習的情感分析,再例如今年NAACL 2016的最佳論文Feuding Families and Former
Friends; Unsupervised Learning for Dynamic Fictional Relationships也利用神經網路模型檢測小說中的人物關係。

(2)帶有隱變數的神經網路模型。很多NLP任務傳統主要基於HMM、CRF方法對標註標籤的關聯關係建模,而單純的神經網路模型並不具備這個能力,因此一個重要熱點將是在神經網路模型中引入隱變數,增強神經網路的建模能力。

(3)注意力(attention)機制的廣泛應用。大量工作已經證明attention機制在文本產生中的重要性,也是繼CNN-&>RNN-&>LSTM之後的新的論文增長點,相信在2016年會有大量論文提出各種帶有attention的神經網路模型。


以上是對2016年發展趨勢的估計,也許等ACL、EMNLP和COLING一輪下來就能明了了。然而我想對未來更長一段時間的發展做一點思考。復旦大學邱錫鵬老師已經在他的回答中開了很多腦洞,很多觀點很有啟發。作為補充和爭鳴,這裡我也想講講我自己的想法。


如何將先驗知識引入分散式表示

分散式表示(distributed
representation)是深度學習的重要特點;避免特徵工程的端對端(End-to-End)框架則是深度學習在NLP的獨特優勢。然而,現實世界中我們擁有大量人工標註的語言知識庫和世界知識庫,如何在深度學習框架中引入這些先驗知識,是未來的重要挑戰性問題,也是極大拓展深度學習能力的重要途徑。在這個方面,有很多頗有創見的探索工作,例如來自香港華為Noah實驗室Zhengdong Lu團隊的Neural Enquirer: Learning to Query Tables [1],等等。此外,我認為基於深度學習的attention機制也是引入先驗知識的重要可能手段。機器學習領域還提供了很多其他可能的手段,等待我們去探索。


探索人類舉一反三能力的One-Shot Learning

如2015年在Science發表的轟動論文[2]所述,人類學習機制與目前深度學習的顯著差異在於,深度學習利用需要藉助大量訓練數據才能實現其強大威力,而人類卻能僅通過有限樣例就能學習到新的概念和類別,這種舉一反三的學習機制,是機器學習也是自然語言處理夢寐以求的能力。這需要我們特別關注認知領域的相關進展[3, 4],機器學習領域也在熱切探索one-shot learning任務。在NLP領域,如何應對新詞、新短語、新知識、新用法、新類別,都將與該能力密切相關。


從文本理解到文本生成的飛躍

目前取得重要成果的NLP任務大多在文本理解範疇,如文本分類,情感分類,機器翻譯,文檔摘要,閱讀理解等。這些任務大多是對已有文本的「消費」。自然語言處理的飛躍,需要實現從「消費」到「生產」的飛躍,即探索如何由智能機器自動產生新的有用文本。雖然現在有媒體宣稱實現了新聞的自動生成,但從技術上並無太多高深之處,更多是給定數據後,對既有新聞模板的自動填充,無論是從可擴展性還是智能性而言,都乏善可陳。我認為,自然語言處理即將面臨的一個飛躍,就是智能機器可以匯總和歸納給定數據和信息,自動產生符合相關標準的文本,例如新聞、專利、百科詞條[5]、論文的自動生成,以及智能人機對話系統等等。毫無疑問,這個技術飛躍帶來的應用擁有無限的想像空間。


大規模知識圖譜的構建與應用

「知識圖譜」是谷歌推出的產品名,現在已經成為對大規模知識庫的通用說法。如果說深度學習是機器大腦的學習機制,那麼知識圖譜可以看做機器大腦的知識庫。知識圖譜是問答系統的重要信息來源,也是閱讀理解、機器翻譯、文檔摘要等任務進一步發展的重要支撐。目前,知識圖譜從構建到應用都仍有很多問題亟待解決,例如新概念、新知識的自動學習,如何基於知識圖譜實現智能推理,等等。在這方面,我一直關注知識的分散式表示學習,能夠建立統一的語義表示空間,有效解決大規模知識圖譜的數據稀疏問題,有望在知識獲取、融合和推理方面發揮重要作用[6]。


以上是我最近對NLP深度學習技術發展的一些思考,限於個人視野難免以偏概全,主要希望起到拋磚引玉的功用,請大家批評指正。


PS: 如果有新的想法,會不斷補充。


參考文獻

[1] Yin,
Pengcheng, et al. "Neural Enquirer: Learning to Query Tables." arXiv
preprint arXiv:1512.00965 (2015).

[2] Lake,
Brenden M., Ruslan Salakhutdinov, and Joshua B. Tenenbaum. "Human-level
concept learning through probabilistic program induction." Science
350.6266 (2015): 1332-1338.

[3] Tenenbaum,
Joshua B., et al. "How to grow a mind: Statistics, structure, and
abstraction." science 331.6022 (2011): 1279-1285.

[4] Vul,
Edward, et al. "One and done? Optimal decisions from very few
samples." Cognitive science 38.4 (2014): 599-637.

[5] Sauper,
Christina, and Regina Barzilay. "Automatically generating wikipedia
articles: A structure-aware approach." Proceedings of ACL-IJCNLP, 2009.

[6] 劉知遠, 孫茂松, 林衍凱, 謝若冰. 知識表示學習研究進展. 計算機研究與發展, 2016.


謝 @殷鵬程 邀 (重名太多搞不定) ,我個人最喜歡鵬程同學自己的Neural Enquirer ( http://arxiv.org/abs/1512.00965) , 不服來辯


首先可以探討一下題目~~ 神經網路對於自然語言處理的一些任務的確有了很大的幫助,但是 深度 這個東西是否真的對自然語言處理有了很大幫助,我保持懷疑態度~從我搬磚的血淚史中來看,一層CNN和兩層CNN對於一個分類的任務來說,哪個好得看命 = =。。。 並且,差距並不大~ 在這裡我推薦一個人的文章YoonKim(Yoon Kim),雖然他的文章不多,而且如果從革命性的角度看也沒有一篇文章改變世界的,但是他文章 第一 share code並且code style 非常好,第二實驗非常solid,他會在經典任務上做各種參數的各種NN的實驗。對於平時搬磚的我,有著開路者的作用。 他在他AAAI2016中做過一個CNN+LSTM訓練語言模型的實驗,結論是CNN加層沒用。。。我個人感覺,現在的NN for NLP中最有用的東西是可以針對一個問題學詞的表示,其他的什麼CNN,RNN結構我覺得有很大很大的提升空間,要是CNN和RNN不學針對任務的word Embedding,那麼這兩個模型會在很多任務上有著超過十個點的下降。

針對任務的word Embedding 是十分給力的,也是2014 and 2015被各種寫的,例如,在相關度計算時,NN可以把good和bad兩個詞向量學的特別近,然而在情感分析時good和bad的距離就會特別遠。有了這項技術,就可以做一些特別難提特徵的任務,並且把那裡面的詞學出來一種針對那個任務的表示。例如在對聯中,天對地,雨對風,大陸對長空就可以被機器自動的學出來。所以,在NN for NLP的初期,很多文章都直接把模型應用到一些特別奇葩的任務上,比如判斷文本是否幽默。

QA好像最近大家喜歡刷textQA的數據集,例如wikiqa,我在Arxiv已經看到好多了。對話很多人都有自己工作,包括我也投了ACL,一個實驗室的也投了IJCAI,但是都沒中。對話這個任務,他實在是太難評測了。。。。。。。。。。。。你說機器翻譯,摘要,QA這些好歹有個標準答案,但是對話這個沒有標準答案,所以我十分反對對話用ROUGE和BLEU進行評測,這實在是一個反人類的行徑。我推薦一篇文章 Copynet(https://arxiv.org/abs/1603.06393),我覺得這篇用NN做NLP任務的一個典範,他認為在生成模型中,有一些詞應該直接從source sentence裡面抄過來(例如一些OOV的詞,一些專有名詞等),這樣我去「泰山遊玩了」 就不會生成一個「黃山好看嗎」的回復。

另外NN的出現使得Research門檻降低了,尤其Researcher的數學能力,與傳統模型比起來NN的數學原理比較簡單,並且隨著Keras,Torch,Theano這些開源項目的成熟,我們可以用十行實現一個網路。。。這就使得現在可以「大眾神經網路」,不過我看論文時,很多文章那真是看摘要就知道他模型是啥,就知道code怎麼寫的了,也是傷感。

2016是填Attention的一年,我相信大牛會專註於除了CNN LSTM GRU等模型結構的研究,而像我這種努力畢業的就是要填Attention的坑,當然填坑也要保持一個優雅的姿勢~

At last,昨天出的ACL的分,2 3 4感覺又要被拒絕了,真是傷感。


最近看了吳軍老師的一本書《智能時代》,裡面介紹了一些深度學習的應用場景,比如可能顛覆律師行業(案例分析),另外目前浙江的某些法庭已經使用智能語言處理系統做庭審記錄。在法律行業,好多人可能要失業了。


我關心的是大多數程序員什麼時候會失業。希望有圈裡人能來展望一下。

編程,說起來就是幾部分,理解需求,把需求和軟體開發人員的技能結合起來,程序員個人的技術積累(現在更多的體現在搜索引擎的利用上)。能看到這三個模塊在逐漸成熟起來。

先說需求理解,這方面人力資源大數據方向的團隊走在前面了,據我了解,周濤老師的團隊JD刻畫精度已經很高了。

程序員個人技能積累,李菲菲的學生開源了char rnn模型,有人基於這個模型,把Django代碼喂進去,已經能寫出看起來沒問題的python程序了。如果有大公司肯跟進這個方向,寫出像樣的代碼來不是什麼大問題。

匹配,知乎的推薦系統就是一種匹配么(雖然做的很差,效果還不如傳統的call center)。

看起來剩下的就是有大公司肯出錢把各個模塊整合起來。如果有哪個團隊已經在做這件事了,煩請私信我,好提前做好改行的準備,多跑跑步,估計大家以後收快遞,可以附加條件,快遞員要會機器學習的,會淺層學習加5毛,深度學習加1塊。

我懂一點周易,以後可以弄個機器學習起名,讓你的孩子贏在起跑線上:

K-Means+隨機黑暗森林算一次50,七七四十九層SVM支持向量機算一次100,九九八十一層CNN卷積神經網路算一次200。頂級易學大師手工調參、萌娘仁波切誦經加持、RNN-LTSM遞歸神經網路算一次20000(奉送價值9999元全套Aprior預處理)。


深度學習極其強大,但來理解人類的自然語言還是不夠的。

原因很簡單,深度學習模擬的是神經系統,而不是完全的大腦

目前的視覺識別處理,其實只是一種複雜的一系列神經條件反射,而不是真正的抽象概念的處理。

真正的解決方法,還要依賴於各種記憶網路/推理網路的發明,並將各種網路進行組合,變成類似於大腦一樣的結構。


一直在思考的便是在人腦對語言的感知過程中,有沒有一個更好的模型。就像樓上說的,RNN並不符合生物學上的特徵。

如果從生物學上看,CNN確實簡化了人腦對圖像的感知的過程,但是效果卻相當出色。那麼在人腦對語言的感知過程中,是否也存在 局部感受野 這樣的類似的還未被生物學家所發現的生物特徵呢?

如果有,是不是和圖像感知的過程類似呢?如果生物學家能真正揭開這個奧秘,我覺得深度學習在NLP中的應用應該會有重大突破吧。

另外,詞嵌入是否真的可靠。劉老師 @劉知遠 去年還提出了TWE,主要就是解決詞語在不同topic語義空間的多重表示,提高詞語的discriminativeness。我覺得詞語還有很多特徵沒有在詞向量上體現出來,不僅僅是topic,時序信息對語義有沒有影響?不同種類的語言,表達習慣對語義有沒有影響?或者,有沒有優於vector的數據模型?

NLP中的deep learning感覺隨波逐流的也挺多的,畢竟門檻低,論文好水一點。但還是覺得deep learning在nlp會大有作為的,世間很多東西在本質上是類似的。阿法狗通過deep learning取得了這麼好的成績,希望以後nlp的deep learning在機器人的應用上也能取得好成績。

對Machine Learning和Deep Learning研究不是很深,各位參考一下。。


在自動摘要、文檔標註、依存句法、情感分析取代傳統方法的一個過渡階段,也有可能是深度學習與傳統方法結合的一年,期待更多新方法、新思路產生


上面說的都是過程、演算法。我在這換個思路。
人機對話,QA系統的結果應該返回什麼?文本?鏈接?在這個VR、AR都在突飛猛進的時代,還是單純的文本、鏈接是不是太low了?
HTML、JS如此強大,返回的結果也應該更豐富才是。
參考下wolfram|alpha,我相信人機對話、QA系統的未來是知識計算,返回的結果也應該具有豐富的媒體信息。
計算出的結果,可能只是字元串,如何轉化為含有更豐富信息的知識呢?我覺得,這需要有個開放的常識知識庫,每條知識有唯一的URI定位。只有這樣才能對具體的某一類知識進行更豐富、更酷炫的可視化。

補充個開放的中文知識圖譜/常識知識庫:
楚辭 -- 讓知識融入你的生活/作品


談到基於深度學習的自然語言處理,太技術層面的回答真是來不了。跟大家分享一下IBM Watson的一些情況吧,畢竟Watson所具備並且將來大放異彩的也會是自然語言處理。

作為全球首個認知系統,Watson是IBM認知計算系統的傑出代表。Watson具備用用自然語言進行深度問答、關係抽取、性格分析、清晰分析,權衡分析等28項能力,而且這些能力也都被轉成了數字服務或API;到2016年底,Watson API的數量將達到50項。

圍繞IBM Watson這個基於雲計算和開放標準的平台,一個認知生態系統正在被構建,目前:有36個國家、17個行業的企業都在使用認知技術;超過7.7萬名開發者已參與到Watson Developer Cloud平台來引導、測試和部署他們的商業構想;超過350個生態系統合作夥伴及既有企業內部的創新團隊,正在構建基於認知技術的應用、產品和服務,其中100家企業已將產品推向市場;Watson API的月調用量也已高達13億次,並仍在增長。

IBM Watson能夠幫助企業將大數據分析、人工智慧、認知體驗、認知知識和計算機基礎架構等認知技術融入數字應用、產品與運營。

數據分析的增長是一項關鍵業務功能,需要藉助新的工作和技能來滿足需求。Watson扮演的角色是增強人們開展工作的能力,而並非取代。例如,位於墨西哥和新加坡的銀行利用Watson增強員工的理財知識,為其提供以往無法承受的新服務。總之,隨著科技的進步,某些工作可以被取代,但利用Watson真正的目的是補充人們的知識和技能,使其更加明智、更好地開展工作。

不過說到這大家也會開始把認知計算和人工智慧放在一起比較。兩者都相關自主、深度學習,二者的區別在哪?

雖然認知計算包括人工智慧的一些要素,但前者是一個更寬泛的概念。認知計算不是製造「為人們思考」的機器,而是與「增加人類智慧」有關,能夠幫助人們更好地思考和做出更為全面的決定。

人工智慧的概念已經有二十多年了,人工智慧從歷史和研究角度來講主要目的是為了讓機器表現得「更像人」,我們稱之為Intelligent Behavior,它只是認知計算的一個維度。

IBM的認知計算從技術角度上來講和人工智慧是有很多共性的地方,比如機器學習(Machine Learning)、深度學習(Deep Learning)等方面都很類似。

但是,認知計算目的並不是為了取代人,認知計算的時候除了要能夠表現人和計算機的交互更加自然流暢之外,還會更多強調推理和學習,以及如何把這樣的能力結合具體的商業應用、解決商業的問題。


Deep learning在NLP沒有什麼實質性進展。因為NLP的維數太高,所以都是線性可分。


推薦閱讀:

如何評價Yann LeCun 說的「要研究機器學習,本科應盡量多學物理和數學課」?
如何評價 ICLR 2017 中關於 Rethinking Generalization 的那篇文章?
最優化問題中,牛頓法為什麼比梯度下降法求解需要的迭代次數更少?
Python 在網頁爬蟲、數據挖掘、機器學習和自然語言處理領域的應用情況如何?
什麼是機器學習?

TAG:機器學習 | 自然語言處理 | 深度學習(Deep Learning) |