一、什么是自然語言處理
- 自然語言處理是一門交叉學(xué)科,包括計算機科學(xué),人工智能和語言學(xué)
- 目標(biāo):讓計算機去處理或“理解”自然語言, 完成一些有用的任務(wù)例如問答系統(tǒng)、機器翻譯
- 完全理解或者表示語言的意義(甚至去定義它)都是一個虛幻的目標(biāo)
- 完美的理解語言是一個“AI-complete”的問題
對NLP的研究通常在5個Level上進行:
- 語音/文本分析:包括語言識別技術(shù)、OCR技術(shù)、分詞技術(shù)等
- 詞形分析:例如分析一個word的前后綴、詞根等
- 語法分析:從語法結(jié)構(gòu)上分析一個句子的構(gòu)成
- 語義分析:理解一個句子或單詞的語義
- 篇章分析:理解一段篇章的含義

自然語言處理的應(yīng)用:
- 應(yīng)用范圍從簡單到復(fù)雜
- 拼寫檢查, 關(guān)鍵詞提取&搜索,同義詞查找&替換
- 從網(wǎng)頁中提取有用的信息例如產(chǎn)品價格,日期,地址,人名或公司名等
- 分類,例如對教科書的文本進行分級,對長文本進行正負情緒判斷
- 機器翻譯
- 口語對話系統(tǒng)
- 復(fù)雜的問答系統(tǒng)
工業(yè)屆里的NLP應(yīng)用:
- 搜索引擎
- 在線廣告
- 自動的或輔助的翻譯技術(shù)
- 市場營銷或者金融交易領(lǐng)域的情感分析
- 語音識別
二、什么是深度學(xué)習(xí)
深度學(xué)習(xí)是機器學(xué)習(xí)的一個研究子領(lǐng)域。傳統(tǒng)機器學(xué)習(xí)算法面臨的一個問題是,模型的優(yōu)劣往往很大程度上依賴于特征的選取。例如如下圖所示,對于一個NER問題(Named Entity Recognition,命名實體識別),傳統(tǒng)的機器學(xué)習(xí)算法(如CRF)通常需要輸入目標(biāo)詞的大小寫特征,詞性特征,以及其上下文環(huán)境里的詞性分布等特征。

最終這些機器學(xué)習(xí)問題會變成優(yōu)化問題:優(yōu)化這些特征權(quán)重以達到最好的預(yù)測效果
而深度學(xué)習(xí)的魅力在于,其將特征的提取變成了一個自動化的學(xué)習(xí)過程。
深度學(xué)習(xí)是一類特征學(xué)習(xí)(Representation Learning)。它可以從原始數(shù)據(jù)(比如原始的像素點,原始的單詞甚至是字符)中自動學(xué)習(xí)到多個層次上的特征表達,并完成最終的分類或翻譯的任務(wù)。(這里的“深度”一詞可能會帶來歧義:例如對于下一節(jié)課將要學(xué)習(xí)到的word2vec模型。它其實是一個非常淺層的網(wǎng)絡(luò)模型。)

探索深度學(xué)習(xí)的原因:
- 人工設(shè)計的特征常常定義過多,不完整并且需要花費大量的時間去設(shè)計和驗證
- 自動學(xué)習(xí)的特征容易自適應(yīng),并且可以很快的學(xué)習(xí)
- 深度學(xué)習(xí)提供了一個彈性的,通用的學(xué)習(xí)框架用來表征自然的,視覺的和語言的信息。
- 深度學(xué)習(xí)可以用來學(xué)習(xí)非監(jiān)督的(來自于生文本)和有監(jiān)督的(帶有特別標(biāo)記的文本,例如正向和負向標(biāo)記)
- 在2006年深度學(xué)習(xí)技術(shù)開始在一些任務(wù)中表現(xiàn)出眾,為什么現(xiàn)在才熱起來?
- 深度學(xué)習(xí)技術(shù)受益于越來越多的數(shù)據(jù)
- 更快的機器與更多核CPU/GPU對深度學(xué)習(xí)的普及起了很大的促進作用
- 新的模型,算法和idea層出不窮
- 通過深度學(xué)習(xí)技術(shù)提升效果首先發(fā)生在語音識別和機器視覺領(lǐng)域,然后開始過渡到NLP領(lǐng)域
三、Deep Learning + NLP = Deep NLP
Deep Learning的技術(shù)首先是在語音識別和計算機視覺的領(lǐng)域里取得了重大突破,直到近些年才被廣泛地應(yīng)用于NLP領(lǐng)域中。接下來,簡單看下深度學(xué)習(xí)模型是如何幫助解決NLP難題的:
- 語音Phonology:
傳統(tǒng)的語音識別模型是通過人工建立一張語音詞表,將相似發(fā)音的字母劃分為一類;并借助一個分類模型實現(xiàn)語音到字母的轉(zhuǎn)譯。而深度學(xué)習(xí)模型將語音表達為一個embedding向量,可以直接從語音的向量特征中預(yù)測相應(yīng)的單詞。

詞形Morphology:
傳統(tǒng)的詞形學(xué)將一個單詞拆分為前綴、詞干、后綴的表達,這些前后綴和詞干統(tǒng)稱為Morpheme。而深度學(xué)習(xí)將每一個Morpheme都處理成一個向量的表達,并借助于一個Recursive Neural Network將不同的Morpheme向量拼接成一個向量——這個向量代表了相應(yīng)的Morpheme拼接后得到的單詞。這種將word表達成向量的思想在Deep NLP中十分基礎(chǔ)。如果我們將這些詞向量投影到一個二維平面上,會發(fā)現(xiàn)一些有趣的pattern。例如,相似的動詞集中出現(xiàn)在平面的同一片區(qū)域內(nèi)。句法分析Syntax
在得到了詞的表達后,接下來我們討論句子的結(jié)構(gòu)。傳統(tǒng)的句法分析將一個完整的句子解析成一棵語法樹——每一個節(jié)點對應(yīng)著一個特定的語法單元(例如,NP或VP)。而在深度學(xué)習(xí)中,我們可以對詞向量進行計算,得到短語乃至整個句子的向量表達。并基于這些向量完成后續(xù)的分類預(yù)測等任務(wù)。


- 語義分析Semantics
傳統(tǒng)的語義分析借助于一種叫做Lambda Calculus的技術(shù)。基本思想是在一棵句法樹上遞歸地調(diào)用人工事先設(shè)定的Lambda函數(shù)進行語義的計算。而在深度學(xué)習(xí)中,同樣地,我們對每一個單詞,每一個短語,乃至每一個邏輯關(guān)系(比如A∈B)都用一個向量去表達。借助于神經(jīng)網(wǎng)絡(luò)的計算,我們可以準確地預(yù)測兩個句子之間的邏輯關(guān)系(例如,if "all reptiles walk" then "some turtles move")。有趣的是,在深度學(xué)習(xí)中,我們并不需要事先定"reptiles"和"turtles","walk"和"move"之間的邏輯關(guān)系。


與傳統(tǒng)的NLP技術(shù)相比,Deep NLP核心思想在于 :everything can be a vector。無論是low level的音頻,還是high level的短語。深度神經(jīng)網(wǎng)絡(luò)模型將低level的vector組裝成更高level的vector,進一步完成分類、翻譯等高級任務(wù)。
NLP應(yīng)用:
情感分析
傳統(tǒng)的方法:精選的情感詞典+詞袋模型(忽略詞序)+人工設(shè)計的特征(很難覆蓋所有的信息)
深度學(xué)習(xí):和上述詞素,句法和語義相似的深度學(xué)習(xí)模型 --> RNN問答系統(tǒng)
傳統(tǒng)的方法:用了非常多的特征工程去獲取相關(guān)的知識,例如正則表達式,Berant et al. (2014)
深度學(xué)習(xí):和上述詞素,句法,語義,情感分析相似的深度學(xué)習(xí)模型機器翻譯
傳統(tǒng)的機器翻譯系統(tǒng)是一個非常大的復(fù)雜系統(tǒng)
深度學(xué)習(xí):源句子首先映射為向量,然后在輸出的時候進行句子生成
可以發(fā)現(xiàn)所有NLP層次的表示都涉及到向量(Vectors), 下一講如何來學(xué)習(xí)詞向量以及這些向量表示了什么?