參考資料:https://www.bilibili.com/video/av61620135/?p=2&t=2024
word2vec的核心思想在於,定義一個詞的意思,取決於這個詞的鄰居。這是word2vec的核心思想。
基於這個概念,提出兩個模型,其中一個skip模型,其核心思想在於,由中心詞推斷中心詞附近個單位詞。
在給定的所有樣本文本中,文本單詞長度爲,總文本數爲。按文本中順序每一個詞逐一將作爲中心詞,進行附近詞的推斷,則進行詞中心詞推斷。
對每一箇中心詞而言,衡量其與另一個詞作爲鄰居關係的公式爲。作爲備選附近詞的,共有W個,爲了比較備選詞成爲附近的可能性,用softmax公式,來表示最終的每個候選詞成爲附近詞的可能性。
對一個備選詞而言的計算公式:
對一箇中心詞而言,只需要其實際的附近詞計算的,儘可能大即可。
以上爲word2vec核心總結。
1,訓練採用mini batch採用32或者64 計算更快,因爲GPU更偏愛整個
2,訓練採用隨機梯度下降 stochastic gradients with word vectors
講完完整的word2vec skip,模型後,需要解決訓練速度問題,故引出下一個概念——負採樣。
目標是中心詞實際附近詞對應的概率越高越好,但在計算時,我們計算了所有詞共計和中心詞的距離。計算量大,爲了減小計算量,加快速度。採用了負採樣的方法,不計算個詞,而是從非實際腹肌詞中隨機採樣-個詞進行計算。將換爲。
提出的採樣方法,根據頻率去採樣,將頻率去3/4對數,減小高頻詞的採樣,增加低頻詞的採樣。
補充對採樣的理解:
在python中的實現採樣的代碼爲
df.sample(n=None, frac=None, replace=False, weights=None, random_state=None,axis=None)
n:指定抽取的樣本量,(這裏我設定的是小類數據的1.05,即 n = N*(1+0.05))
frac:指定抽取的樣本比例;
replace:是否有放回抽樣,默認無放回。(對於不平衡數據欠抽樣時,將replace=False)
weights:指定樣本抽中的概率,默認等概論抽樣;
random_state:指定抽樣的隨機種子,可以使得每次抽樣的種子一樣,每次抽樣結果一樣
axis:是選擇抽取數據的行還是列。axis=0的時是抽取行,axis=1時是抽取列