关于 word2vec 我有话要说

写在前面的话:

总结一下使用word2vec一年来的一些经验,因为自己在做的时候,很难在网上搜到word2vec的经验介绍,所以归纳出来,希望对读者有用。

这里不介绍word2vec的原理,因为原理介绍的资料网上很多:

作者论文 word2vec论坛

作者论文讲的比较简单,推荐一个比较全面的word2vec原理分析

最后,由于本人知识有限,错误之处,还望指正。

1 word2vec 是word embedding 最好的工具吗?

word2vec并非是效果最好的word embedding 工具。最容易看出的就是word2vec没有考虑语序,这里会有训练效果损失。

由于 word2vec 训练速度快 ,易用,google出品 等,使得word2vec使用的人多。

训练快是因为 word2vec只有输入层和输出层,砍去了神经网络中,隐藏层的耗时计算(所以word2vec并不算是一个深度学习算法)。另外,阅读word2vec的google的源码,会发现里面有一些提速的trick。如 sigmod函数,采用一次计算,以后查表,减去了大量的重复计算。如词典hash存储, 层次softmax等。

易用是因为word2vec 公布了word2vec的代码。在tensorflow,gensim,spark mllib包中都有集成,使用方便。

2 word2vec 训练结果的差异主要来自什么因素?

2.1 语料影响最大

语料的场景,比如微博的语料和新闻语料训练的结果差别很大。因为微博属于个人发帖,比较随意。而新闻比较官方正式,另外新闻句式相对复杂。经过训练对比:微博这种短文,训练的相似词更多是同级别的相关词。比如 深圳 相关的是 广州 。而用新闻语料,训练得到 深圳 相关的词 更多是与 深圳 有关联的词,比如 深圳大学。

为什么会出现这种情况呢?

因为 word2vec 的原理就是 一个词预测 前后词 或者 前后词 预测 当前词,使得概率最大化。

这就导致如下两个结果:

2.1.1 相似的句子,相同部位的词 会相似。

比如 句子1 w1 w2 w3 w4 X w5 w6 w7.

句子2 w1 w2 w3 w5 Y w5 w6 w7.

因为 X 的向量 受 w1 w2 w3 w4 w5 w6 w7 向量影响决定, Y也是受这几个词影响决定。

所以 X Y 是相似的。

2.1.2 挨着近的词,也是相似的。

比如 句子 w1 w2 w3 w4 X Y w5 w6 w7. 这样 X Y 都是受到 来自 w1 w2 w3 w4 w5 w6 w7 向量影响决定。

所以X Y是相似的。

所以,微博和新闻的句子的整体分布是不一样的。 这里影响 结论 2.1.1.

其次,新闻长文多,句式复杂,微博短文多,这里影响结论2.1.2.

2.2 算法参数的影响。

算法参数对总体效果影响不大。相对来说,比较重要的参数有以下:

2.2.1 负采样

负采样越低,对高频词越不利,对低频词有利。可以这么理解,本来高频词 词被迭代50次,低频词迭代10次,如果采样频率降低一半,高频词失去了25次迭代,而低频词只失去了5次。一般设置成le-5

2.2. 2 语言模型

skip-gram 和cbow,之前有对比,切词效果偏重各不相同。 从效果来看,感觉cbow对词频低的词更有利。这是因为 cbow是基于周围词来预测某个词,虽然这个词词频低,但是他是基于 周围词训练的基础上,通过算法来得到这个词的向量。通过周围词的影响,周围词训练的充分,这个词就会收益。

2.2. 3 窗口大小

窗口大小影响 词 和前后多少个词的关系,和语料中语句长度有关,建议可以统计一下语料中,句子长度的分布,再来设置window大小。一般设置成8。

2.2. 4 min-count

最小词频训练阀值,这个根据训练语料大小设置,只有词频超过这个阀值的词才能被训练。

根据经验,如果切词效果不好,会切错一些词,比如 “在深圳”,毕竟切错的是少数情况,使得这种错词词频不高,可以通过设置相对大一点的 min-count 过滤掉切错的词。

2.2. 5 向量维度

如果词量大,训练得到的词向量还要做语义层面的叠加,比如 句子 的向量表示 用 词的向量叠加,为了有区分度,语义空间应该要设置大一些,所以维度要偏大。一般 情况下200维够用。

2.2. 6 其他参数

比如学习率 可以根据需要调。

3 word2vec 影响速度的因素有哪些?

3.1 语言模型:cbow 比skip-gram 更快

为什么 cbow更快,很重要的一个原因,cbow是基于周围词来预测这个单词本身 。而skip-gram是基于本身词去预测周围词。 那么,cbow只要 把窗口内的其他词相加一次作为输入来预测 一个单词。不管窗口多大,只需要一次运算。而skip-gram直接受窗口影响,窗口越大,需要预测的周围词越多。在训练中,通过调整窗口大小明显感觉到训练速度受到很大影响。

3.2 迭代次数

影响训练次数,语料不够的情况下,可以调大迭代次数。spark 版本有bug,迭代次数超过1,训练得到的词向量维度值超大。

3.3 线程数

单机版(google word2vec)可以通过设置多线程跑,集群版(spark mllib)可以设置多个 partitions.但是从经验来看,在集群上设置partitions 过多,会影响训练的效果。

3.4 其他参数

采样频率 影响词的训练频率 min-count 最小词频 影响 训练词的数量 Window大小 影响 skip-gram 的 预测次数。 向量维度 维度决定了训练过程中计算的维度

4 怎样评估word2vec训练的好坏?

4.1 词聚类

可以采用 kmeans 聚类,看聚类簇的分布

4.2 词cos 相关性

查找cos相近的词

4.3 Analogy对比

a:b 与 c:d的cos距离 (man-king woman-queen )

4.4 使用tnse,pca等降维可视化展示

词的分布,推荐用google的tensorboard,可以多视角查看,如果不想搭建服务,直接访问这里。另外可以用python的matplotlib。

4.5 Categorization 分类 看词在每个分类中的概率

动物

食物

汽车

电子

橘子

0.11

0.68

0.12

0.11

0.66

0.11

0.13

0.11

雅阁

0.14

0.23

0.67

0.11

苹果

0.11

0.65

0.11

0.65

前三条来自官网的评测方法

网上也有相关的word embedding 的评估方法,可以参考这里

资源

word2vec效果展示

板砖砸过来(^_^)

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

old zhang的专栏

1 篇文章2 人订阅

我来说两句

0 条评论
登录 后参与评论

相关文章

支持向量机简介

在Statsbot团队发布关于时间序列异常检测的帖子之后,许多读者要求我们向他们介绍支持向量机的方法。现在是向您介绍SVM(支持向量机)的时候了,而不用您辛苦的...

1977
来自专栏AI研习社

基于 Jetson 在 Aerial 系统内进行深度学习

无人驾驶空中系统(UAS)在过去十年中被广泛应用,尽管 UAS 最早被应用在军事上,事实证明,它们在很多其它领域都是有用的,包括农业、地理制图、航空摄影、搜索和...

1221
来自专栏PPV课数据科学社区

当看裸体的时候,卷积神经网络会看到什么

? 作者 RYAN COMPTON时间2016.04.19 发表于ENGINEERING 我们上周在Clarifai正式宣布不安全的工作(NSFW)成人内容...

2976
来自专栏机器之心

资源 | 从语言建模到隐马尔可夫模型:一文详述计算语言学

机器之心整理 参与:路雪、蒋思源 计算语言学(computational linguistics)是一门跨学科的研究领域,它试图找出自然语言的规律,建立运算模型...

34110
来自专栏自然语言处理

十分钟学习自然语言处理概述

文本挖掘是信息挖掘的一个研究分支,用于基于文本信息的知识发现。文本挖掘的准备工作由文本收集、文本分析和特征修剪三个步骤组成。目前研究和应用最多的几种文本挖掘技术...

652
来自专栏专知

【干货】最全知识图谱综述#1: 概念以及构建技术

【导读】知识图谱技术是人工智能技术的组成部分,其强大的语义处理和互联组织能力,为智能化信息应用提供了基础。我们专知的技术基石之一正是知识图谱-构建AI知识体系-...

1.6K5
来自专栏AI研习社

通过嵌入隐层表征来理解神经网络

可视化神经网络总是很有趣的。例如,我们通过神经元激活的可视化揭露了令人着迷的内部实现。对于监督学习的设置,神经网络的训练过程可以被认为是将一组输入数据点变换为可...

692
来自专栏杨熹的专栏

深度学习相关最新图书推荐

如果您是初学者,那么您可能会将深度学习与机器学习混为一谈。实际上,机器学习包含深度学习,深度学习只是机器学习的研究领域之一。深度学习是一个交叉学科,涉及到神经网...

3469
来自专栏AI科技评论

学界 | 一言不合就想斗图?快用深度学习帮你生成表情包

AI科技评论按:斯坦福大学的两个学生 Abel L Peirson V 和 Meltem Tolunay 发表了自己的 CS224n 结业论文—— 用深度神经网...

1135
来自专栏贾志刚-OpenCV学堂

谷歌机器学习速成课程系列三

谷歌tensorflow官方推出了免费的机器学习视频课,总计25个课时,支持中英文语言播放、大量练习、实例代码学习,是初学tensorflow不机器学习爱好者必...

1502

扫码关注云+社区