梳理2003-2018年NLP詞語表示重要標誌、論文和簡介

本質上,天然語言理解 NLU 的核心問題其實就是如何從語言文字的表象符號中抽取出來蘊含在文字背後的真實意義,並將其用計算機可以讀懂的方式表徵出來。固然這一般對應的是數學語言,表徵是如此重要,以致於 2012 年的時候 Yoshua Bengio 做爲第一做者發表了一篇表徵學習的綜述 Representation Learning: A Review and New Perspectives,並隨後在 2013 年和深度學習三大巨頭的另外一位巨頭 Yann LeCun 牽頭創辦 ICLR,這一會議至今纔過去 5 年時間,現在已經是 AI 領域最負盛名的頂級會議之一。能夠說,探究 NLP 或 NLU 的歷史,一樣也是探究文本如何更有效表徵的歷史。git

1954 年 Harris 提出分佈假說(distributional hypothesis),這一假說認爲:上下文類似的詞,其語義也類似,1957 年 Firth 對分佈假說進行了進一步闡述和明確:詞的語義由其上下文決定(a word is characterized by the company it keeps),30 年後,深度學習 Hinton 也於 1986 年嘗試過詞的分佈式表示。github

時間 詞語表示的特徵 論文 解析
-2003 沒有統一表示詞語的方法,通常採起統計分析模式 NLP 中並無一個統一的方法去表示一段文本,各位前輩和大師們發明了許多的方法:從 one-hot 表示一個詞到用 bag-of-words 來表示一段文本,從 k-shingles 把一段文本切分紅一些文字片斷,到漢語中用各類序列標註方法將文本按語義進行分割,從 tf-idf 中用頻率的手段來表徵詞語的重要性,到 text-rank 中借鑑 page-rank 的方法來表徵詞語的權重,從基於 SVD 純數學分解詞文檔矩陣的 LSA,到 pLSA 中用機率手段來表徵文檔造成過程並將詞文檔矩陣的求解結果賦予機率含義,再到 LDA 中引入兩個共軛分佈從而完美引入先驗......
2003 詞語的分佈式表示 A Neural Probabilistic Language Model Bengio 在他的經典論文 A Neural Probabilistic Language Model 中,首次將深度學習的思想融入到語言模型中,並發現將訓練獲得的 NNLM(Neural Net Language Model,神經網絡語言模型)模型的第一層參數當作詞的分佈式表徵時,可以很好地獲取詞語之間的類似度。NNLM 的最主要貢獻是很是有創見性地將模型的第一層特徵映射矩陣當作詞的分佈式表示,從而能夠將一個詞表徵爲一個向量形式,這直接啓發了後來的 word2vec 的工做。
2007 2007 年 Mnih 和 Hinton 提出的 LBL 以及後續的一系列相關模型,省去了 NNLM 中的激活函數,直接把模型變成了一個線性變換,尤爲是後來將 Hierarchical Softmax 引入到 LBL 後,訓練效率進一步加強,可是表達能力不如 NNLM 這種神經網絡的結構。
2008 2008 年 Collobert 和 Weston 提出的 C&W 模型再也不利用語言模型的結構,而是將目標文本片斷總體當作輸入,而後預測這個片斷是真實文本的機率,因此它的工做主要是改變了目標輸出。因爲輸出只是一個機率大小,再也不是詞典大小,所以訓練效率大大提高,但因爲使用了這種比較「別緻」的目標輸出,使得它的詞向量表徵能力有限。
2010 2010 年 Mikolov 提出的 RNNLM 主要是爲了解決長程依賴關係,時間複雜度問題依然存在。
2013 word2vec;CBOW 模型;Skip-gram 模型 Efficient estimation of word representations in vector space;Distributed Representations of Words and Phrases and their Compositionality 其實 word2vec 只是一個工具,背後的模型是 CBOW 或者 Skip-gram,而且使用了 Hierarchical Softmax 或 Negative Sampling 這些訓練的優化方法。word2vec 對於前人的優化,主要是兩方面的工做:模型的簡化和訓練技巧的優化。word2vec 的出現,極大促進了 NLP 的發展,尤爲是促進了深度學習在 NLP 中的應用(不過有意思的是,word2vec 算法自己其實並非一個深度模型,它只有兩層全鏈接),利用預訓練好的詞向量來初始化網絡結構的第一層幾乎已經成了標配,尤爲是在只有少許監督數據的狀況下,若是不拿預訓練的 embedding 初始化第一層,幾乎能夠被認爲是在蠻幹。
2014 Glove GloVe: Global Vectors for Word Representation 它整個的算法框架都是基於矩陣分解的作法來獲取詞向量的,本質上和諸如 LSA 這種基於 SVD 的矩陣分解方法沒有什麼不一樣,只不過 SVD 分解太過於耗時,運算量巨大,相同點是 LSA 也是輸入共現矩陣,不過通常主要以詞-文檔共現矩陣爲主,另外,LSA 中的共現矩陣沒有作特殊處理,而 GloVe 考慮到了對距離較遠的詞對作相應的懲罰等等。然而,相比 word2vec,GloVe 卻更加充分的利用了詞的共現信息,word2vec 中則是直接粗暴的讓兩個向量的點乘相比其餘詞的點乘最大,至少在表面上看來彷佛是沒有用到詞的共現信息,不像 GloVe 這裏明確的就是擬合詞對的共現頻率。
2015 Skip-shoughts Skip-Thought Vectors 2015 年,多倫多大學的 Kiros 等人提出了一個頗有意思的方法叫 Skip-thoughts。一樣也是借鑑了 Skip-gram 的思想,可是和 PV-DBOW 中利用文檔來預測詞的作法不同的是,Skip-thoughts 直接在句子間進行預測,也就是將 Skip-gram 中以詞爲基本單位,替換成了以句子爲基本單位,具體作法就是選定一個窗口,遍歷其中的句子,而後分別利用當前句子去預測和輸出它的上一句和下一句。對於句子的建模利用的 RNN 的 sequence 結構,預測上一個和下一個句子時候,也是利用的一個 sequence 的 RNN 來生成句子中的每個詞,因此這個結構本質上就是一個 Encoder-Decoder 框架,只不過和普通框架不同的是,Skip-thoughts 有兩個 Decoder。
2016 fasttext FastText.zip: Compressing text classification models word2vec 和 GloVe 都不須要人工標記的監督數據,只須要語言內部存在的監督信號便可以完成訓練。而與此相對應的,fastText 則是利用帶有監督標記的文本分類數據完成訓練。在輸入數據上,CBOW 輸入的是一段區間中除去目標詞以外的全部其餘詞的向量加和或平均,而 fastText 爲了利用更多的語序信息,將 bag-of-words 變成了 bag-of-features,也就是下圖中的輸入 x 再也不僅僅是一個詞,還能夠加上 bigram 或者是 trigram 的信息等等。第二個不一樣在於,CBOW 預測目標是語境中的一個詞,而 fastText 預測目標是當前這段輸入文本的類別。fastText 最大的特色在於快。
2017 InferSent 框架 Supervised Learning of Universal Sentence Representations from Natural Language Inference Data 除了 Skip-thoughts 和 Quick-thoughts 這兩種不須要人工標記數據的模型以外,還有一些從監督數據中學習句子表示的方法。好比 2017 年 Facebook 的研究人員 Conneau 等人提出的 InferSent 框架,它的思想特別簡單,先設計一個模型在斯坦福的 SNLI(Stanford Natural Language Inference)數據集上訓練,然後將訓練好的模型當作特徵提取器,以此來得到一個句子的向量表示,再將這個句子的表示應用在新的分類任務上,來評估句子向量的優劣。
2018_2 ELMo Deep contextualized word representations 該研究提出了一種新型深度語境化詞表徵,可對詞使用的複雜特徵(如句法和語義)和詞使用在語言語境中的變化進行建模(即對多義詞進行建模)。這些表徵能夠輕鬆添加至已有模型,並在 6 個 NLP 問題中顯著提升當前最優性能。
2018_3 Quick thoughts An efficient framework for learning sentence representations 2018 年的時候,在 Skip-thoughts 的基礎上,Google Brain 的 Logeswaran 等人將這一思想作了進一步改進,他們認爲 Skip-thoughts 的 Decoder 效率過低,且沒法在大規模語料上很好的訓練(這是 RNN 結構的通病)。因此他們把 Skip-thoughts 的生成任務改進成爲了一個分類任務,具體說來就是把同一個上下文窗口中的句子對標記爲正例,把不是出如今同一個上下文窗口中的句子對標記爲負例,並將這些句子對輸入模型,讓模型判斷這些句子對是不是同一個上下文窗口中,很明顯,這是一個分類任務。能夠說,僅僅幾個月以後的 BERT 正是利用的這種思路。而這些方法都和 Skip-thoughts 一脈相承。
2018_3 Learning General Purpose Distributed Sentence Representations via Large Scale Multi-task Learning 提出了利用四種不一樣的監督任務來聯合學習句子的表徵,這四種任務分別是:Natural Language Inference,Skip-thougts,Neural Machine Translation 以及 Constituency Parsing 等。
2018_3 Universal Sentence Encoder 谷歌的 Daniel Cer 等人在論文 Universal Sentence Encoder 中提出的思路基本和 General Purpose Sentence Representation 的工做同樣,只不過做者提出了利用 Transformer 和 DAN(上文提到過的和 CBOW 與 fastText 都神似的 Deep Unordered Composition Rivals Syntactic Methods for Text Classification)兩種框架做爲句子的 Encoder。
2018_6 openai-GPT Improving Language Understanding by Generative Pre-Training OpenAI 最近經過一個與任務無關的可擴展系統在一系列語言任務中得到了當前最優的性能,目前他們已經發布了該系統。OpenAI 表示他們的方法主要結合了兩個已存的研究,即 Transformer 和無監督預訓練。實驗結果提供了很是使人信服的證據,其代表聯合監督學習方法和無監督預訓練可以獲得很是好的性能。這實際上是不少研究者過去探索過的領域,OpenAI 也但願他們此次的實驗結果能激發更加深刻的研究,並在更大和更多的數據集上測試聯合監督學習與無監督預訓練的性能。
2018_10 Google-BERT BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding 論文介紹了一種新的語言表徵模型 BERT,意爲來自 Transformer 的雙向編碼器表徵(Bidirectional Encoder Representations from Transformers)。與最近的語言表徵模型(Peters et al., 2018; Radford et al., 2018)不一樣,BERT 旨在基於全部層的左、右語境來預訓練深度雙向表徵。所以,預訓練的 BERT 表徵能夠僅用一個額外的輸出層進行微調,進而爲不少任務(如問答和語言推斷任務)建立當前最優模型,無需對任務特定架構作出大量修改。BERT 的概念很簡單,但實驗效果很強大。它刷新了 11 個 NLP 任務的當前最優結果,包括將 GLUE 基準提高至 80.4%(7.6% 的絕對改進)、將 MultiNLI 的準確率提升到 86.7%(5.6% 的絕對改進),以及將 SQuAD v1.1 的問答測試 F1 得分提升至 93.2 分(提升 1.5 分)——比人類表現還高出 2 分。

更多內容,見望江智庫 yuanxiaosc.github.io/算法

相關文章
相關標籤/搜索