网站标签系统的设计:Word2vec 转载: https://zhu - Assbbs
网站标签系统的设计:Word2vec 转载: https://zhuanlan.zhihu.com/p/26306795 1. 引子 大家好 我叫数据挖掘机 皇家布鲁斯特大学肄业 我喝最烈的果粒橙,钻最深的牛角尖 ——执着如我 今天我要揭开 Word2vec 的神秘面纱 直窥其本质 相信我,这绝对是你看到的 最浅白易懂的 Word2vec 中文总结 (蛤?你…
网站标签系统的设计:Word2vec 转载: https://zhuanlan.zhihu.com/p/26306795 1. 引子 大家好 我叫数据挖掘机 皇家布鲁斯特大学肄业 我喝最烈的果粒橙,钻最深的牛角尖 ——执着如我 今天我要揭开 Word2vec 的神秘面纱 直窥其本质 相信我,这绝对是你看到的 最浅白易懂的 Word2vec 中文总结 (蛤?你问我为啥有这个底气? 且看下面,我的踩坑血泪史。。。) 2. Word2vec参考资料总结 以下都是我踩过的坑,建议先跳过本节,阅读正文部分,读完全文回头再来看 先大概说下我深挖 word2vec 的过程:先是按照惯例,看了 Mikolov 关于 Word2vec 的两篇原始论文,然而发现看完依然是一头雾水,似懂非懂,主要原因是这两篇文章省略了太多理论背景和推导细节;然后翻出 Bengio 03年那篇JMLR和 Ronan 11年那篇JMLR,看完对语言模型、用CNN处理NLP任务有所了解,但依然无法完全吃透 word2vec;这时候我开始大量阅读中英文博客,其中 北漂浪子 的一篇阅读量很多的博客吸引了我的注意,里面非常系统地讲解了 Word2vec 的前因后果,最难得的是深入剖析了代码的实现细节,看完之后细节方面了解了很多,不过还是觉得有些迷雾;终于,我在 quora 上看到有人推荐 Xin Rong 的那篇英文paper,看完之后只觉醍醐灌顶,酣畅淋漓,相见恨晚,成为我首推的 Word2vec 参考资料。下面我将详细列出我阅读过的所有 Word2vec 相关的参考资料,并给出评价 Mikolov 两篇原论文: 『Distributed Representations of Sentences and Documents』 在前人基础上提出更精简的语言模型(language model)框架并用于生成词向量,这个框架就是 Word2vec 『Efficient estimation of word representations in vector space』 专门讲训练 Word2vec 中的两个trick:hierarchical softmax 和 negative sampling 优点:Word2vec 开山之作,两篇论文均值得一读 缺点:只见树木,不见森林和树叶,读完不得要义。这里『森林』指 word2vec 模型的理论基础——即 以神经网络形式表示的语言模型,『树叶』指具体的神经网络形式、理论推导、hierarchical softmax 的实现细节等等 北漂浪子的博客:『深度学习word2vec 笔记之基础篇』 优点:非常系统,结合源码剖析,语言平实易懂 缺点:太啰嗦,有点抓不住精髓 Yoav Goldberg 的论文:『word2vec Explained- Deriving Mikolov et al.’s Negative-Sampling Word-Embedding Method』 优点:对 negative-sampling 的公式推导非常完备 缺点:不够全面,而且都是公式,没有图示,略显干枯 Xin Rong 的论文:『word2vec Parameter Learning Explained』: !重点推荐! 理论完备由浅入深非常好懂,且直击要害,既有 high-level 的 intuition 的解释,也有细节的推导过程 一定要看这篇paper!一定要看这篇paper!一定要看这篇paper! 评论区 @huichan 告知了一条 沉重的信息 ,Rong Xin 于2017年驾驶飞机失事,永远离开了我们。缅怀,R.I.P,愿他能在天堂继续开心地科研 来斯惟的博士论文『基于神经网络的词和文档语义向量表示方法研究』以及他的博客(网名:licstar) 可以作为更深入全面的扩展阅读,这里不仅仅有 word2vec,而是把词嵌入的所有主流方法通通梳理了一遍 几位大牛在知乎的 回答 :『word2vec 相比之前的 Word Embedding 方法好在什么地方?』 刘知远、邱锡鹏、李韶华等知名学者从不同角度发表对 Word2vec 的看法,非常值得一看 Sebastian 的博客:『On word embeddings - Part 2: Approximating the Softmax』 详细讲解了 softmax 的近似方法,Word2vec 的 hierarchical softmax 只是其中一种 3. 正文 你会在本文看到: 提纲挈领地讲解 word2vec 的理论精髓 学会用gensim训练词向量,并寻找相似词 你不会在本文看到 神经网络训练过程的推导 hierarchical softmax/negative sampling 等 trick 的理论和实现细节 3.1. 什么是 Word2vec? 在聊 Word2vec 之前,先聊聊 NLP 自然语言处理 。NLP 里面,最细粒度的是 词语,词语组成句子,句子再组成段落、篇章、文档。所以处理 NLP 的问题,首先就要拿词语开刀。 举个简单例子,判断一个词的词性,是动词还是名词。用机器学习的思路,我们有一系列样本 x,y ,这里 x 是词语,y 是它们的词性,我们要构建 f x ->y 的映射,但这里的数学模型 f(比如神经网络、SVM)只接受数值型输入,而 NLP 里的词语,是人类的抽象总结,是符号形式的(比如中文、英文、拉丁文等等),所以需要把他们转换成数值形式,或者说——嵌入到一个数学空间里,这种嵌入方式,就叫词嵌入(word embedding ,而 Word2vec,就是词嵌入( word embedding 的一种 我在前作『都是套路: 从上帝视角看透时间序列和数据挖掘』提到,大部分的有监督机器学习模型,都可以归结为: f x ->y 在 NLP 中,把 x 看做一个句子里的一个词语,y 是这个词语的上下文词语,那么这里的 f,便是 NLP 中经常出现的『语言模型』(language model),这个模型的目的,就是判断 x,y 这个样本,是否符合自然语言的法则,更通俗点说就是:词语x和词语y放在一起,是不是人话。 Word2vec 正是来源于这个思想,但它的最终目的,不是要把 f 训练得多么完美,而是只关心模型训练完后的副产物——模型参数(这里特指神经网络的权重),并将这些参数,作为输入 x 的某种向量化的表示,这个向量便叫做——词向量(这里看不懂没关系,下一节我们详细剖析)。 我们来看个例子,如何用 Word2vec 寻找相似词: 对于一句话:『她们 夸 吴彦祖 帅 到 没朋友』,如果输入 x 是『吴彦祖』,那么 y 可以是『她们』、『夸』、『帅』、『没朋友』这些词 现有另一句话:『她们 夸 我 帅 到 没朋友』,如果输入 x 是『我』,那么不难发现,这里的上下文 y 跟上面一句话一样 从而 f 吴彦祖 = f 我 = y,所以大数据告诉我们:我 = 吴彦祖(完美的结论) 3.2. Skip-gram 和 CBOW 模型 上面我们提到了语言模型 如果是用一个词语作为输入,来预测它周围的上下文,那这…