NLP·一、詞向量Word Embedding(一)

2021-03-06 碼蟻LucasGY
一、詞嵌入/詞向量為什麼可行

一句話概括就是:一個詞的語義由其上下文的單詞決定。

 

word vectors ==wordembeddings ==wordrepresentations.

They are a distributed representation

二、Word2vec的兩種算法

 

2.1 CBOW

用上下文的單詞預測中心詞,假設window size = 2:

 

在每個position t = 1,……,T,window size = m, 求已知上下文的單詞,預測中心詞出現的概率的似然:

2.1.2 計算

為了簡化計算,我們假設每個詞代表的向量一共有兩個,一個是作為中心詞的詞向量,一個是作為上下文單詞時的詞向量。將單詞表裡的詞對應的詞向量組合成矩陣:

由於向量內積的幾何含義就是一個向量投影到另一個向量上的大小,越大,兩個向量相似度越高;越小,兩個向量的相似度越低:

由於單詞表的單詞數量是有限個,因此要對概率歸一化,這裡就用到了softmax函數:


2.2 Skip-grams

用中心詞預測上下文的單詞,假設window size = 2:

在每個position t = 1,……,T,window size = m, 求已知上下文的單詞,預測中心詞出現的概率的似然:

損失函數:

2.2.1 程序實現思想——skip-gram

2.2.1.1  生成batch:X,y(以skip-gram為例,那麼就是輸入是中心詞,輸出是上下文單詞的概率)

skip_window:窗口的大小,即window size

num_skips:代表著我們從整個窗口中選取多少個不同的詞

例子:batch_size = 4;  skip_window = 2;  num_skip = 1:

2.2.1.2 前向傳播——這裡Word2vec討了個巧,利用深度學習的宏觀意義上的編碼器解決了更新參數theta的方法:

註:1、為什麼要將單詞表向量化?

總結前向傳播

2.2.1.3 計算loss

 

求此損失函數等價於計算輸出的交叉熵:

2.2.1.4 梯度下降更新那兩個詞向量矩陣

參數更新:

三、後期計劃:

1、程序實現展示;

2、梯度下降參數更新的優化

四、參考:

1、斯坦福cs224n

2、Chris McCormick 的blog

http://mccormickml.com/2016/04/19/word2vec-tutorial-the-skip-gram-model/

相關焦點

  • NLP算法|解析Word Embedding
    他今天下午吃了一隻雞這個問題很簡單,可以用詞袋法(bag of words,BOW)將句子轉化為向量,再計算對應各個句子的向量餘弦距離,距離最小的為最相似的。具體實現如下:分詞:a. 我/今天/中午/吃/了/一/只/豬b. 我/昨天/中午/喝/了/一/碗/湯c.
  • 詞向量詳解:從word2vec、glove、ELMo到BERT
    目前,詞向量(又叫詞嵌入)已經成為NLP領域各種任務的必備一步,而且隨著bert elmo,gpt等預訓練模型的發展,詞向量演變為知識表示方法,但其本質思想不變。學習各種詞向量訓練原理可以很好地掌握NLP各種方法。生成詞向量的方法有很多種,本文重點介紹word2vec,glove和bert。
  • 萬物皆可embedding
    我們在做推薦系統的時候,所有離散特徵(連續值也可以分桶處理)都給embedding了,nlp中也一樣,每個單詞,每個字,每個標點,都可以做embedding。那麼問題來了,推薦系統的學習目標是點擊率,那nlp中學詞embedding的目標是啥?上文我們提到計數(上下文單詞做BOW)的方法,生成每個詞的稠密向量 。這種方法雖然不需要設定任何目標,但是靠譜嗎?
  • 一文看懂詞嵌入 word embedding(2種主流算法+與其他文本表示比較)
    文本表示的方法有很多種,下面只介紹 3 類方式:獨熱編碼 | one-hot representation整數編碼詞嵌入 | word embedding獨熱編碼 | one-hot representation假如我們要計算的文本中一共出現了4個詞:貓、狗、牛、羊。向量裡每一個位置都代表一個詞。
  • Word2vec如何得到詞向量
    前言word2vec是如何得到詞向量的?這個問題比較大。
  • 無監督學習之詞嵌入(word embedding)
    embedding)是降維算法(Dimension Reduction)的典型應用那如何用vector來表示一個word呢?word進行聚類(clustering),劃分成多個class,然後用word所屬的class來表示這個word,但光做clustering是不夠的,不同class之間關聯依舊無法被有效地表達出來Word Embedding詞嵌入(Word Embedding)把每一個word都投影到高維空間上,當然這個空間的維度要遠比1-of-N Encoding
  • 閒聊word_embedding
    NLP word embedding概述依稀記得去年數據挖掘課有講過這個概念,年輕不懂事,沒認真聽,只能現在補課對於自然語言處理其實目前涉及的比較少
  • 【深度長文科普】非NLP數據處理――詞向量Word Vector
    詞向量 (Word Vector) 代表了人們在理解詞與詞,句與句,文章與文章之間關係的能力上的一大進步。與之前使用傳統的表達詞的方式相比,這項技術的進步在於機器可以得到更多關於詞的信息。有了詞向量這項技術,演講識別和機器翻譯才變得可能。在這篇文章中我會儘量用數據來解釋詞向量的概念,讓不太熟悉自然語言處理 (NLP) 的人也能理解詞向量的概念。
  • 乾貨 | Word2Vec是如何得到詞向量的?
    是如何得到詞向量的?得到你想要的processed corpus之後,將他們的one-hot向量作為word2vec的輸入,通過word2vec訓練低維詞向量(word embedding)就ok了。不得不說word2vec是個很棒的工具,目前有兩種訓練模型(CBOW和Skip-gram),兩種加速算法(Negative Sample與Hierarchical Softmax)。
  • 【NLP筆記】理論與實踐詳解詞向量
    在所有的nlp任務重,首要的也是最重要的是我們如何去表示詞語?我們需要首先了解詞語之間的相似性和差異性。採用詞向量,我們可以和容易的編碼詞語Word Vectors結論: 簡單one-hot向量無法給出單詞間的相似性,我們需要將維度減少到一個低維度的子空間,來獲得稠密的詞向量,獲得詞之間關係SVD Based Methodssvd的原理類似於主成分分析,但是主成分分析只能針對方陣,而svd可以針對所有矩陣進行我這裡不詳細
  • 機器不學習:word2vec是如何得到詞向量的?
    機器不學習 jqbxx.com -機器學習、深度學習好網站word2vec是如何得到詞向量的?這個問題比較大。得到你想要的processed corpus之後,將他們的one-hot向量作為word2vec的輸入,通過word2vec訓練低維詞向量(word embedding)就ok了。不得不說word2vec是個很棒的工具,目前有兩種訓練模型(CBOW和Skip-gram),兩種加速算法(Negative Sample與Hierarchical Softmax)。
  • NLP基礎|中英文詞向量評測理論與實踐
    最近在做詞向量相關工作,訓練的詞向量如何進行評測?包括中文詞向量評測腳本和英文V詞向量評測腳本,方便大家使用。這個任務的目的是評估詞向量模型在兩個詞之間的語義緊密度和相關性的能力,例如男人與女人,男孩與女孩,中國與北京這些詞對之間的相似度。
  • [NLP] 秒懂詞向量Word2vec的本質
    『word2vec Explained- Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method』Xin Rong 的論文:『word2vec Parameter Learning Explained』:來斯惟的博士論文『基於神經網絡的詞和文檔語義向量表示方法研究』以及他的博客(網名:licstar
  • NLP中的詞向量對比:word2vec/glove/fastText/elmo/GPT/bert
    目錄一、文本表示和各詞向量間的對比 1、文本表示哪些方法?2、怎麼從語言模型理解詞向量?怎麼理解分布式假設?3、傳統的詞向量有什麼問題?怎麼解決?各種詞向量的特點是什麼?4、word2vec和NNLM對比有什麼區別?(word2vec vs NNLM)5、word2vec和fastText對比有什麼區別?
  • 自然語言處理 (三) 之 word embedding
    自然語言處理 之 word embedding理解每個word的意思是自然語言處理的一大核心,那麼怎樣才能很好的描述word與word之間的syntactic & semantic similarity呢?
  • 萬物皆Embedding,從經典的word2vec到深度學習基本操作item2vec
    什麼是embedding?為什麼說embedding是深度學習的基本操作?簡單來說,embedding就是用一個低維的向量表示一個物體,可以是一個詞,或是一個商品,或是一個電影等等。分別是詞w的輸出向量表達和輸入向量表達。那什麼是輸入向量表達和輸出向量表達呢?我們畫一個word2vec的神經網絡架構圖就明白了。
  • R語言自然語言處理:文本向量化——詞嵌入(Word Embedding)
    ,每個單詞或詞組被映射為實數域上的向量。比如在上面的圖中,我們其實可以把第一列Mary向量化為(1,0,0),但是文檔變多的時候效率很低。我們如果使用詞嵌入技術,就可以把向量的維度確定在一定範圍之內,然後利用一個數值向量來表徵這個詞,從而來計算不同單詞之間的相互關係。利用這個方法,我們有辦法找到意思相近的關鍵詞,也可以找到一些詞的反義詞,還能夠計算詞與詞之間的距離。非常經典的例子是,「國王-男性+女性=女王」。
  • [教程]一篇最簡單的NLP入門:在Python上構建Word2Vec詞嵌入模型(Tensorflow篇)
    提取前 10000 個最常用的單詞,置入嵌入向量;2. 匯集所有單獨的單詞,並用唯一的整數對它們進行索引——這一步等同於為單詞創建獨熱碼。我們將使用一個字典來完成這一步;3. 循環遍歷數據集中的每個單詞(詞彙變量),並將其分配給在步驟 2 中創建的獨一無二的整數。這使在單詞數據流中進行查找或處理操作變得更加容易。
  • 【NLP】從word2vec, ELMo到BERT
    word2vec說來也都是些俗套而樂此不疲一遍遍寫的句子,2013年Google的word2vec一出,讓NLP各個領域遍地開花,一時間好像不用上預訓練的詞向量都不好意思寫論文了。而word2vec是什麼呢?模型顯然就是一個「線性」語言模型。
  • 同義詞詞向量訓練--python實現
    word2vec簡要介紹      word2vec 是 Google 於 2013 年開源推出的一個用於獲取 word vector 的工具包,它簡單、高效,因此引起了很多人的關注。對word2vec數學原理感興趣的可以移步word2vec 中的數學原理詳解,這裡就不具體介紹。