參考資料:
- https://zhuanlan.zhihu.com/p/114538417
- https://www.cnblogs.com/pinard/p/7243513.html
1 背景知識(shí)
1.1 統(tǒng)計(jì)語(yǔ)言模型
統(tǒng)計(jì)語(yǔ)言模型是基于語(yǔ)料庫(kù)構(gòu)建的概率模型,用來(lái)計(jì)算一個(gè)詞串
W
=
(
w
1
,
w
2
,
?
?
,
w
T
)
W=(w_1,w_2,\cdots,w_T)
W=(w1?,w2?,?,wT?) 構(gòu)成句子的概率:
p
(
W
)
=
p
(
w
1
,
w
2
,
?
?
.
w
T
)
=
p
(
w
1
)
p
(
w
2
∣
w
1
)
?
p
(
w
T
∣
w
1
,
w
2
,
?
?
,
w
T
?
1
)
(乘法公式)
\begin{align} p(W)&=p(w_1,w_2,\cdots.w_T)\\ &=p(w_1)p(w_2|w_1)\cdots p(w_T|w_1,w_2,\cdots,w_{T-1})(乘法公式) \end{align}
p(W)?=p(w1?,w2?,?.wT?)=p(w1?)p(w2?∣w1?)?p(wT?∣w1?,w2?,?,wT?1?)(乘法公式)??
p
(
W
)
p(W)
p(W) 被稱為語(yǔ)言模型,(2)式中的每個(gè)因子即為語(yǔ)言模型的參數(shù)。理論上,只要我們根據(jù)語(yǔ)料庫(kù)計(jì)算出所有的模型參數(shù),就能對(duì)很方便地計(jì)算出任意詞串構(gòu)成句子的概率,但由于參數(shù)過(guò)多,這種方法是不現(xiàn)實(shí)的。
1.2 N-gram模型
N-gram 模型的基本思想是做
n
?
1
n-1
n?1 階 Markov 假設(shè),即認(rèn)為:
p
(
w
k
∣
w
1
,
w
2
,
?
?
,
w
k
?
1
)
=
p
(
w
k
∣
w
k
?
n
+
1
?
?
,
w
k
?
1
)
≈
c
o
u
n
t
(
w
k
?
n
+
1
?
?
,
w
k
?
1
,
w
k
)
c
o
u
n
t
(
w
k
?
n
+
1
?
?
,
w
k
?
1
)
(大數(shù)定律)
\begin{align} p(w_k|w_1,w_2,\cdots,w_{k-1})&=p(w_k|w_{k-n+1}\cdots,w_{k-1})\\ &\approx\frac{count(w_{k-n+1}\cdots,w_{k-1},w_k)}{count(w_{k-n+1}\cdots,w_{k-1})}(大數(shù)定律) \end{align}
p(wk?∣w1?,w2?,?,wk?1?)?=p(wk?∣wk?n+1??,wk?1?)≈count(wk?n+1??,wk?1?)count(wk?n+1??,wk?1?,wk?)?(大數(shù)定律)??
其中,
c
o
u
n
t
(
W
)
count(W)
count(W) 表示詞串
W
W
W 在語(yǔ)料庫(kù)中出現(xiàn)的次數(shù)。
需要注意的是:根據(jù)實(shí)際意義,即使 c o u n t ( w k ? n + 1 ? ? , w k ? 1 , w k ) = 0 count(w_{k-n+1}\cdots,w_{k-1},w_k)=0 count(wk?n+1??,wk?1?,wk?)=0,也不能認(rèn)為 p ( w k ∣ w k ? n + 1 ? ? , w k ? 1 ) = 0 p(w_k|w_{k-n+1}\cdots,w_{k-1})=0 p(wk?∣wk?n+1??,wk?1?)=0 ;同理,即使 c o u n t ( w k ? n + 1 ? ? , w k ? 1 , w k ) = c o u n t ( w k ? n + 1 ? ? , w k ? 1 ) {count(w_{k-n+1}\cdots,w_{k-1},w_k)}={count(w_{k-n+1}\cdots,w_{k-1})} count(wk?n+1??,wk?1?,wk?)=count(wk?n+1??,wk?1?),也不能認(rèn)為 p ( w k ∣ w k ? n + 1 ? ? , w k ? 1 ) = 1 p(w_k|w_{k-n+1}\cdots,w_{k-1})=1 p(wk?∣wk?n+1??,wk?1?)=1,故 N-gram 模型往往需要進(jìn)行平滑處理。
但這種方法的參數(shù)仍然很多,所以我們可以考慮構(gòu)建一個(gè)函數(shù)
F
=
(
w
,
c
o
n
t
e
x
t
(
w
)
,
θ
)
F=(w,{\rm context}(w),\theta)
F=(w,context(w),θ),通過(guò)極大似然估計(jì)的方式估計(jì)出參數(shù)
θ
\theta
θ:
L
(
θ
)
=
∑
w
∈
C
log
?
p
(
w
∣
c
o
n
t
e
x
t
(
w
)
,
θ
)
L(\theta)=\sum\limits_{w\in C}\log p(w|{\rm context}(w),\theta)
L(θ)=w∈C∑?logp(w∣context(w),θ)
其中 C 為語(yǔ)料庫(kù)。這樣以來(lái),所有條件概率的計(jì)算都可以通過(guò)計(jì)算
F
(
w
,
c
o
n
t
e
x
t
(
w
)
,
θ
^
)
F(w,{\rm context}(w),\hat\theta)
F(w,context(w),θ^) 來(lái)完成。顯然,如何構(gòu)建
F
F
F 成為了這一方法的關(guān)鍵問(wèn)題。
直白地說(shuō),就是從語(yǔ)料庫(kù)中選擇詞及其上下文,讓由上下文通過(guò)模型推出詞的概率最大。
2 詞向量
詞向量:對(duì)詞典中的任意詞 w w w,指定一個(gè)固定長(zhǎng)度的向量 v ( w ) ∈ R m v(w)\in\mathbb R^m v(w)∈Rm。
2.1 獨(dú)熱編碼
One-Hot 編碼的向量長(zhǎng)度為詞典大小,向量中只有一個(gè) 1 1 1 ,位置與該詞在詞典中的位置相對(duì)應(yīng)。
這樣的編碼主要有如下問(wèn)題:
- 向量維數(shù)過(guò)大。
- 無(wú)法表現(xiàn)詞之間的相關(guān)性。
2.2 Distributed Representation
基本想法:將詞映射到一個(gè)向量空間,并在向量空間中引入“距離”,用以刻畫詞之間的關(guān)聯(lián)程度。
Word2Vec 就是生成詞向量的經(jīng)典模型。
3 Word2Vec
Word2Vec 是輕量級(jí)的神經(jīng)網(wǎng)絡(luò),其模型僅僅包括輸入層、隱藏層和輸出層,主要包括 CBOW 和 Skip-gram 模型
3.1 Simple CBOW Model
如上圖所示:
- 輸入為單詞的獨(dú)熱編碼,與輸入層與隱藏層之間的權(quán)重矩陣相乘( W T X W^TX WTX ),相當(dāng)于得到權(quán)重矩陣中某一行的轉(zhuǎn)置。
- 隱藏層再和隱藏層與輸出層之間的權(quán)重矩陣相乘( ( W ′ ) T h (W')^{T}h (W′)Th ),得到輸出層 u u u
- 將輸出向量的每一個(gè)分量經(jīng)過(guò) sotfmax 函數(shù)歸一化,令概率最大的那個(gè)分量為 1 ,其余為 0 ,得到的向量即為預(yù)測(cè)詞的獨(dú)熱編碼。
由于該模型在輸出層需要對(duì)每一個(gè)分量進(jìn)行 softmax 函數(shù)歸一化,而輸出層的分量數(shù)由于詞典的詞數(shù)相同,故其計(jì)算量很大。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-514684.html
3.2 基于Hierarchical Softmax的CBOW
這部分建議直接看參考資料 2文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-514684.html
到了這里,關(guān)于機(jī)器學(xué)習(xí)——Word2Vec的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!