近期在準備2020屆秋招,覺得自己簡歷上眾多Embedding的項目,但是自己有時候卻不能很好地表達,給面試官留下了不好的印象。所以準備還是開個專欄,一來是給自己備忘並鍛煉自己的表述能力,二來如果能幫助到別人就再好不過了。
Embedding的技術要從word2vec開始說起,作為本專欄的第一篇文章,就詳細講解一下word2vec。因為知乎上介紹word2vec的文章實在是太多了,我這裡會重點說一下別的文章說的比較少的部分的細節(層次Softmax等),使這些總結略有點價值。
1. 什麼是word2vec
簡單來說,word2vec就是將辭彙轉化為向量的模型,向量裏蘊含了豐富了語義和上下文信息。word2vec的歷史要從NNLM開始講起了,相比較NNLM,word2vec去掉了隱層的激活函數,並將輸出層softmax優化。在看word2vec源碼之前,很難想像作者是用C語言完成了神經網路的訓練,與之相對應的有各種trick,使其具有很廣的適用範圍,使word2vec稱為一個現象級的模型。
word2vec是一個3層的神經網路。輸入層和輸出層都可以看做辭彙表的one-hot表示(</s>表示回車符)。通過語料的訓練,可以獲得辭彙的向量表示。