深度学习之词向量Word Embedding总结
目錄
?一、Word Embedding介紹
二、One-Hot?表示
三、Distributed 表示
四、word2vec表示
五、BERT任務
六、BERT與其他模型的調用
?一、Word Embedding介紹
? ? ? ??word embedding,又名詞嵌入、詞向量,在近幾年的NLP領域變得越來越熱,從概念上講,它涉及從每個單詞一維的空間到具有更低維度的連續向量空間的數學嵌入。當它用作底層文本輸入表示時,單詞和短語嵌入已經被證明可以提高NLP任務的性能,例如語法分析和情感分析。
? ? ? ? word embedding的意思是:給出一個文檔,文檔就是一個單詞序列比如 “A B A C B F G”, 希望對文檔中每個不同的單詞都得到一個對應的向量(往往是低維向量)表示。
比如,對于這樣的“A B A C B F G”的一個序列,也許我們最后能得到:A對應的向量為[0.1 0.6 -0.5],B對應的向量為[-0.2 0.9 0.7] (此處的數值只用于示意)
? ? ? ? 之所以希望把每個單詞變成一個向量,目的還是為了方便計算,比如“求單詞A的同義詞”,就可以通過“求與單詞A在cos距離下最相似的向量”來做到。
? ? ? ? word embedding不是一個新的topic,很早就已經有人做了,比如bengio的paper“Neural probabilistic language models”,這其實還不算最早,更早的時候,Hinton就已經提出了distributed representation的概念“Learning distributed representations of concepts”(只不過不是用在word embedding上面) ,AAAI2015的時候問過Hinton怎么看google的word2vec,他說自己20年前就已經搞過了,估計指的就是這篇paper。
? ? ? ? 現在,word embedding有One-Hot Representation 、Distributed Representation、Word2Vec等方法。下面將對這幾種方法做一個簡要的介紹
二、One-Hot?表示
? ? ? ? 這種方法是表示文本最簡單的方法,一般使用很長的向量去表示一個詞。向量的長度其實就是文本中詞典的數目,一篇文章中有2000個詞,則詞向量的維度就是2000。而每個維度對應字典里的一個詞,除了這個詞對應維度上的值是?1,其他元素都是?0。大概One-Hot 的意思就是在該向量上用1突出要表示的詞。
? ? ? ? 例如,' 石家莊 '? =? [1,0,0,0......0,0,0]? ?(這個向量的維度大約有2000)。代碼就放在下面
from sklearn import preprocessingenc = preprocessing.OneHotEncoder() enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]])array = enc.transform([[0,1,3]]).toarray()print(array)? ? ? ? One-Hot?在特征提取上屬于詞袋模型(bag of words)。但是,這種表示方法沒有考慮到詞與詞之間的相關性,缺乏語義信息,無法使用余弦相似度去度量詞的相關性,而且會產生數據稀疏的問題,會浪費很多的存儲空間。而我們熟知的向量空間模型(VSM),雖然從表示文本的方式上與?One-Hot 類似,把對文本內容的處理簡化為向量空間中的向量運算,并且以空間上的相似度表達語義的相似度(余弦相似度),但是它默認詞與詞之間是獨立的,沒有考慮詞間的語義關聯性,因此在現如今的文本表示中不是特別實用。
三、Distributed 表示
? ? ? ? 分布式表示。最早由Hinton提出,可以克服one-hot representation的上述缺點,基本思路是通過訓練將每個詞映射成一個固定長度的短向量,所有這些向量就構成一個詞向量空間,每一個向量可視為該空間上的一個點[1]。此時向量長度可以自由選擇,與詞典規模無關。這是非常大的優勢。還是用之前的例子[“面條”,”方便面”,”獅子”],經過訓練后,“面條”對應的向量可能是[1,0,1,1,0],而“方便面”對應的可能是[1,0,1,0,0],而“獅子”對應的可能是[0,1,0,0,1]。這樣“面條”向量乘“方便面”=2,而“面條”向量乘“獅子”=0 。這樣就體現出面條與方便面之間的關系更加緊密,而與獅子就沒什么關系了。這種表示方式更精準的表現出近義詞之間的關系,比之稀疏向量優勢很明顯。可以說這是深度學習在NLP領域的第一個運用
四、Word2vec表示
? ? ? ? 關于word2vec的介紹,博主推薦看?通俗理解word2vec?的文章,語言比較幽默,通俗易懂,推薦看一波
? ? ? ? 至于word2vec的表示與詞的相似性判斷,推薦?基于gensim的word2vec實戰
五、BERT任務
? ? ? ? 至于有關BERT的介紹,推薦大家看一下?從Word Embedding到Bert模型——自然語言處理預訓練技術發展史?這篇文章。
? ? ? ? 這里是BERT模型的傳送門?BERT模型?。至于BERT的源碼解析,我是看了這位大佬的文章bert 源碼解讀(基于gluonnlp finetune-classifier)?才理解了一部分,但還是沒有搞到完全清楚,之后還要通過實踐去理解BERT這個神級模型
六、BERT與其他模型的調用
? ? ? ? ?近期博主看到一篇分享,將最近NLP任務中熱門的預訓練模型可以實現一鍵調用,文章傳送門?Pytorch-Transformers 1.0 發布,支持六個預訓練框架,含 27 個預訓練模型?
? ? ? ? ?代碼傳送門?pytorch-transformers
? ? ? ??
? ? ? ? 關于Word Embedding的介紹就是這些了,稍后有其他的理解將會陸續更新到本文中。相信自己,一定要繼續加油呀
總結
以上是生活随笔為你收集整理的深度学习之词向量Word Embedding总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 软件测试基础(七)测试规范的确定
- 下一篇: 一篇文章带你走进深度学习