深度学习(六) Word Embedding
Word Embedding
- 前言
- 一、One-hot編碼
- 1.為什么使用one-hot編碼?
- 2.什么是one-hot編碼?
- 3.one-hot編碼的優缺點
- 二、Word Embedding(詞嵌入)
- 1.什么是Word Embedding?
- 2.Word Embedding的優點:
- 3.基于計數的Word Embedding
- 1.基于計數的Word Embedding的優缺點
- 2.Co-Occurence Vector(共現向量)
- 4.基于預測的Word Embedding
- 1.基于預測的Word Embedding的優缺點:
- 2.CBOW(continues bag of words)
- 3.Skip – Gram
- 5.Glove(Global Vectors for Word Representation)
- 總結
前言
前面我們已經了解了CNN卷積神經網絡,這一篇文章我們將了解Word Embedding等詞匯編碼
一、One-hot編碼
1.為什么使用one-hot編碼?
首先我們得知道傳統的編碼方式是怎么樣的。傳統的編碼是通過統計類型出現次數的多少來進行編碼的,也就是類別A出現的次數為m,類別B出現的次數為n,那么他們就分別編碼為m,n。這樣編碼有可能導致求加權平均值的時候衍生成為其他類別,會體現不同類別的大小關系,誤差較大。所以我們需要采用一種新的編碼方式:one-hot編碼(獨熱編碼)
2.什么是one-hot編碼?
使用N位狀態寄存器來對N個狀態進行編碼,每個狀態都有它獨立的寄存器位,并且在任意時候,其中只有一位有效。
3.one-hot編碼的優缺點
- 優點:
- 缺點:
二、Word Embedding(詞嵌入)
1.什么是Word Embedding?
將word看作最小的一個單元,將文本空間中的某個word,通過一定的方法,映射或者說嵌入(embedding)到另一個數值向量空間。
Word Embedding的輸入是原始文本中的一組不重疊的詞匯,將他們放到一個字典里面,例如:[“cat”, “eat”, “apple”],就可以作為一個輸入。
Word Embedding的輸出就是每個word的向量表示,變成一個矩陣。
2.Word Embedding的優點:
3.基于計數的Word Embedding
1.基于計數的Word Embedding的優缺點
- 優點:
- 缺點:
2.Co-Occurence Vector(共現向量)
相似的單詞趨向于有相似的上下文(context),我們可以構建一套算法,來實現基于上下文的特征構建。
當我們設置Context Window大小為2,范圍為前后兩個word,那么對于such這個詞,他的Context Window就是下面綠色部分。
對于He is not lazy. He is intelligent. He is smart.
以He這這個單詞舉例,他在詞料庫里面的所有Context Window里面與is為之共現的詞語的次數就是共現矩陣中is的次數
這個語料庫來說,共現矩陣應該為:
共現矩陣最大的優勢是這種表示方法保留了語義信息,例如,通過這種表示,就可以知道哪些詞語之間是相對較近的,哪些詞語之間是相對較遠的。
4.基于預測的Word Embedding
1.基于預測的Word Embedding的優缺點:
- 優點:
- 缺點:
2.CBOW(continues bag of words)
對于該語料而言,我們先對其做一個one-hot編碼,然后選取Context Window為2,那么模型中的就產生了一對input和target
如此一來,便得到了既攜帶上下文信息,又經過壓縮的稠密詞向量。
3.Skip – Gram
這個方法可以看作是CBOW的翻轉版
5.Glove(Global Vectors for Word Representation)
Glove算法是一種基于全局詞頻統計的回歸算法。它不是基于神經網絡的,而是基于最小二乘原理的回歸方法。
它結合了上面兩種算法的優點,可以有效的利用全局的統計信息。
它的過程如下:
wiTwj?+biT+bj?=log?(Xij)w_i^T\~{w_j}+b_i^T+\~{b_j}=\log(X_{ij})wiT?wj???+biT?+bj???=log(Xij?)
wiTw_i^TwiT?和wj?\~{w_j}wj???都是待求解的詞向量,biTb_i^TbiT?和bj?\~{b_j}bj???都是偏置量
J=∑i,j=1Vf(Xij)(wiTwj?+biT+bj??log?(Xij))2J=\sum_{i,j=1}^Vf(X_{ij})(w_i^T\~{w_j}+b_i^T+\~{b_j}-\log(X_{ij}))^2J=i,j=1∑V?f(Xij?)(wiT?wj???+biT?+bj????log(Xij?))2
- 這些單詞的權重要大于那些很少在一起出現的單詞,所以這個函數要是非遞減函數
- 但我們也不希望這個權重過大(overweighted),當到達一定程度之后應該不再增加;
- 如果兩個單詞沒有在一起出現,他們應該不參與到loss function的計算當中去,所以f(0)=0f(0)=0f(0)=0
總結
本文介紹了Word Embedding,希望大家能從中獲取到想要的東西,下面附上一張思維導圖幫助記憶。
總結
以上是生活随笔為你收集整理的深度学习(六) Word Embedding的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python基础知识(Python的简介
- 下一篇: 基于51单片机的智能鱼缸设计