word2vec 中的數學原理詳解

word2vec 中的數學原理詳解

     word2vec 是 Google 於 2013 年開源推出的一個用於獲取 word vector 的工具包,它簡單、高效,因此引起了很多人的關注。由於 word2vec 的作者 Tomas Mikolov 在兩篇相關的論文 [3,4] 中並沒有談及太多算法細節,因而在一定程度上增加了這個工具包的神祕感。一些按捺不住的人於是選擇了通過解剖源代碼的方式來一窺究竟。

     第一次接觸 word2vec 是 2013 年的 10 月份,當時讀了復旦大學鄭驍慶老師發表的論文[7],其主要工作是將 SENNA 的那套算法([8])搬到中文場景。覺得挺有意思,於是做了一個實現(可參見[20]),但苦於其中字向量的訓練時間太長,便選擇使用 word2vec 來提供字向量,沒想到中文分詞效果還不錯,立馬對 word2vec 刮目相看了一把,好奇心也隨之增長。

     後來,陸陸續續看到了 word2vec 的一些具體應用,而 Tomas Mikolov 團隊本身也將其推廣到了句子和文檔([6]),因此覺得確實有必要對 word2vec 裏的算法原理做個瞭解,以便對他們的後續研究進行追蹤。於是,沉下心來,仔細讀了一回代碼,算是基本搞明白裏面的做法了。第一個感覺就是,“明明是個很簡單的淺層結構,爲什麼會被那麼多人沸沸揚揚地說成是 Deep Learning 呢?”

     解剖 word2vec 源代碼的過程中,除了算法層面的收穫,其實編程技巧方面的收穫也頗多。既然花了功夫來讀代碼,還是把理解到的東西整理成文,給有需要的朋友提供點參考吧。

     在整理本文的過程中, 和深度學習羣的羣友@北流浪子([15,16])進行了多次有益的討論,在此表示感謝。另外,也參考了其他人的一些資料,都列在參考文獻了,在此對他們的工作也一併表示感謝。

 

 

 

 

 

作者:peghoty

出處: http://blog.csdn.net/itplus/article/details/37969519

歡迎轉載/分享, 但請務必聲明文章出處.

分類: 語言模型
7
0
« 上一篇:一種並行隨機梯度下降法
» 下一篇:發表在 Science 上的一種新聚類算法
	</div>
	<div class="postDesc">posted @ <span id="post-date">2014-07-21 10:04</span> <a href="https://www.cnblogs.com/peghoty/">peghoty</a> 閱讀(<span id="post_view_count">61327</span>) 評論(<span id="post_comment_count">4</span>)  <a href="https://i.cnblogs.com/EditPosts.aspx?postid=3857839" rel="nofollow">編輯</a> <a href="#" onclick="AddToWz(3857839);return false;">收藏</a></div>
</div>
<script type="text/javascript">var allowComments=true,cb_blogId=189252,cb_entryId=3857839,cb_blogApp=currentBlogApp,cb_blogUserGuid='4d9e4bc3-df83-e311-8d02-90b11c0b17d6',cb_entryCreatedDate='2014/7/21 10:04:00';loadViewCount(cb_entryId);var cb_postType=1;var isMarkdown=false;</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章