解析一

如七月在線推薦就業班的專家講師李老師所言負採樣這個點引入word2vec非常巧妙,兩個作用:1.加速了模型計算2.保證了模型訓練的效果,其一模型每次只需要更新採樣的詞的權重,不用更新所有的權重,那樣會很慢,其二中心詞其實只跟它周圍的詞有關係,位置離著很遠的詞沒有關係,也沒必要同時訓練更新,作者這點非常聰明。

解析二

下述解析來源於:zhuanlan.zhihu.com/p/291. 隨機梯度下降法有什麼問題?通過對代價函數求權重的梯度,我們可以一次性對所有的參數

進行優化,但是如果每次等全部計算完成再優化升級,我們將等待很長時間(對於很大的語料庫來說)。

所以我們採用隨機梯度下降( Stochastic Gradient Descent),也就是說每次完成一次計算就進行升級。但是,還有兩個問題導致目前的模型效率低下!第一個問題,我們每次只對窗口中出現的幾個單詞進行升級,但是在計算梯度的過程中,我們是對整個參數矩陣進行運算,這樣參數矩陣中的大部分值都是0。

計算效率低下!第二個問題:我們使用的目標函數是softmax函數

我們觀察分母,分母需要把窗口中所有單詞的「得分」都算出來再求和,效率低下!2. 使用負採樣負採樣的核心思想是:計算目標單詞和窗口中的單詞的真實單詞對「得分」,再加一些「雜訊」,即詞表中的隨機單詞和目標單詞的「得分」。真實單詞對「得分」和「雜訊」作為代價函數。

每次優化參數,只關注代價函數中涉及的詞向量。

下面給出公式:

採用上述公式解決了之前說的兩個問題:我們僅對K個參數進行採樣我們放棄softmax函數,採用sigmoid函數,這樣就不存在先求一遍窗口中所有單詞的『「得分」的情況了。3. 計算梯度既然代價函數已經更新了,那麼我們需要對梯度進行更新。

首先考慮一下,我們想要求導的目標,也就是對誰求導?

答案是,對我們想要優化的參數求導,前面說了,負採樣的目的是不需要對整個向量矩陣 U或 V 進行優化,而是僅對求代價過程中涉及的詞向量進行優化,因此,求導對象是目標向量

窗口中的其他詞向量

和負採樣時隨機選取的詞向量

此篇文章關注的問題不是求導的過程,因此下面直接給出梯度:

更多面試題

立刻微信搜索公眾號「七月在線實驗室」

關注後點擊免費資料,點BAT面試題即可

更為大家準備了3重福利!

在公眾號回復:「100」,免費領【機器學習面試100題】

回復:「乾貨」, 免費領【全體系人工智慧學習資料】

回復: 「領資料」,免費領【NLP工程師必備乾貨資料】

應屆生學員轉行拿到52萬年薪,大量學員轉行後拿到30-40萬年薪!

每天更新乾貨,幫你踏入AI領域成為技術leader。

講師均由各大公司技術leader和國內外頂級高校博士組成!

超20種不同課程,Python/ML(機器學習)/DL(深度學習)及CV/NLP各種方向。

馬上開始學習,和「前輩們」一樣進入心儀公司,奪取高薪,成為人生贏家。

也許你面試時的考官就是七月在線的講師/學員!

推薦閱讀:

相關文章