為什麼 Deep Learning 目前在 NLP 上還沒有什麼成功的應用?


謝邀

其實現在比較成功的應用逐漸的變多了,許多常規的nlp問題也已經把之前的state-of-the-art刷了若干遍了。

補充一個在research中發現的極大阻礙nlp發展的問題 -- evaluation。

我們知道,現代科學是需要量化的實證的。量化的實證需要metric。在cv領域,大多數問題定義十分明確,性能優劣一目了然,visualization也十分清晰令人信服。但即使是在cv領域,不能量化評估的小方向,例如: style transfer還是無法成為一個主流的研究問題,因為沒法evaluate新的文章效果是否提升。回到nlp領域,我們知道自然語言高度多樣,高度主觀。許多經典問題其實metric並不完美。例如translation問題中的BLEU以及summarization問題中的ROUGE。這相當於無形中把researcher們導向了可實證或者能夠提升metrics的方向及方法。特別是最近比較火的一些language generation文章的實驗簡直不敢恭維。當然可能不是作者態度草率,而是真的沒辦法完美的得到量化結果。所以與其空談哲學、認知科學層面的高見,不如腳踏實地改善一下evaluation metrics。

水平有限,就提出一點微小的意見,很慚愧!


nlp上入dl兩年了大致有個自己的看法。

1 自然語言理解的困難

看了高贊說nlp特徵表示比cv明確的,我是表示反對的。

恰恰相反,個人認為,NLP領域之所以沒有廣泛的推廣deep learning,主要原因是其特徵相對圖像和語音而言,太好了。

只給你一個個像素點值,你肯定很難去理解一幅圖片什麼意思,同樣語音也一樣。

而給你一個個詞,你會很輕易的理解一句話什麼意思。

實際上這是常人對NLP最大的誤解,自然語言其實是非常難讓計算機理解的,因為「符號系統」除了和CV共性的識別問題,還有比CV更高的感知難度。所謂「理解」本質就是人腦對高度抽象的符號的「特徵重構」而不只是特徵抽取,把自然語言輸入給電腦,就相當於你不會英語,面對一個英國人對你說英語一樣,所謂的「輕易理解」完全是你掌握自己的母語的規則「輸入給自己」特別「好理解」的錯覺。詞語是高度離散、抽象的特徵,最麻煩的是這個特徵還附帶很強的歧義性。例如比喻就是語言的重要特性:像「暖心」和「熱心」應該因為暖和熱有近義被抽成相近的特徵么?人對語言的發明很大程度也是基於比喻的:即用一個詞聯繫上一個概念,如果好用那麼就成了一個習慣。相同的用語可以有很多含義,同樣同一個含義也有大量不同表示,事實上,語言到底能傳遞多少概念本來就是上個世紀的一大哲學問題,維特根斯坦就語言到底能傳達多少概念寫了長篇大論,大致的意思就是形式上的詞語對於表達概念(語義)是不完備的,這裡可能扯遠了,我也無力於哲學問題上展開所以就此打住。

上面說到詞語的高度抽象和歧義性,其實語言還具備不完全規則性遞歸性這兩個有些矛盾的特徵:任何語言都是有語法的,但是你卻找不到完備的規則來直接把自然語言當形式語言,因為語言的「發明」是成千上萬人在很長的時間中建立的「發言習慣」,還會隨時代產生用法的變化(比如當今的中文和明清白話就相去甚遠),因為語言是滿足交流功能的,為了好用而被不斷「改規則」,形式化規則實際上是結出來的果子而不是根。所以你即使在學校學了那麼多年語法紙上談兵,最後還是可能在考試看文獻、或者culture shock的時候發現自己是個英語渣。對了culture shock就是語言具備的知識關聯性,你的腦子從一個字句中抽出的特徵,肯定和你了解的相關context有關,這和機器從字句中抽特徵是一樣的。

換一個切入點,引用諾亞方舟李航博士的一段說明,個人認為概括的相當到位:

計算機和人腦有完全不同的架構,在當代計算機上實現不完全規則性和遞歸性,意味著進行複雜運算、處理,實現比喻性、知識關聯性、交互性就意味著進行全局窮舉,是否可行仍存愛很大的疑問,實現人對語言的輕易理解(抽特徵)需要全新的計算機架構,這意味著計算機科學的革命性進步。

2 自然語言處理和dl

自然語言理解是強ai問題,nlp之所以能實現是因為我們對於問題進行了大量簡化和限制,給自然語言問題找到近似的形式化解決,實際上所謂的特徵抽取,在人看來是「理解」,對機器則是怎麼有效怎麼定義,機器算出的minima有可能確實是類似人的理解,也有可能只是碰巧能極小化cost。然而定義自然語言處理任務優劣的最終還是人,這裡就是gap。

實際上進入DL階段後,抽取概念已經較統計時代有了質的飛躍,比如現在抽特徵的詞袋模型(bow)和各種向量建模(word2vec LDA topic2vec ...)都給後續的語言處理提供了便利,最大的便利就是dl可以根據應用場景的差異傾向於encode不同的語言特徵。比如下面這個neural syntax相關的論文就討論了向量建模中的特徵抽取

Does string-based neural MT learn source syntax

http://www.isi.edu/natural-language/mt/emnlp16-nmt-grammar.pdf

裡面就討論了對於翻譯任務對於源端句子的向量法能抽到什麼樣的「語義特徵」,作者選取從小到大不同粒度的特徵,分別是POS tag,SPC(smallest phrase constituent),TSS(top level syntax sequence),voice,tense。此處作者並沒有使用attention而是只有兩層LSTM(至少兩層網路就能擬合數據),方法就是用訓練好的MT系統中的兩層encoder嘗試做以上tag對應的解碼任務,看能有多少對於系統的提升。可以很明顯的看到實驗的結果表明了,對於autoencoder系統(E2E,English2english輸入還原輸入)embedding能很好地還原出POS tag(事實上autoencoder的抄寫任務是基本不涉及需要抽語義特徵的任務,以此作為對照),對於MT系統(E2G,English2german E2F,English2French)的encoder 得到的embedding可以很好地還原出和翻譯有關的tense、voice、POS、SPC、TSS的信息,同時對encoder進行保留主成分減枝(即實驗標籤的top10項目)依然能很好地還原諸如voice、tense這樣的高層語義。同時不同的syntax也被傾向於encode到了不同層(c0和c1)的cell上。這和人的直覺理解高度相關。

這種不可描述的自動性和靈活性比先前的統計時代的優勢在於很多時候你沒必要顯式特徵建模,甚至只要直接用NN就能捕捉到很多特徵,而且它捕捉的特徵是完全「任務導向」的,比如MT就能一口氣抽到上面提到的這5類syntax特徵(當然可能不止,還可能有很多語言學家都不一定發明過的句法特徵),到了簡單的應用場景,它也能就抽到剛好能解決問題的特徵,再想想IBM模型,從建模詞對齊,建模parsing POS tag chunk tense,每類特徵背後都是一片建模的「人民戰爭的汪洋大海」,不說特徵是否對任務助益,用形式化定義處理語言的不完全規則,提升零點幾個BLEU都難得。所以當前的NN解決了很多語言學形式化層面的特徵抽取,例如MT直接就彪出四五點,很大程度是NN建模語言不完全規則特徵的貢獻。

3 DL的天花板

NLP的天花板就是抽特徵帶來的,同樣當前的DL的抽特徵對於NLP的任務來說還是很初級的。cv任務中處理圖像特徵的信息NN就地抽取圖片庫就能滿足很多應用需要的信息量了,然而nlp要處理語言單純從語料中是抽不出很多應用中需要的足夠成型的特徵的,nlp上很多應用需求用cv來對應都在實現「ai看電影抽故事」的級別,如此有限的信息離構建語言表達的邏輯(等語義)還有很遠距離。上面說了還有諸如歧義性和知識關聯性的特徵就需要建模實體和知識庫,因為諸如歧義問題就是來源於語義所依託的不同背景知識產生的,限定背景知識,即想辦法讓dl捕捉利用到超出local的特徵才可能達到消歧。現在的dl依然是數據驅動的,跳出local訪問的可能性諸如神經圖靈機,可微分計算機都還在非常粗糙的階段,得到應用就必須解決實體建模和知識庫的抽象表示,所以大問題又來了,語言是知識的載體,頗有雞、蛋相生之感。

當然傳統的特徵抽取就現有DL而言還是不夠的,因為DL的黑箱性質把特徵抽成什麼樣,是好是壞都沒準,只能靠改網路結構蒙,理想的是用當前的DL建模一層「抽象語言」再根據上下文特徵細化成具體用語(比如zhang jiajun 的one sentence one model就很有抽象細化方向的意思),而這個抽象的粒度是很難界定的,即DL當前只解決了很有限的語義特徵抽取,這大致是當前DL在nlp的玻璃天花板了。

############

補充一下自己說「理解」的目的,因為NLP本質是要服務實際場景的,而常人對符號系統的處理任務就默認是要求達到一定感知標準的。比如人工翻譯最經常噴的「機器翻譯總是望文生義」,就是系統的符號表示能力無法滿足常人感知層面需求的體現。

最近看了Goodfellow(GAN之父)的那本深度學習,我認為序言寫的差不多是這個意思:當前DL完善了表示學習的坑,對於之前的模式識別來說是巨大飛躍,它解決了之前人們表示/處理數據的問題。

另外沒有壓低CV難度的意思,CV也有很多感知層的應用需求,畢竟總有一天人會希望機器「看一個眼色」的,而這貌似對世上很多EQ broken的人來說都不容易,和現階段我們希望機器「不說錯」一樣難。


NLP數據獲取比CV困難幾個數量級吧。

標數據的有語言學學位的一點兒都不稀奇,PhD也不稀奇。

CV的數據發到印度去,大媽就給你標了。

從數據的價格上也能反映出來,和MNIST相對應的Penn TreeBank在LDC上要1700美金。

更別說ImageNet這種推動領域大躍進的數據集了。估計在Google哪個伺服器上窖藏著呢。

且fit且珍惜


恰恰相反,個人認為,NLP領域之所以沒有廣泛的推廣deep learning,主要原因是其特徵相對圖像和語音而言,太好了。

只給你一個個像素點值,你肯定很難去理解一幅圖片什麼意思,同樣語音也一樣。

而給你一個個詞,你會很輕易的理解一句話什麼意思。

像一般的NLP任務,就用個簡單的線性SVM輔助一些關鍵字匹配就可以得到90%以上的準確率。

機器學習裡面,一般來說送進去分類器的特徵越好,分類器就越簡單,像圖像裡面之前的HOG運算元用個線性分類器效果就很好了。

當然NLP裡面有些比較高層的任務還是會用deep learning,例如google開源的word2vec就是用神經網路的。

----------------------------------------------------------------------------------------------------------------

2015-04-07最後一次更了,之前了解畢竟還是太淺,很多從工程角度來說的,有些概念上的錯誤。

1、我看好deeplearning在NLP的應用,只是現在可能還沒找到最佳的突破口,這個突破口不僅僅是NLP的應用突破,也是deeplearning自己的突破。

2、特徵太好我覺得可以理解成是因為「語言屬於人類認知過程中產生的高層認知抽象實體」。對於現在的很多NLP任務,基於規則的方法都能取得很好的效果,這樣的方法雖然在工程上效果很好,但是有本身的局限性,nlp的終極目的實現人機間自然語言交流,現有的常用方法從交流理解層面而言還是太淺。看好deeplearning的前景,能夠向這個終極目的跨一大步。

3、最後word2vec不能算是真正意義的deeplearning,只能說結構是神經網路,一是層次太淺,二是缺少輸出層和相關的應用相關。像評論有童鞋說的更像是一種embedding的方法,這種用神經網路的方法在這波deeplearning潮之前就有人做了。


1. 數據,印象中目前比較大的機器翻譯語料大概在200萬句子對,相比imagenet千萬級別的還是要小一些,考慮到機器翻譯的複雜度問題,相比就更少了。

2. 模型,個人感覺NLP一個問題就是無法合理的增加模型複雜性,像圖像中堆隱層是非常有效的做法,模型深度也經常兩位數。NLP中好像除了谷歌的某篇機器翻譯paper里有15層,大部分都是比較淺層的(RNN那種層不算的話)。也就是說NLP的複雜性不在越來越抽象這種層面上。

3.趨勢,最近LSTM,attention之類取得成功,其實就是在試圖更合理的增加模型複雜性,所以或許這是未來趨勢。

至於神經網路是不是和人一樣在學習這種問題,我覺得並不應該在意。

It doesn』t matter if deep learning mimics the brain. It matters if they work.

共勉


關鍵的問題還是NLP任務本身和圖像或者音頻的差異。NLP中文本是離散表示,相對構建特徵非常容易。最簡單的分詞任務用CRF模型寫幾個特徵模板就可以達到非常高的準確率。對這樣的任務留給dl本身的空間就很小了。當然dl在有一些任務中還是有幫助的。就拿我做的機器翻譯領域來說。現在公認用dl的技術可以帶來顯著的提升,今年ACL有篇BBN的神文,號稱可以比baseline提高6.0個bleu(一般能機器翻譯論文提高1.0個點就屬不易,我自己的實驗中用dl的技術可以提高1.5個點)。如果屬實,應該是這麼多年機器翻譯領域最大的突破了。 最後提一下很多人都談到的word embedding(例如google發布的word2vec)。很多NLP任務都是嘗試把embedding直接作為特徵使用。其實這種embedding表達並不一定能提升,反而不如直接聚類的標籤效果好。


早已經很多


自然語言處於一個比較尷尬的位置。如果做簡單的任務,比如分類,用詞做feature就可以做得很好。如果做複雜點的任務,就會面臨一個高維非線性空間,用unsupervised方法很難提取出有效的規則來,用supervised方法又需要的人工太多。


請搜Richard Socher

他的主頁有 tutorial: DL for NLP


覺得deep learning對machine translation有很大的前景


經過了一兩年的學習,對這個問題有了新的認識,更新一下回復,不見得全都是對的,僅供大家參考和交流。

1、在原來的回復中,我提到了圖像像素在灰度上的強度能反映到0-255的數值上(可參考分割線下方原來的回復)和相比之下文本的弊端,於是有同仁回復說詞表示可以解決這個問題。第一,我個人認為,詞表示並沒有發展到能夠代表詞語語義的地步,儘管很多NLP領域文章都用了這瓶泰國辣椒醬,作為特徵也對系統性能稍有提升,但到目前為止,誰能給出一個NLP領域DL已有重大突破(與ImageNet提升17%個百分點相當的)的案例?NLPer仍然步履維艱,DL提升十分有限。第二,有時候one-hot,VSM,TFIDF,再融合點PCA什麼的,真的不比詞向量效果差。

2、即便詞表示能很好的表示語義了,文本相對於圖像還是更不適合DL。因為圖像中存在的平坦區域和邊緣區域可以反映到輸入矩陣當中,但是詞向量,看過的人都知道,每一個維度和下一個維度的數值是不存在任何關聯的,即便從單個詞的角度能夠說明語義,但從整段文本的角度看,難以找到類似於圖像那樣的平坦區域和邊緣區域。而CNN之所以在圖像上效果好,我認為就得益於此。

3、如何去表示文本仍然是NLP的關鍵,但它不是NLP的終極目標。DL之所以火,是因為它是一種representation learning,免去了我們做feature engineering的工作(換來的是大量的參數調優工作,如何選層數、梯度下降、激活函數等等)。目前來看,NLP方面的DL很難做到充分的representation learning,原因還是之前拿NLP與圖像的比較。如果把圖像類比與人的視覺,那麼CNN就對應於人的眼睛和視神經;而語言則是一種深度抽象的信息,對應於人的大腦。如果說CNN的勝利是對視神經模擬的勝利,那麼我們應該如何讓DL去模擬人的大腦呢?

4、關於RNN、GRU、LSTM。這幾個DL模型確實更貼合NLP任務。但我認為,語言作為知識的載體,比圖像作為知識的載體,具有更高度的抽象性,而且傳遞的信息更複雜。一個3歲的小孩,它可以看懂1 2 3 4這些數字,但是他理解不了你現在看到的這些內容,它需要很多學習去構建自己大腦的知識庫,要成為一名DL+NLP的從業者之後才可以。也就是說,NLP需要一個強大的知識庫才能驅動,而圖像則不需要。所以RNN、GRU、LSTM雖然從形式上更貼近NLP,但我認為這都不能觸及NLP的本質。

或許那些正在努力構建本體、知識庫、維基百科的研究者才會真的帶來NLP的顛覆。

-----------------------------------以下是原來的回復----------------------------------

我剛開始接觸DL for NLP,DL在圖像領域取得了很大進展,但在NLP上卻鮮有突破,我覺得歸根結底是文字本身就固有的劣勢,而非數據量的問題。互聯網上絕大多數信息都是文字,數據並不缺少。

文字本身的劣勢,是與圖像相比的。先說圖像:假設使用autoEncoder模型,我們輸入的是一副全黑色的圖(每一個輸入都是1,假設只考慮灰度,8個位即表示一個像素,輸入16*16像素的圖像,那麼輸入節點有16*16*8), 經過訓練之後,假設輸出有一小部分0在裡邊,雖然沒有完全把輸入進行還原,但是基本上可以認為輸出是個合理的輸出,是接近於全黑色的。

在這個過程中因為圖像的像素是連續的,即從0 - 255,其灰度值是線性變化的,比方我們假定255是黑色,那麼可以說240是比較黑,而24是比較白。

但是這一點放到自然語言裡邊是行不通的。我們為了輸入自然語言,往往事先構造一個詞袋,把一個詞在詞袋中的位置編號作為它的輸入,假設我們總共有256個單詞,0號詞是a,1號詞是abandon,我們可以看出,a和abandon是毫無關係的。於是當我們的輸出值在數字上接近於輸入值時,我們不能說這個輸出跟輸入差不多(但圖像可以)。

個人的一點看法,還需進一步驗證。


nlp的終極突破還是靠機器理解力,因此nlp的解決實際上是強人工智慧的實現,目前的dl相比歷史上的神經網路模型主要是自動特徵提取上的進步,還屬於改善模式識別的範疇,而nlp屬於思維智能的範疇,是更高層次的智能行為。


deep learning的特徵是:learning the feature and the classifier at the same time. 也就是說,傳統意義上我們用SVM或者比較潛層的neural network做的比較好的問題,往往,其中的feature,是非常明顯的。這是個什麼意思呢,也就是,Deep learning,比如CNN(Convolutional neural network,卷積神經網路),會把我們的一個偉大的理想,構造一套可以自動化分析數據的系統,推進。

NLP就是一個非常典型的案例。相比於,語音處理和圖像處理,尤其是語音處理(deep learning在語音處理中的應用很成功,比如科大訊飛已經開發出了,可以識別人類聲紋,就是聲音的指紋嘛的黑科技,就是deep learning),找NLP裡頭的feature也要容易很多。不過,其實現在的話,Deep learning在NLP之中的應用,恐怕還是很多的。

另外,這個地方的feature,他具體是個什麼呢,不是我們想的那種,按照句法給定feature。恐怕其實更多的,找feature是從詞法方面去出發的。當然這個地方略微比較複雜了,涉及結巴分詞,條件概率,馬爾科夫模型等等一套東西。以後有空再說。

但比如說,我們現在要處理這個問題,翻譯一門死語言(貌似NLP在這方面沒有非常成功的案例)。如果是一門非常成熟的語言,比如漢語或者德語,我們可以搞出無數的feature。但是假如是一門死語言,比如古代的印度河流域居民所使用的文字(有一個德國天才曾經用了三十年的時間去試圖破譯但是失敗了),我們不知道他的feature,這種情況下,或許深度學習會有一天發揮神效。


dl 在NLP 已經開始發力了。 參看http://licstar.net/archives/328?


數據和特徵決定了效果的上限。

nlp每個方向的語料庫並不大,而問題本身抽象層次要高,不足以推動dl的效果。事實上,我認為傳統方法的效果也不一定好。

另外,對文本特徵的提取也不如圖像明確而有效。語言信息從來都不是文本本身所能完全體現的,對語言的理解是需要大腦的推理和聯想的。現在nlp的特徵都來源於文本本身的統計信息,這個就局限了。

nlp問題應該算是強ai問題。


和現在做的東西有關, 答一個。手機碼字, 見諒~

公司專業做手寫識別, 簡單的說就是把一個手寫的文檔識別成電子檔。

用的技術是RNN +LSTM, 效果怎麼樣?

簽了幾十家銀行做支票識別了, 能工業應用, 效果自然不會差。

語言有英語, 法語, 西班牙語, 目前正在開發中文和俄語。

中文的要難一些, label 和拉丁文不是一個數量級~

其實接觸deep learning 時間並不長, 但是真的很強大, 有好的儀器, 好的archi, 好的data, 可以做出很出色的東西~


我的理解是:dl最大的優勢是特徵提取和抽象,圖像數據其實是沒有經過任何加工和抽象的,所以dl在圖像數據上表現的很優異,但是文本卻相反,文本是人類高度智慧的結晶,對實體的描述進行了高度的抽象,所以產生了類似於LDA和word2vec的工具,可以說文本和圖像的處理是一個相反的過程


我感覺還是因為基本數據構造單元具有很大的差異,音頻和圖像都以二進位形式作為輸入以提取特徵,然後這種二進位是計算機可讀的基本單元而不是人類可讀的單元,最起碼我看一堆二進位大腦顯示不出來圖片,而自然語言是人類可讀的基本單元不是計算機可讀的,這樣,深度學習演算法在音頻和圖像能夠取得很好的效果而在NLP上並不能那麼令人滿意便可以接受了。也許,我們在NLP上需要找一個良好的轉化方法來進一步近似已有的音頻圖像的深度演算法應用。


你們應該看看從年初開始湧現的一批基於dl的machine translation的文章。提出了全新的model。比如bengio組的Cho的paper。


其實已經有很多現成的系統裡面使用了dnn,只不過不想圖形識別、語音識別,dnn幾乎是全部,在一個搜索系統或者廣告系統中,dnn只是一個部分而已。而且dnn對比現有的其他方法已經是有很大提升,可以參考natural language processing (almost) from scratch


推薦閱讀:

如何評價Google即將發表在ICML17上的Placement Optimization的論文?
如何在沒有有效指導的情況下學習深度學習?
什麼是創造力,AI可以獲得嗎?
如何評價谷歌剛推出的 AutoDraw?
深度學習和人工智慧之間是什麼樣的關係?

TAG:自然語言處理 | 深度學習DeepLearning |