詞向量word to vector通俗理解
word2vec
概述
之前使用one-hot編碼來表示詞向量,比如貓為(1,0,0),狗為(0,1,0),這種稀疏編碼,維度大,詞與詞之間是孤立的,無法表示詞與詞之間的語義資訊!
word2vec就是為了解決這個問題,下圖就是表示形式,我們從圖中可以看到man和woman的兩個詞矩陣相似度更高,這種表示方法能捕捉到詞與詞之間的關聯資訊。
一個詞向量是一個一維向量,將所有單詞的向量按照行堆疊起來就被稱為embedding矩陣,像下面一樣
訓練得到embedding矩陣
如何為每一個單詞都生成一個這樣的向量呢,下面來慢慢介紹:
下面的模型,先看看整體情況,不考慮細節。先僅僅看一下模型的輸入輸出。輸入一個單詞,輸出當前句子的下一個單詞,也就是通過前面的單詞預測下一個單詞。
比如下面圖中的句子,輸入Thou和shalt,輸出就是not(下面所有圖中的綠色部分為輸入,紅色為輸出),然後慢慢滑動這個紫色的視窗,就可以得到大量的資料樣本(例如下一個視窗是shalt和not,輸出make)
或者我們也可以通過兩邊的單詞來預測中間的單詞,即從上下文這個角度這樣可以讓預測更加準確
回到訓練模型,我們剛開始不知道這個embedding矩陣,就先隨機給一個,然後輸入不同的單詞時,在embedding矩陣中查詢對應的向量,輸入到模型中進行訓練,迭代使之與輸出值一致。最後就可以得到embedding矩陣,為其他領域所應用。
但是實際上,word2vec並不是上面這樣訓練
因為從計算的角度來看,第三步更新迭代是非常昂貴的——尤其是知道我們將為資料集中的每個訓練樣本執行一次(很容易達到數千萬次)。我們需要做些什麼來提高效能。
我們可以把輸入輸出改一下,我們一開始是not來預測thou
現在我們把not和thou同時作為輸入,如果他們兩個詞相鄰,那麼我們就輸出1,如果兩個詞不相鄰就輸出0,這樣就不用像之前那樣更新很大的引數矩陣,這樣做效率更高
參考部落格:https://jalammar.github.io/illustrated-word2vec/
相關文章
- 詞向量的運用-用詞向量理解片語的含義
- 利用詞向量進行推理(Reasoning with word vectors)
- 學習SVM(四) 理解SVM中的支援向量(Support Vector)
- GitHub上中文詞向量(Chinese Word Vectors)的下載地址Github
- python-Vector向量Python
- 機器學習(四):通俗理解支援向量機SVM及程式碼實踐機器學習
- [namespace hdk] 向量 direct_vectornamespace
- 詞向量入門
- 亂燉“簡書交友”資料之程式碼(2):關鍵詞抽取、Word2Vec詞向量
- 文字情感分析(二):基於word2vec和glove詞向量的文字表示
- elasticsearch高亮之詞項向量Elasticsearch
- 一、【資料結構】向量(vector)的實現資料結構
- 支援向量機(Support Vector Machine,SVM)—— 線性SVMMac
- Vector Magic for Mac/win,圖片向量化的神器!Mac
- 第八篇:支援向量機 (Support Vector Machine)Mac
- Java知多少(78)Java向量(Vector)及其應用Java
- 精通標準模板庫STL的向量Vector用法
- 「NLP-詞向量」從模型結構到損失函式詳解word2vec模型函式
- 記憶體--通俗理解記憶體
- 理解支援向量機
- word_cloud 中文詞雲Cloud
- 通俗易懂地理解ReduxRedux
- 帶你通俗理解httpsHTTP
- 通俗理解一些概念
- 如何通俗的理解散度?
- 對maven的通俗理解,goodMavenGo
- 如何通俗地理解 Gradle?Gradle
- 通俗理解LDA主題模型LDA模型
- 好用的向量圖形轉換軟體:vector magic for MacMac
- 張量(Tensor)、標量(scalar)、向量(vector)、矩陣(matrix)矩陣
- 資料庫-SQL_duckdb向量化計算-vector資料庫SQL
- quaternion*Vector3的新理解
- 如何通俗理解泊松分佈?
- 通俗理解.NET 6 Minimal APIsAPI
- Paxos演算法的通俗理解演算法
- 如何通俗地理解傅立葉變換?
- Vector Magic for mac(向量圖片轉換工具)1.2.0啟用版Mac
- 親手做的詞向量分佈圖