首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >循环神经网络(四) ——words2vec、负采样、golve

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

作者头像
用户1327360
发布2018-06-07 11:35:11
1.2K0
发布2018-06-07 11:35:11
举报

循环神经网络(四)

——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不是目标词,标记为0,称为负样本。

同样是采用监督学习的方法来实现,但是负样本的词选择数量减少,对于大样本集仅采集,每训练一个正样本仅使用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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-03-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 爱思考的coder 微信公众号,前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档