【NLP-词向量】词向量的由来及本质
詞嵌入是所有自然語言處理任務所必須要經歷的步驟,非常的重要。詞向量在網絡上已經有了大量的文章,但是,出于我們專欄的完整性系統性的考慮,筆者還是決定加上這樣一個專題。
計劃用3-4次,徹底說清楚在自然語言處理中,詞向量的由來,本質和訓練。公眾號專欄主要講基本原理,知識星球講實際的操作。
本篇主要講述詞向量的由來及本質。
作者&編輯 | 小Dream哥
1 詞的向量化
首先,我們提出這樣一個問題,一個文本,經過分詞之后,送入某一個自然語言處理模型之前該如何表示?
例如,“人/如果/沒用/夢想/,/跟/咸魚/還有/什么/差別”,向機器學習模型直接輸入字符串顯然是不明智的,不便于模型進行計算和文本之間的比較。那么,我們需要一種方式來表示一個文本,這種文本表示方式要能夠便于進行文本之間的比較,計算等。最容易想到的,就是對文本進行向量化的表示。例如,根據語料庫的分詞結果,建立一個詞典,每個詞用一個向量來表示,這樣就可以將文本向量化了。
最早的文本向量化方法是詞袋模型,我們先來看看詞袋模型。
2 詞袋模型
要講詞向量,我們首先不得不說的就是詞袋模型。詞袋模型是把文本看成是由一袋一袋的詞構成的。例如,有這樣兩個文本:
1) “人/如果/沒有/夢想/,/跟/咸魚/還有/什么/差別”
2) “人生/短短/幾十/年/,差別/不大/,/開心/最/重要”
這兩個文本,可以構成這樣一個詞典:
{“人”,“如果”,“沒有”, “夢想”, “,”,“跟”, “咸魚”?, “還有”,“什么”, “差別”, “人生”, “短短”, “幾十”,“年”, “不大”, “開心”, “最”, “重要”}
字典的長度為18,每個詞對應有一個index,所以詞“人”可以用一個18維的向量表示表示:
{1,0,0,0,····,0}
詞“重要”可以用一個18維的向量表示表示:
{0,0,0,0,····,1},
那么,文本該怎么表示呢?詞袋模型把文本當成一個由詞組成的袋子,記錄句子中包含各個詞的個數:
文本1:
{1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0, 0}
文本2:
{0,0,0,0,2,0,0,0,0,1,1,1,1,1,1,1,1,1}
我們大概總結一下,詞袋模型把文本看成是一個裝著詞的袋子,以文本2為例,用詞袋模型可以這樣描述它。文本2里有0個“人”,2個“,”, 1個“差別” 等等。所以詞袋模型有以下特點:
1) 文本向量化之后的維度與詞典的大小相關;
2) 詞袋模型沒有考慮詞語之間的順序關系。
這只是兩個句子,所以詞典的大小是18。當語料庫很大時,詞典的大小可以是幾千甚至幾萬,這樣大維度的向量,計算機很難去計算。
而且就算是只有一個詞的句子,它的維度仍然是幾千維,存在很大的浪費。
此外,詞袋模型忽略了詞序信息,對語義理解來講是一個極大的信息浪費。最后,詞袋模型會造成語義鴻溝現象,即兩個表達意思很接近的文本,可能其文本向量差距很大。
所以,詞袋模型并不是一個好的解決方案。接下來,詞向量就“粉墨登場”了。
3 詞向量
相比于詞袋模型,詞向量是一種更為有效的表征方式。怎么理解呢?詞向量其實就是用一個一定維度(例如128,256維)的向量來表示詞典里的詞。
經過訓練之后的詞向量,能夠表征詞語之間的關系。例如,“香蕉”和“蘋果”之間的距離,會比“香蕉”和“茄子”之間的距離要近。
通過多維向量表示,也能更為方便的進行計算。例如,“女人”+“漂亮” =“女神”。
那么,該如何獲取詞向量呢?我們先來看看神經概率語言模型。
4 神經概率語言模型
一個語言模型通常構建為一句話的概率分布p(W),這里的p(W)實際上反映的是W作為一個句子出現的概率。?說成大白話,語言模型就是計算某個句子出現的概率。
?對于一個由T個詞按順序構成的句子,P(W)實際上求解的是字符串的聯合概率,利用貝葉斯公式,鏈式分解如下:
從上面可以看到,一個統計語言模型可以表示成,給定前面的的詞,求后面一個詞出現的條件概率。
我們在求P(W)時實際上就已經建立了一個模型,這里的諸多條件概率就是模型的參數。如果能夠通過語料,將這些參數已學習到,就能夠計算出一個句子出現的概率。
那么該如何學習這些條件概率呢?Yoshua Bengio在2003年《A Neural Probabilistic Language Model》一文中提出了一種神經網絡的方法,用于語言模型的計算。
如上圖所示,是一個簡單的神經網絡。首先,將輸入語料進行分詞,并向量化(隨機初始化成為一個N維的向量),然后將他們拼接起來,用如下的公式表示:
隨后,將上述的拼接結果分別經過一個激活函數和線性連接,并將二者的結果直接相加。此時,y的維度是(|V|, 1),|V|表示語料詞表的大小。
最后,接一個softmax函數,預測出下一個詞是目標詞的概率。
訓練時,會設計損失函數,用梯度下降的方法,優化參數。
在訓練過程中,我們優化了如下的參數:
其中C為我們之前隨機初始化的向量,但是在訓練過程中,得到了不斷的優化。
因此,在神經網絡訓練完成之后,我們不但得到了一個能夠預測句子出現概率的模型,也得到了一份詞向量,它能夠表示詞語之間的關系。
5 總結
上面詳細介紹了詞向量的來歷和作用,并介紹了一種詞向量的訓練方法。
在實際過程中,并不是用上述神經網絡來訓練詞向量的因為詞向量是如此的重要,NLP工作者們設計了專門的網絡來訓練詞向量。目前用的最多的有word2vec和GLove。這里出于篇幅,先不介紹,后面的文章來介紹。
總結
詞向量是NLP開始邁進“現代化”的關鍵,是各種面試必問的基礎,需重視。
讀者們可以留言,或者加入我們的NLP群進行討論。感興趣的同學可以微信搜索jen104,備注"加入有三AI NLP群"。
下期預告:word2vec原理介紹
知識星球推薦
掃描上面的二維碼,就可以加入我們的星球,助你成長為一名合格的自然語言處理算法工程師。
知識星球主要有以下內容:
(1) 聊天機器人。考慮到聊天機器人是一個非常復雜的NLP應用場景,幾乎涵蓋了所有的NLP任務及應用。所以小Dream哥計劃以聊天機器人作為切入點,通過介紹聊天機器人的原理和實踐,逐步系統的更新到大部分NLP的知識,會包括語義匹配,文本分類,意圖識別,語義匹配命名實體識別、對話管理以及分詞等。
(2) 知識圖譜。知識圖譜對于NLP各項任務效果好壞的重要性,就好比基礎知識對于一個學生成績好壞的重要性。他是NLP最重要的基礎設施,目前各大公司都在著力打造知識圖譜,作為一個NLP工程師,必須要熟悉和了解他。
(3) NLP預訓練模型。基于海量數據,進行超大規模網絡的無監督預訓練。具體的任務再通過少量的樣本進行Fine-Tune。這樣模式是目前NLP領域最火熱的模式,很有可能引領NLP進入一個全新發展高度。你怎么不深入的了解?
轉載文章請后臺聯系
侵權必究
往期精選
【完結】 12篇文章帶你完全進入NLP領域,掌握核心技術
【每周NLP論文推薦】從預訓練模型掌握NLP的基本發展脈絡
【每周NLP論文推薦】 NLP中命名實體識別從機器學習到深度學習的代表性研究
【每周NLP論文推薦】 介紹語義匹配中的經典文章
【每周NLP論文推薦】 開發聊天機器人必讀的重要論文
【每周NLP論文推薦】 掌握實體關系抽取必讀的文章
總結
以上是生活随笔為你收集整理的【NLP-词向量】词向量的由来及本质的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【每周CV论文推荐】 初学目标检测必须要
- 下一篇: 如何跟随有三从零进阶中级CV算法工程师