首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

CS224n笔记——词向量评价与再训练

目前我们已经学习了一些训练词向量的方法,现在让我们看看如何去评价词向量的质量。

评价方式分为内部评价和外部评价。

内部评价是我们在词向量训练技术中的具体的中间子任务上的评价,比如类比,这些子任务通常毕竟简单快速,能够帮助我们理解词向量,对于词向量的性能有具体的数值指标。这样做主要是因为一个具体的机器学习任务通常需要很多的时间和计算资源来完成,且词向量的性质会受到机器学习模型的好坏的干扰,所以有时候我们没有必要去进行一个具体的任务。

外部评价就是在真实任务上的评价,词向量的评价依赖于任务的结果,毕竟我们训练词向量是为了完成具体任务,所以这也是必不可少的,并且很多时候我们需要根据具体的任务来选择合适的词向量训练方法。然而当某个具体任务的模型表现很差时,我们常常并不能弄清楚到底是那部分有问题,所以还需要内部评价的支撑。

内部评价:

词向量类比是一种比较流行的词向量内部评价方式。在此任务中,我们的目标是解决这个问题:

也就是,哪个词与c的关系跟a与b的关系很像?

具体的数学表达为:

这个式子的来源是xb-xa=xd-xc,亦即xd=xb-xa+xc。

在使用类比评价时要非常小心,类比条件的选取要仔细考虑。看一下下面这个例子:

这是同一个国家的两个城市的类比,我们发现类比的结果比较糟糕。原因很明显,我们选取的这个类比问题的答案太多了!甚至于还有很多同名的美国城市、城镇或者乡村。如果是下面这个类比问题:

你需要注意的是你的数据集的时效,因为首都城市可能会有变化。

我们不仅可以在语义上做类比,还能在语法上做类比:

x下面我们在不同大小的数据集上做不同模型不同向量维度的评估:

观测到三个主要的结论:

词向量的性能非常依赖训练模型的选取,毕竟不同的模型能利用上的数据信息都不一样。

数据集越大,性能越好,这一点和机器学习的普遍规律是相同的。

向量维度过大或过小都会导致性能的下降,这一点可以从机器学习普遍规律推测得到,维度过小就不能很好地捕获数据集上的各种信息,也就是高偏差,underfitting;维度过大,就会捕获过多的数据上的噪声,泛化能力变差,也就是高方差,overfiiting。

下图表现了数据集对性能的影响:

下图表现了向量维度和窗口大小的影响:

除类比法之外,我们还可以使用人工标注的词性关系数据来验证我们的词向量的性能。这种方式人力成本很高,但是可操控性强。

外部评估:

外部评估衡量的是词向量模型对一个具体任务的影响。在外部评估中有一个隐含的假设,那就是对词向量的质量有一个一致的、全局的排名,高质量的词向量必然会改善下游任务的性能。但是,这个和假设并不成立:不同的任务需要不同的词向量。所以外部评估仅仅用来比较词向量之间的相对优劣势,而不能当作词向量质量的广泛意义上的评估。

首先是一个名词短语分块任务,注重语法上的分类:

后是情感分析任务,注重语义分析:

中p-value是在句子级应用随机化的计算结果。

这两张图细节太多,暂且不论,不过至少说明了一个观点,那就是至少目前没有全局最优的词向量模型,最优的处理方式就是根据具体的任务选取最优的词向量模型。

外部任务训练:

多数NLP任务都可以认定为分类任务,典型的有情感分析和命名实体判别。对于分类任务,我们设想这样的一个数据集:

x为d维词向量,y是c维的one-hot向量标注。

在其他机器学习任务中,我们都是给定输出和标注,训练模型的参数,但是,在NLP任务中,我们还可以有这样一种训练思路:对输入词向量进行再训练。

在经过内部评估后,我们选取了比较合适的训练策略得到了较好的词向量,在很多情况下,这样的词向量已经可以在外部任务中取得很好的效果,但是,也有可能在外部任务中再训练以获得更好的性能。不过,再训练词向量是有风险的。

如果想要再训练词向量,首先要保证数据集足够大,能覆盖到词库中的大部分词,这是因为我们使用word2vec或者glove训练词向量时,所有的词向量都在同一个词空间中,而如果在一个较小的数据集上再训练,那么使得经过再训练的词向量发生了空间的偏移,导致没有训练的词向量与之存在于不同的词空间,这样自然会使得性能下降。所以,小数据集上并不能使用再训练。

接下来让我们考虑一个softmax分类任务。

使用softmax函数计算分类概率:

使用cross-entropy函数计算损失函数:

假设k(i)是样本i中one-hot向量y中值为1的维度的索引,那么在N个样本点上的损失函数为:

如果我们要进行再训练,那么在训练过程中我们更新的参数会非常多,也就非常容易过拟合,所以需要添加一个正则化项:

窗口分类:

在实际任务中,使用单个的词向量进行分类是很困难的,因为人类语言的单词往往蕴含着多重含义,需要根据上下文进行语义判别,因此,模型的输入一般是词向量的序列,这个序列包括中心词和它的上下文单词。上下文的单词数成为窗口大小,其选择取决于任务的性质,一般语法任务会选取较小的窗口,语义任务会选取较大的窗口。

在上面的sotfmax分类任务中,我们可以把输入词向量变成:

同时,在训练中更新词向量时,也会更新整个窗口中的词向量:

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180124G0DVUJ00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券