循环神经网络(四)——words2vec、负采样、golve

循环神经网络(四)

——words2vec、负采样、golve

(原创内容,转载请注明来源,谢谢)

一、概述

本文主要学习几种现有的流行的词嵌入算法,包括words2vec、负采样、golve,另外学习了情绪分析方法,以及解决现有词汇组合偏见的问题。

二、words2vec

1、回顾Skip-grams

Skip-grams是抽取上下文和目标词进行配对,并构建监督学习算法,实现相近词语的查找,即给定上下文,在正负若干词距(如10个词的距离)进行匹配。

这个监督学习,目的是为了更好的得到词嵌入模型。

2、Word2Vec模型

假设词汇表1万个单词,现在需要训练出上下文(c)至目标词语(t)之间的关系。即从o(one-hot向量)->E(嵌入矩阵)->e(嵌入向量)->softmax->y。

即目标在于找到词嵌入的简化模型和神经网络。这就是是Word2Vec的skip-grams模型。

word2vec是指将词语word变成向量vector的过程,这一过程通常通过浅层的神经网络完成例如CBOW或者skip-grams来实现,同样可以视为构建词嵌表E的过程。

3、主要问题

由于每次迭代需要便利整个词汇表,因此计算速度是主要问题。

解决方案:使用分级的softmax分类器。实际中即使用一个二叉树,如下图最右侧部分,较常见的词汇在树的相对靠上的位置,而并不常见的词汇会在更深的位置,以便常用的词语尽快能够找到。这个二叉树即赫夫曼二叉树(Huffman Binary Tree)。

但是速度仍然很慢,因此引入其他模型。

另外,对上下文c的采样,并不是单纯的在训练集语料库上均匀、随机采样,而是采用了不同的启发式的规则,以平衡更常见的词。

三、负采样

1、定义

负采样(negative sampling),是为了加速上面words2vec的处理过程,主要解决的是给定一对单词,去预测这是否是上下文-目标词(context-target)。

例如orange-juice是目标词,标记为1,称为正样本;orange-king不是目标词,标记为,称为负样本。

同样是采用监督学习的方法来实现,但是负样本的词选择数量减少,对于大样本集仅采集,每训练一个正样本仅使用2~5个负样本;对于小样本集也只使用5~20个负样本。

2、公式

公式如下图,目的是估计y=1的概率,即两个词语匹配的概率。

这里是10000个二分类logistic回归分类器,但每一轮的迭代,不需要再迭代训练10000遍,只训练其中的5个,训练对应真正目标词的那一个分类器,再训练随机选取的4(即超参数k)个负样本。这样减少了训练量,加快计算速度。

3、选负样本方式

采用下面的公式,即对词频的3/4次方除以整体的值,进行采样。也可以下载网上开源的已经训练好的词向量。

四、Golve

1、概述

Golve(global vectors for word representation),是另一种训练词向量的方式。这个算法不如skip-gram常用,但是速度更快,模型更简单。

定义一些符号:

Xij:表示单词i在单词j上下文中出现的次数,这里i、j可以看成上下文c和目标词汇t。显然Xij=Xji。可以把其看为一个词频计数器。

2、模型

公式如下:

其中,log决定两个词的词频。为了解决log 0无意义的情况,引入加权项f(x),当x=0时f=0。另外,f可以均衡诸如a、the、of等频繁词。

3、词嵌入特征化

由于无法保证词嵌入向量的每个独立分量是能够让我们理解的,但可以确定的是,每个分量是和我们预期的一些特征有关联,其可能是一些我们能够理解的特征的组合而构成的一个组合分量。

故可以通过公式,将两个不成交的向量,组成坐标系供使用,即平行四边形的变换。

五、情绪分类

1、概述

情绪分类,解决的问题是,通过评论的一句话,来判断句子的感情,并打出分值,如下图所示:

2、均值法

可以用均值法来实现,即给每个词的情感,打上初始分数。再根据一句话所有词语的分数,计算平均分,通过softmax,进而算出结果。

这个做法有一个重大的问题——没有考虑词序。这会导致多数的积极词汇削弱前面消极词汇的影响,从而造成错误的预测。例如上面的lacking in,表示缺乏,后面的那些good都是表示缺乏good,而平均值法会把这些good的分数记上,反而会给高分。这就是不合理的地方。

3、RNN法

为了解决均值法的不考虑词序的问题,故可以采用RNN网络,这样效果好很多。

六、词嵌入除偏

1、概述

词嵌入除偏(debiasing word embedding),是解决一些社会历史的偏见问题。例如下面的例子,对于工作存在性别歧视,故需要消除这类歧视。

2、做法

1)定义除偏见方向

例如,本例子中是以性别作为待消除的偏见。做法是对带有性别色彩的词语向量,进行相减并且平均,得到一个或多个偏见趋势相关的维度,以及大量不相关的维度。

2)中和化

定义一些性别不明确的词语,如职业。通过减小这些词汇在得到的偏见趋势维度上值的大小,以减少水平方向的距离。

3)均衡化

将第一步的对称词,调整到中和词的均衡方向,以消除偏见。

获取中和词的方式:训练一个分类器,以确定哪些词是中和词。另外,大部分词都不具有性别指向,只有小部分词具有明确性别的区分,因此较好指定。

——written by linhxx 2018.03.29

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

扫码关注云+社区

领取腾讯云代金券