本文根據達觀數據特聘專家復旦大學黃萱菁教授在達觀數據舉辦的長三角人工智能應用創新張江峯會上的演講整理而成,達觀數據副總裁魏芳博士統稿
天然語言是指漢語、英語、德語、俄語等人們平常使用的語言,是天然而然的隨着人類社會發展演變而來的語言,而不是人造的語言。咱們平時說的口語還有書面語,這些都是天然語言,還有其餘的語言,好比說手語等等。它區別於人工語言,如程序設計的語言。
對於語言的理解是一個很是重要的任務,到目前爲止人類知識80%都是採用天然語言文字進行記載的。對於天然語言的處理,稱爲天然語言處理(簡稱:NLP),是指用計算機對天然語言的形、音、義等信息進行處理,即對字、詞、句、篇章的輸入、輸出、識別、分析、理解、生成等的操做和加工。天然語言處理在人工智能的地位有一個很是形象的比喻,它是人工智能皇冠上的明珠。可見天然語言處理的問題解決了不少人工智能問題也就解決了。總的來講相比較人工智能其它領域(好比計算機視覺、語音識別),天然語言的理解難度更大一些,因此如今已經有不少的獨角獸這種級別的語音識別公司,好比科大訊飛、Face++等等,可是在天然語言處理方面還須要更多的努力。達觀數據正是在這方面進行努力探索的企業。程序員
天然語言處理通常分紅兩塊,一種叫作天然語言理解,一種叫作天然語言生成。天然語言理解是指計算機可以理解天然語言文本的意義,天然語言生成則是指能以天然語言文原本表達給定的意圖。好比高考的時候要作閱讀理解,這就叫作天然語言的理解。考生寫做文,叫作天然語言的生成。可是高考的時候是人來作,如今由計算機來作。對計算機輸入一段天然語言文本,咱們但願它可以:算法
問答——能正確回答輸入文本中的問題文摘生成——有能力產生輸入文本的摘要網絡
釋義——用不一樣的詞語和語句複述輸入翻譯——把一種語言(源語言)翻譯爲另外一種語言(目標語言)架構
這些都是天然語言理解的功能。若是計算機能夠完成其中一個任務,咱們能夠認爲它經過了圖靈測試,就至關於人工智能,其它相似。框架
天然語言的理解和分析是一個層次化的過程,許多語言學家把這一過程分爲五個層次,即**語音分析、詞法分析、句法分析、語義分析和語用分析。分佈式
語音分析是要根據音位規則,從語音流中區分出一個個獨立的音素(最小可獨立的聲音單元),再根據音位形態規則找出音節及其對應的詞素或詞。工具
詞法分析是找出詞彙的各個詞素,從中得到語言學的信息。性能
例如:「咱們研究全部東西」這句話學習
• 咱們--研究所--有--東西(交叉歧義)• 咱們--研究--全部--東西測試
把手放在桌上
• 把--手--放在--桌上 (組合歧義)• 把手--放在--桌上
中文分詞是中文所特有的詞法分析。
中文因爲繼承自古代漢語的傳統,詞語之間沒有分隔。這是由於古代漢語中除了連綿詞和人名地名等,詞一般就是單個漢字,因此當時沒有分詞書寫的必要。現代漢語的基本表達單元爲「詞」,以雙字或多字詞居多,一個字再也不等同於一個詞。
句法分析是對句子和短語的結構進行分析,目的是要找出詞、短語等的相互關係以及各自在句中的做用。
例如:
• 反對│的│是│少數人 (反對的是少數人,究竟是少數人提出反對仍是少數人被反對)• 咬死了|獵人|的|狗 (咬死了獵人的狗仍是一隻咬死了獵人的狗)
• Put the frog on the napkin(把青蛙放在餐巾上)
• Put the frog on the napkin in the box(把餐巾上的青蛙放在盒子裏)
圖1
語義分析是找出詞義、結構意義及其結合意義,從而肯定語言所表達的真正含義或概念。好比說一樣三個字,「你打我」和「我打你」,意思是徹底不一樣的。這叫作詞義分析。詞義分析是很是困難的一個任務,這幾年有很是大的進展。
語用分析是研究語言所存在的外界環境對語言使用者所產生的影響。 描述語言的環境知識、語言與語言使用者在某個給定語言環境中的關係。
好比說吃一個漢堡包,這個話的意思是取決於誰對誰說,若是是一個小孩子和媽媽說要吃一個漢堡包,這叫作請求。若是一個孩子是很霸道的,這個媽媽徹底被孩子所左右,小孩子對媽媽說要吃一個漢堡包,可能就是一個命令。若是是顧客到店裏多是一個交易行爲的發起。因此語義上彷佛明確的一句話,在不一樣的上下文中也有不一樣的含義。
有人問語言還須要表示嗎?答案是確定的。
認知科學領域認爲表示學習是語言在人腦中的表現形式,關係到人類如何理解和產生語言。
人工智能領域認爲表示學習是學習語言的形式化或數學描述,以便在計算機中表示語言,並能讓計算機程序自動處理。
早期的語言表示方法: 符號化的離散表示。
• 詞表示爲One-Hot向量(一維爲一、其他維爲0的向量)
• 元模型等方法進行轉換
離散表示的缺點: 詞與詞之間沒有距離的概念,好比「電腦」和「計算機」被當作是兩個不一樣的詞。除此以外還有從心理的角度,有哲學的角度來研究客觀世界和萬物是怎麼理解的,咱們通常是從人工智能的角度來了解語言的表示。
概念介紹
前面介紹了天然語言理解和表示學習,實際上表示學習在前深度學習時代並不太多被說起。表示學習和深度學習的興起是密切相關。
深度學習源於人工神經網絡的研究,它是神經網絡從新包裝後新的說法。深度指的是神經網絡的多層。深度學習經過組合低層特徵造成更加抽象的高層表示屬性類別或特徵,以發現數據的分佈式特徵表示。
圖2
深度學習的概念由Hinton等人於2006年提出。Hinton用深度的網絡進行圖像理解,取得了很好的結果。以後他們在圖像識別方面取得了很好的成績,以後今後你們都在作深度學習。
圖3
圖4
上述兩個圖,一個圖是作語音識別,語音識別用於深度學習以後能夠大幅度的進行性能的提高。另一個是計算機視覺,計算機視覺用了深度學習以後,能夠先識別圖像的邊緣,後識別圖像的組件,最後能夠組裝成物體,也會取得很好的結果。
在天然語言的表示學習中說起深度學習這是由於深度學習首要的用處就是進行天然語言的表示。差很少在2013年左右時間天然語言處理才普遍地引入了深度學習的概念。深度學習用於天然語言表示,一方面咱們能夠獲得字、詞、句子等多粒度的分佈式語言表示。
字、詞:詞嵌入
句子:卷積網絡、循環網絡、遞歸網絡、PV
篇章:層次結構(先句子,後篇章)
符號:網絡,知識圖譜等
(採用各類各樣的神經網絡模型,好比說循環等等,能夠獲得各類語言單元的表示。)
另一方面用於情感分析和自動問答等服務。在這類語言表示中用到一類序列到序列模型(循環網絡/LSTM),它能夠配合注意力模型和外部的記憶單元合做,能夠解決長距離的依賴,取得比較好的效果。甚至能夠涵蓋機器翻譯、自動問答、序列標註、文本摘要等大部分場景。圖5是深度學習在天然語言理解中應用描述。
圖5
深度學習帶來的新變化
深度學習給天然語言處理帶來了什麼變化?
1.性能從追趕到超越。幾乎全部的天然語言處理任務中深度學習的性能均可以達到或者是超越原有辦法。
2.語義變得更爲重要。有了分佈式的離散表示,深度學習讓語義變得可計算,咱們能夠獲得字詞句子篇章的向量,就使得語義真正能夠用起來。
3.不斷出現的新「玩法」、新應用場景。好比說看圖說話,甚至是給一個意圖,讓計算機畫畫,作詩、做詞、寫歌、寫程序。未來的程序員可能也是有必定危機的崗位,計算機有可能代替程序員寫代碼。對於寫做方面,如今能夠寫新聞稿,能夠寫天氣預報,不久的未來可能能夠寫小說等等,這些都是計算機用深度學習能夠作的事情。
4.門檻下降。深度學習使得自動問答和機器翻譯的門檻下降。也許一個一年級的研究生,看了幾本深度學習的書本,甚至就可以發表很好的文章,提出很好的算法。因此說這是一個競爭很激烈的行業。
在人工智能新時代不只有很好的深度學習算法,還有社會媒體的大數據(如圖六、圖7和圖8所示)。
圖6
圖7
圖8
這些豐富的社會媒體大數據包含了比較鮮活的網絡語言,也帶來了不少有價值的數據,也有不少標註的數據,對天然語言處理帶來講是很大的資源。
圖9
圖10
人工智能新時代還給咱們帶來了超強的計算平臺(如圖9和圖10所示),也是天然語言處理的基礎。深度學習和神經網絡的算法很早就有人提出,可是那個時候的模型不能太複雜,數據不夠多,由於計算機的能力不夠。如今咱們能夠用GPU,還有不少存儲、框架管理和開源工具,進行快速有效的計算,因此近些年來咱們不少領域的研究都有新的進展。
這部分主要介紹基於神經網絡的表示學習。它的定義爲:
將語言的潛在語法或語義特徵分佈式地存儲在一組神經元中,用稠密、低維、連續的向量來表示。這裏稠密是指向量不是由大量0或1組成。
這種表示具體能夠用來學習詞語、短語、句子和句對。以下圖所示:
圖11
對詞語咱們能夠進行預訓練,也能夠爲下一個任務服務。對短語和句子來講直接就能夠做爲一個任務,好比說對句子進行情感分類,首先經過各類各樣語言的組合,進行不一樣向量的表示。咱們還能夠作句對,能夠判斷相應兩個句子之間的關係,判斷句子和答案之間是否匹配。還能夠判斷前提和結果之間的關係,因果關係對比,這些都是用神經網絡能夠作的事。以下圖所示。
圖12
基於神經網絡的表示學習在詞語中的發展情況以下圖所示。
圖13
2013年以前: 少許研究工做 [Bengio, Hinton]2013年以後: 大量新工做
2016年以後: 漸漸冷卻
這個領域涉及到的算法有:
基於預測的詞表示學習-word2vec算法
高效的無監督學習詞表示
Code :code.google.com/p/word2vec/
圖14
詳細內容可參閱文章:Efficient estimation ofword representations in vector space, NIPS 2013
基於計數的詞表示學習- GloVe 算法
這個詞向量算法是斯坦福作的,它的目標若是一對詞對常常在一塊兒那麼它們的內積和貢獻的機率類似。直接建模詞對,
的共現頻率
和它們內積的關係:
基於篇章,它們也提供了不多的預訓練的詞向量,不少人用,也有必定的代碼,如今深度學習這個時代開源是一種趨勢。
Code and Pre-trained word vectors: http://nlp.stanford.edu/proje...
詳細內容可參閱文章:Glove: Global vectors for wordrepresentation, EMNLP 2014
多義詞的表示學習
簡單介紹一下復旦在詞表示方面的工做,咱們作的是多義詞的表示。好比說一樣一個詞「紅」,可能表示的是顏色或者是革命。若是用單一一個詞項表示可能會有問題,在特定的話題下(好比說咱們講的是政治類、革命),這個時候應該取第二個意思。若是是和顏色、抒情相關極可能指的是紅色。這就使得要經過進行輪迴學習,咱們要學習詞語和這個話題的語義向量。那麼多義詞的研究目的就是要學習多義詞的表示向量和利用神經張量模型同時學習詞語和話題的語義表示。
圖15
詳細內容可參閱文章:Learning Context-Sensitive Word Embeddings with Neural TensorSkip-Gram Model, IJCAI 2015
基於神經網絡的表示學習在短語和句子的發展情況以下圖所示。
圖 16
這個領域的工做大體能夠分紅三期。第一期是2013年之前會用遞歸神經網絡。遞歸神經網絡就是會給出一個句子的成分結構,句子是由主語和謂語組成,謂語是由謂詞+賓語等等,主語之間可能還有一些修飾成分。由於工做自己不太好並行化,因此2014年以後比較多的採用卷積神經網絡,它具備易並行化的特色,採用比較粗暴的方法產生出全部可能可能的語義組合,最後獲得最可能的表示。以後大概2014年、2015年最多見地是用循環神經網絡來進行詞語的表示,能夠從一個句子的頭部到句子的尾部,最後獲得一個詞語的表示向量。
這個領域涉及到的算法內容有:
卷積神經網對句子建模
經過動態pooling,解決句子變長問題。
圖 17
詳細內容可參閱文章:
A ConvolutionalNeural Network for Modelling Sentences,ACL 2014
循環神經網絡對句子建模
循環神經網絡涉及到普通循環神經網(Vanilla RNN) 、長短時記憶單元(LongShort-term Memory)和門循環單元(GatedRecurrent Unit)。
循環神經網絡是指網絡中間的狀態,狀態是時刻變化的。在每個時刻咱們輸出一個詞,根據輸入的詞能夠產生下一時刻的狀態,最後一個時刻的狀態就是句子的表示。另外傳統循環神經網絡可能會帶來梯度離散的問題,咱們會引入一些長短時的記憶和循環,而且加以改進。
圖 18
詳細內容可參閱文章:
EmpiricalEvaluation of Gated Recurrent Neural Networks on Sequence Modeling, NIPSworkshop 2014
基於注意力的序列-序列模型: 文摘和機器翻譯
循環神經網絡若是加了注意力很容易用到作編碼、解碼模型,能夠進行機器翻譯。先讀原語言句子,產生一箇中間表示,這就要用到神經網絡來作。從中間表示生成出來目標語言句子,在生成的時候還會有重點的選取編碼信息,採用注意力的機制,回顧到輸入句子,而後產生輸出。這就是一個如今標準神經網絡機器翻譯的建模模型。
在解碼過程當中有重點地選取編碼的信息,以下圖所示。
圖19
詳細內容可參閱文章:
1.Neural machinetranslation by jointly learning to align and translate ICLR 2015
2.A Neural Attention Model for Sentence Summarization EMNLP 2015
建模複雜的稠密特徵組合---基於門機制的遞歸神經網絡
面對複雜的稠密特徵組合,能夠用基於門機制的遞歸神經網絡進行表示。好比說「下雨天地面積水」,如何獲得這個句子的表示?能夠兩兩組合相鄰的兩個字,最後發現字和字之間構成了右邊的結構樹(以下圖所示),利用這個樹來組合語義,才能獲得整個句子的語義。
圖20
詳細內容可參閱文章:
1.Gated recursive neural network for Chinese word segmentation, ACL2015
2.Sentencemodeling with gated recursive neural network, EMNLP 2015
3.Transition-baseddependency parsing using two heterogeneous gated recursive neural networks,EMNLP 2015
基於門遞歸神經網絡的中文分詞
圖21
詳細內容可參閱文章:
Gated recursive neural network for Chinese word segmentation, ACL2015
遞歸卷積神經網絡
研究它動機有兩點:一是遞歸神經網絡支持的拓撲結構有限(二叉樹)。二是如何融合遞歸神經網絡以及卷積神經網絡。
圖22
詳細內容可參閱文章:
A Re-Ranking ModelFor Dependency Parser With Recursive Convolutional Neural Network, ACL 2015
多時間週期的記憶神經網絡
研究它動機有兩點:記憶網絡中長週期的記憶更新效率比較低和長週期記憶和短週期記憶的影響機制。
圖23
詳細內容可參閱文章:
Multi-timescalelong short-term memory neural network for modelling sentences and documents,EMNLP 2015
這一領域涉及到的內容主要有:
建模複雜的稠密特徵組合——卷積張量神經網絡
研究它動機有兩點:天然語言處理中大部分神經模型並不深和主要得益於分佈式表示(稠密向量)。
圖24
這是自動問答的一個比較好的模型。建模兩個句子之間的關係,一般的想法是產生相似於向量類似度來作,能夠作的更加複雜一點,好比說用一個向量神經區域枚舉,能夠捕捉兩個向量表之間的類似度,取得了更好的結果。
詳細內容可參閱文章:
1.Convolutionalneural tensor network architecture for community-based question answering,IJCAI 2015
2.LearningContext-Sensitive Word Embeddings with Neural Tensor Skip-Gram Model, IJCAI2015
語篇關係表示與檢測
研究它動機有兩點:一是單詞向量表示之差表示了單詞間的關係,二是句子之間的關係如何表示?
圖25
詳細內容可參閱文章:
DiscourseRelations Detection via a Mixed Generative-Discriminative Framework, AAAI 2016
利用GRN進行語篇關係檢測
使用句子的隱狀態, 而非直接使用詞向量。
使用GRN(gated relevance network) 建模隱狀態之間的交互關係。
圖26
詳細內容可參閱文章:
Implicit DiscourseRelation Detection via a Deep Architecture with Gated Relevance Network, ACL2016
微博標籤(Hashtag)推薦
研究它動機有三點:一是CNN在天然語言處理任務中取得不少進展,二是將標籤推薦建模爲標籤和微博之間的匹配問題,三是要考慮Attention機制如何與CNN結合。
圖27
詳細內容可參閱文章:
HashtagRecommendation using Attention-based Convolutional Neural Network, IJCAI 2016
目前NLP的所謂的「深度學習」 多數是淺層學習。在語言處理中常常只有淺層,好比說一層兩層,最多像谷歌進行到八層,可是視覺有一千多層網絡,怎麼樣進行真正的深度學習也是一個趨勢。它的發展主要受益於「分佈式」表示。
咱們但願有標誌性的數據相似於計算機系統中天然語言處理的imageNet,AlexNet,GoogleNet和ResNet出現。
好比把多任務學習,對抗學習和非監督學習加入到天然語言處理中。好比說利用基於對抗網絡,進行分詞,分詞過程當中分紅兩種,一種是和標準相關,一種無關。咱們通過對抗學習以後可使得和標準語料無關的徹底無關,這樣就能夠對這部分特徵進行學習,取得比較好的效果。相似的內容可參考「面向多任務學習的循環神經網絡共享機制」「基於對抗網絡的多標準分詞」等工做。
生物學啓發模型如今已經對視覺的卷積神經網絡有啓發意義,咱們期待引入到天然語言處理中。這是一個將來的研究方向。
知其然,還要知其因此然。計算機視覺中有大量的相關工做可借鑑。將來咱們但願天然語言產生的表示是可看得懂的和爲何是好地。在這個方面咱們也作了必定的工做,可參閱「LSTM架構的認知解釋」,「神經網絡模型編碼了哪些語言學特徵」和「序列模型編碼了哪些語言學特徵?」等。
圖28 2017新興技術成熟度曲線(來源:Gartner 2017年7月)
不管是人工智能仍是深度學習的探索都還任重道遠,總結來講可歸納爲三句話:
1.深度學習給天然語言處理帶來新生命力
2.雖然已經取得諸多成果,依然任重道遠
3.有多少人工,就有多少智能