词向量加载到深度学习模型_深度学习笔记(二十一)——词嵌入

词嵌入

  • 使用词嵌入模型可以让模型更好的理解词与词之间的类比,比如:男人和女人,国王和王后
  • 在此之前,我们使用了字典和one-hot来表示单词,one-hot表征单词的方法最大的缺点就是每个单词都是独立的、正交的,无法知道不同单词之间的相似程度。例如Apple和Orange都是水果,词性相近,但是单从one-hot编码上来看,内积为零,无法知道二者的相似性。在NLP中,我们更希望能掌握不同单词之间的相似程度
  • 特征表征(Featurized representation):对每个单词进行编码。也就是使用一个特征向量表征单词,特征向量的每个元素都是对该单词某一特征的量化描述,量化范围可以是[-1,1]之间。特征表征的例子如下:

d020fa145f10b94974ffb9a1c51aee5e.png
  • 特征向量的长度依情况而定,特征元素越多则对单词表征得越全面。这里的特征向量长度设定为300。使用特征表征之后,词汇表中的每个单词都可以使用对应的300 x 1的向量来表示,该向量的每个元素表示该单词对应的某个特征值。每个单词用e+词汇表索引的方式标记,例如:e5391,e9853,e4914
  • 这种特征表征的优点是根据特征向量能清晰知道不同单词之间的相似程度,例如Apple和Orange之间的相似度较高,很可能属于同一类别。这种单词“类别”化的方式,大大提高了有限词汇量的泛化能力,这种特征化单词的操作被称为Word Embeddings,即词嵌入
  • 值得一提的是,这里特征向量的每个特征元素含义是具体的,对应到实际特征,例如性别、年龄等。而在实际应用中,特征向量很多特征元素并不一定对应到有物理意义的特征,是比较抽象的。但是,这并不影响对每个单词的有效表征,同样能比较不同单词之间的相似性。每个单词都由高维特征向量表征,为了可视化不同单词之间的相似性,可以使用降维操作,例如t-SNE算法,将300D降到2D平面上。如下图所示:

fe1501d0655877e05ba3e6a73f3f5104.png
  • 从上图可以看出相似的单词分布距离较近,从而也证明了Word Embeddings能有效表征单词的关键特征

如何使用词嵌入

  • 如果出现了在训练集中不常见的单词,可以根据word embedding的结果得到与其词性相近的单词,从而得到与该单词相近的结果,有效减少了训练样本的数量。
  • 如何使用词嵌入来进行迁移学习
    • 海量词汇库中学习word embeddings,即所有单词的特征向量,或者从网上下载预训练好的word embeddings
    • 使用较少的训练样本,将word embeddings迁移到新的任务中;之前用10000维的one hot向量,现在就可以用300维的词嵌入向量
    • 可选:可以继续使用新数据微调word embeddings
  • 词嵌入和人脸编码
    • 对于人脸图片,我们用输出的编码(encoding)向量来比较,判断是不是同一个人
    • 人脸图片经过Siamese网络,得到其特征向量f(x),这点跟word embedding是类似的
    • 二者不同的是Siamese网络输入的人脸图片可以是数据库之外的;而word embedding一般都是已建立的词汇库中的单词,非词汇库单词统一用< UNK >表示

词嵌入的特性

  • Word embeddings可以帮助我们找到不同单词之间的相似类别关系
  • 在下图中,特征维度是4维的,分别是[Gender, Royal, Age, Food]。常识地,“Man”与“Woman”的关系类比于“King”与“Queen”的关系。而利用Word embeddings可以找到这样的对应类比关系

c2c1fbbd4208f666be3153a38d77dc72.png
  • 将“Man”的embedding vector与“Woman”的embedding vector相减:

bd18539c015064a85b628b4d3cce73da.png
  • 将“King”的embedding vector与“Queen”的embedding vector相减:

9402021a43b73cf98ac0c3ec14e680f1.png
  • 相减结果表明,“Man”与“Woman”的主要区别是性别,“King”与“Queen”也是一样。一般地,A类比于B相当于C类比于“?”,这类问题可以使用embedding vector进行运算。

1391450c05e5cf55677762a556520bf6.png
  • 如上图所示,根据等式eman−ewoman≈eking−e?得:e?=eking−eman+ewoman利用相似函数,计算与eking−eman+ewoman相似性最大的e?,得到e?=equeen
  • 关于相似函数,比较常用的是cosine similarity,其表达式为:Sim(u,v)=(u^T)⋅v/(||u||⋅||v||)
  • 还可以计算Euclidian distance来比较相似性,即||u−v||^2。距离越大,相似性越小

嵌入矩阵

  • 在词嵌入的学习中,我们最后学习到的就是一个嵌入矩阵,让我们看一下这意味着什么
  • 假设某个词汇库包含了10000个单词,每个单词包含的特征维度为300,那么表征所有单词的embedding matrix维度为300 x 10000,用E来表示。某单词w的one-hot向量表示为Ow,维度为10000 x 1,则该单词的embedding vector表达式为:ew=E⋅Ow

0ce7b1ec30cc2354c49b0e5e604ce005.png
  • 因此,只要知道了embedding matrix E,就能计算出所有单词的embedding vector ew
  • 值得一提的是,上述这种矩阵乘积运算E⋅Ow效率并不高,矩阵维度很大,且Ow大部分元素为零。通常做法是直接从E中选取第w列作为ew即可
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值