預備知識
n-gram模型
對句子或單詞的所有長度為n的子句或子字串進行操作,如2-gram中,對「girl」的字串為「gi」,「ir」,"rl"進行操作,通常有操作如下:
cbow模型
是把單詞的高維稀疏的one-hot向量對映為低維稠密的表示的方法。
模型架構如下:
(此處有圖)
\,x_c\} h=
1c∑i
=1cx
iwh = \frac\sum_^c x_iw
h=c1i
=1∑c
xi
w v ou
t=hw
′=[u
1,u2
,...
,uv]
v_=hw'=[u_1,u_2,...,u_v]
vout=
hw′=
[u1
,u2
,...
,uv]yi
=exp
(ui)
∑j=1
vexp
(uj)
y_i=\frac^v exp(u_j)}\\
yi=∑j
=1v
exp(
uj)
exp(
ui)
[1]中提出了fasttext模型,類似cbow模型,使用n-gram特徵代替單個詞的特徵,提取序列資訊,效果與深度學習分類器持平,但速度快得多。其模型架構如下:
損失函式為對數似然函式取負,即 min
−1n∑
i=1n
yilo
g(f(
baxi
))其中
,xi為
第i個文
檔正則化
/規範化
後的特徵
向量(b
agof
feat
ures
)a和b
是兩個權
重矩陣min-\frac\sum_^n y_ilog(f(bax_i))\\ 其中,x_i為第i個文件正則化/規範化後的特徵向量(bag\ \ of\ \ features)\\ a和b是兩個權重矩陣
min−n1
i=1
∑ny
ilo
g(f(
baxi
))其
中,xi
為第i
個文件正
則化/規
範化後的
特徵向量
(bag
offe
atur
es)a
和b是兩
個權重矩
陣nce loss(noise-contrastive estimation),雜訊對比估計。
當類別數很大時(cbow中是單詞數),softmax複雜度很高,為了更高效地進行,將softmax計算過程轉化為二分類(lr)。具體地,將單詞與真實類別的true pair、單詞與隨機類別的randomly corrupted pair送入分類器,待優化的分類器只需判斷輸入的pair是真或假即可。(主要思想與負取樣和層次softmax相同)
word2vecslightlycustomizes the process and calls itnegative sampling.
def
nce_loss
(weights,
#[num_classes, embed_size]
biases,
#[num_classes]
inputs,
#[vocab_size, embed_size]
labels,
#[vocab_size, num_true]
num_sampled, num_classes, num_true=1,
sampled_values=
none
, remove_accidental_hits=
false
, partition_strategy=
"mod"
, name=
"nce_loss"
)
個人理解:對input中的每個詞,選擇對應的標籤構成正樣本對,再隨機選擇num_sampled個標籤與該詞構成負樣本對。對每個單詞對,在weights和biases中找到對應標籤的w和b,用邏輯回歸進行二分類,每個分類問題計算交叉熵
[1] bag of tricks for efficient text classification
[2] 自然語言處理中的n-gram模型詳解
[3]
fasttext工作原理
fasttext 是facebook於2016年開源的乙個詞向量計算和文字分類工具,在文字分類任務中,fasttext 淺層網路 往往能取得和深度網路相媲美的精度,卻在訓練時間上比深度網路快許多數量級,在標準的多核cpu上,能夠訓練10億詞級別語料庫的詞向量在10分鐘之內,能夠分類有著30萬多類別的...
fasttext 安裝 fasttext使用筆記
這裡記錄使用fasttext訓練word vector筆記 gitclone cdfasttext make make報錯 原因gcc版本過低 gcc v 公升級版本 參考 1.新增源 首先新增ppa到庫 sudo add apt repository ppa ubuntu toolchain r ...
筆記整合三 fastText原理剖析
一 邏輯回歸 1.1 從線性回歸到邏輯回歸 線性回歸的模型求出的是輸出特徵向量與輸入樣本矩陣x之間得線性關係係數k,即我們的y是連續的,假設我們想要y離散的話,那麼思路可以為對這個y在做一次函式,由此得到乙個 分類函式。邏輯回歸即對線性回歸的結果做了乙個sigmoid函式,將其結果整合到了 0,1 ...