ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Word Embedding

2022-07-11 11:07:17  阅读:159  来源: 互联网

标签:word 映射 单词 Embedding Word 上下文 向量


一、Embedding定义

Embedding在数学上表示一个maping, f: X -> Y, 也就是一个function,其中该函数是injective(就是我们所说的单射函数,每个Y只有唯一的X对应,反之亦然)和structure-preserving (结构保存,比如在X所属的空间上X1 < X2,那么映射后在Y所属空间上同理 Y1 < Y2)。那么对于word embedding,就是将单词word映射到另外一个空间,其中这个映射具有injective和structure-preserving的特点。 X所属空间的单词映射为到Y空间的多维向量,那么该多维向量相当于嵌入到Y所属空间中,一个萝卜一个坑。 word embedding,就是找到一个映射或者函数,生成在一个新的空间上的表达,该表达就是word representation。 (推广开来,还有image embedding, video embedding, 都是一种将源数据映射到另外一个空间)  

二、映射算法

Embedding的核心就是映射,对于映射关系,一般分为两种方式:one-hot embedding与distribution embedding

2.1 One-hot Embedding

对Corpus'中的每个单词都用一个n维的one hot向量表示,其中n为语料库中不同单词的个数。这种方法的原理是把语料库中的不同单词排成一列,对于单词A,它在语料库中的位置为k,则它的向量表示为第k位为1,其余为0的n维向量。比如:

优点:简单 

缺点:(1)存在语料库太长导致单词向量十分冗长的缺点;(1)在one hot representation编码的每个单词都是一个维度,彼此independent。丧失了word之间的关联性;

然而每个单词彼此无关这个特点明显不符合我们的现实情况。我们知道大量的单词都是有关:

  • girl和woman虽然用在不同年龄上,但指的都是女性。
  • word和words仅仅是复数和单数的差别。

我们更希望用诸如“语义”,“复数”,“时态”等维度去描述一个单词。每一个维度不再是0或1,而是连续的实数,表示不同的程度。

 

2.2 Distribution Embedding

Word embedding就是要从数据中自动学习到输入空间到Distributed representation空间的映射f。

问题来了,我们该如何自动寻找到类似上面的关系,将One hot representation转变成Distributed representation。 我们事先并不明确目标是什么,所以这是一个无监督学习任务。同时,单词的语义也需要放到上下文中去理解。

比较完善的word Embedding模型主要有Word2Vec(2013),Glove(2014),ELMO(2018,华盛顿),BERT(2018,谷歌)

(可以理解为一种对单词onehot向量的一种降维处理,通过一种映射关系将一个n维的onehot向量转化为一个m维的空间实数向量(可以理解为原来坐标轴上的点被压缩嵌入到一个更加紧凑的空间))

 

2.3 共现矩阵

在这里,我们首先了解一下共现矩阵的是什么意思。我们认为某个单词的意思跟他临近的单词有紧密关系,我们设定一个窗口(size in [5,10]),如下图所示,窗口大小是2时,与“rests”共同出现的单词就有life,he,in,peace

虽然Cocurrence matrix一定程度上解决了单词间相对位置关系,但是它仍然存在维数灾难,当然你可能会说到可以用SVD、PCA进行降维呀,但是这也会带来一定的问题,如新词加入时,很难分配一个新向量等。

 

三、Word2Vec

主要有两种方式:

  • 用输入单词作为中心单词去预测周边单词的方式叫做Skip-gram
  • 用输入单词作为周边单词去预测中心单词的方式叫做CBOW

表示单词的向量维度缩减很大,有益于后续RNN训练的收敛性。如果某两个单词的上下文很相似,则计算出来的表示这两个单词的特征向量会很相似,在空间中表示相近的物理位置,所以可以用两个单词生成的向量的长度表示其含义的远近。除了词向量的大小之外,词向量的方向还表示一种含义,若某两个词向量的方向相同,则其表示的含义也相近。如下图所示:
                          

 

 3.1 Skip-Gram

一种隐层为1的全连接神经网络,且隐层没有激活函数,输出层采用softmax分类器输出概率。输入为一个单词,输出为每个单词是输入单词的上下文的概率,真实值为输入单词的上下文中的某个单词。

主要通过skip-window控制,它代表着我们从当前input word的一侧(左边或右边)选取词的数量。假如我们有一个句子“The dog barked at the mailman”,我们选取“dog”作为input word,那么我们最终获得窗口中的词(包括input word在内)就是['The', 'dog','barked', 'at']。另一个参数叫num_skips,它代表着我们从整个窗口中选取多少个不同的词作为我们的output word,当skip_window=2,num_skips=2时,我们将会得到两组 (input word, output word) 形式的训练数据,即 ('dog', 'barked'),('dog', 'the')。

3.2 CBOW 

CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。比如对于某句话中的一个词,对上下文大小取值为4,那么模型的输入就是该词的前4个词和后4个词,输出是该词的词向量。由于CBOW使用的是词袋模型,因此这8个词都是平等的,也就是不考虑他们和我们关注的词之间的距离大小,只要在我们上下文之内即可。

 

四、Glove

融合了当时两种词向量方法:LSA全局词共现矩阵分解和word2vec上下文局部窗口,提出了一种很好的捕捉全局信息的方法,取两者精华,去两者弊端。得到词向量表

Glove的下载:https://blog.csdn.net/edward_zcl/article/details/121193420

Glove的使用方法:https://www.jianshu.com/p/7afed1281a0a

 

 

五、ELMO

不同于得到固定的词向量表,而是训练好一个基于BiLSTM(双向)语言模型的深度词嵌入模型。当需要(文本S)中(某个词w)的词向量表示时,输入到网络中获得(词w)在文本S(语境下)的词向量表示,即一种动态的考虑输入词语境的词向量方法,不是得到一个词向量表了。

 

 

六、BERT

最重要的部分是提出了一种遮蔽语言模型Masked LM. 随机屏蔽15%的词,根据上下文词预测这个屏蔽词,损失函数loss为所有屏蔽的词,预训练成本大收敛慢但是效果好。

 

参考:
链接:https://www.zhihu.com/question/32275069/answer/80188672

标签:word,映射,单词,Embedding,Word,上下文,向量
来源: https://www.cnblogs.com/z-712/p/16465684.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有