NLP[3] - [Word Embedding系列] : Word Embedding

 
本《Word Embedding系列》文章包括:

(1)One-hot编码
(2)Word Embedding
(3)LSA(Latent Semantic Analysis)
(4)Word2vec的CBOW模型
(5)Word2vec的Skip-gram模型
(6)GloVe模型
(7)相关编程实现
 

本文介绍Word Embedding


词向量,英文名叫Word Embedding,按照字面意思,应该是词嵌入。说到词向量,不少读者应该会立马想到Google出品的Word2Vec,大牌效应就是不一样。另外,用Keras之类的框架还有一个Embedding层,也说是将词ID映射为向量。由于先入为主的意识,大家可能就会将词向量跟Word2Vec等同起来,而反过来问“Embedding是哪种词向量?”这类问题,尤其是对于初学者来说,应该是很混淆的。事实上,哪怕对于老手,也不一定能够很好地说清楚。

 

一、万物皆Embedding

 
什么是embedding?为什么说embedding是深度学习的基本操作?

 
简单来说,embedding就是用一个低维的向量表示一个物体,可以是一个词,或是一个商品,或是一个电影等等。这个embedding向量的性质是能使距离相近的向量对应的物体有相近的含义,

Embedding能够用低维向量对物体进行编码还能保留其含义的特点非常适合深度学习。在传统机器学习模型构建过程中,我们经常使用one hot encoding对离散特征,特别是id类特征进行编码,但由于one hot encoding的维度等于物体的总数,比如阿里的商品one hot encoding的维度就至少是千万量级的。这样的编码方式对于商品来说是极端稀疏的,甚至用multi hot encoding对用户浏览历史的编码也会是一个非常稀疏的向量。而深度学习的特点以及工程方面的原因使其不利于稀疏特征向量的处理(维度过大训练的参数过多导致不能运用高维矩阵)。因此如果能把物体编码为一个低维稠密向量再喂给DNN,自然是一个高效的基本操作。

 
 

二、为什么要做Word Embedding

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

语义:girl和woman虽然用在不同年龄上,但指的都是女性。
复数:word和words仅仅是复数和单数的差别。
时态:buy和bought表达的都是“买”,但发生的时间不同。

所以用one hot representation的编码方式,上面的特性都没有被考虑到。
我们更希望用诸如“语义”,“复数”,“时态”等维度去描述一个单词。每一个维度不再是0或1,而是连续的实数,表示不同的程度。

假设我们的词汇只有4个,girl, woman, boy, man,下面就思考用两种不同的表达方式会有什么区别。

1)One hot representation

尽管我们知道他们彼此的关系,但是计算机并不知道。在神经网络的输入层中,每个单词都会被看作一个节点。而我们知道训练神经网络就是要学习每个连接线的权重。如果只看第一层的权重,下面的情况需要确定4*3个连接线的关系,因为每个维度都彼此独立,girl的数据不会对其他单词的训练产生任何帮助,训练所需要的数据量,基本就固定在那里了。

在这里插入图片描述

2)Distributed representation
我们这里手动的寻找这四个单词之间的关系f。可以用两个节点去表示四个单词。每个节点取不同值时的意义如下表。那么girl就可以被编码成向量[0,1],man可以被编码成[1,1] (第一个维度是gender,第二个维度是age)。这表示女性adult和男性adult
在这里插入图片描述

那么这时再来看神经网络需要学习的连接线的权重就缩小到了2*3。同时,当送入girl为输入的训练数据时,因为它是由两个节点编码的。那么与girl共享相同连接的其他输入例子也可以被训练到(如可以帮助到与其共享female的woman,和child的boy的训练)。

在这里插入图片描述
Word embedding也就是要达到第二个神经网络所表示的结果,降低训练所需要的数据量。

而上面的四个单词可以被拆成2个节点的是由我们人工提供的先验知识将原始的输入空间经过f(上图中的黄色箭头)投射到了另一个空间(维度更小),所以才能够降低训练所需要的数据量。但是我们没有办法一直人工提供,机器学习的宗旨就是让机器代替人力去发现pattern。

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

 在这里插入图片描述

从原始的输入 y i y_i yi z i z_i zi是一个寻找词向量的过程。得到的g(x)这个函数就是映射函数f(x).

 
 
 

用输入单词作为中心单词去预测周边单词的方式叫做:链接: Word2Vec The Skip-Gram Model.
用输入单词作为周边单词去预测中心单词的方式叫做:链接: Continuous Bag of Words (CBOW).

 


另外的解释:

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, 都是一种将源数据映射到另外一个空间

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


参考文章:
【1】神奇的Embedding:https://zhuanlan.zhihu.com/p/53058456
【2】Embedding从入门到专家必读的十篇论文:https://zhuanlan.zhihu.com/p/58805184
【3】什么是 word embedding?:https://www.zhihu.com/question/32275069/answer/197000927
【4】Embedding:https://zhuanlan.zhihu.com/p/356983172
【5】NLP系列(10)_词向量之图解Word2vec:https://blog.csdn.net/han_xiaoyang/article/details/89082129

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值