八、词嵌入语言模型(Word Embedding)

词嵌入(Word Embedding, WE),任务是把不可计算、非结构化的词转换为可以计算、结构化的向量,从而便于进行数学处理。

一个更官方一点的定义是:词嵌入是是指把一个维数为所有词的数量的高维空间(one-hot形式表示的词)【嵌入】到一个维数低得多的连续向量空间中,每个单词或词组被映射为实数域上的向量。

 Word Embedding 解决了 One-Hot 独热编码的两个问题。参考:一、独热编码(One-Hot)

  • Word Embedding 矩阵给每个单词分配一个固定长度的向量表示,这个长度可以自行设定,实际上会远远小于字典长度,将词向量映射到了一个更低维的空间。
  • Word Embedding 矩阵使两个词向量之间的夹角值(最常用到的相似度计算函数是余弦相似度(cosine similarity))作为他们之间关系的一个衡量,保持词向量在该低维空间中具备语义相似性,越相关的词,它们的向量在这个低维空间里靠得越近。

Word Embedding 示例图:参考Word Embedding介绍

展示将 “way back into love” 翻译成中文的过程: 

第一步:将 “way back into love” 四个词分别用四个不同的向量表示(图中采用 One-Hot 独热编码方式为例);

第二步:通过 Word2vec/GloVe 等词嵌入Word Embedding 方法提取文本特征,并将这四个高维向量进行降维,得到四个词各自对应的 embedding(图中以 2 维向量作为示例)。

第三步:需要再经过 Model 之后做进一步的提取文本特征,才能得到对 “way back into love” 的翻译结果。

1 Word2Vec

Word2Vec 中有两种基本的模型:CBOW 和 Skip-Gram。参考自然语言处理与词嵌入

1.1 连续词袋模型(CBOW)

连续词袋模型(Continuous Bag-of-Words Model, CBOW)是通过用环境中的每一个词去预测中心词。相当于一句话中扣掉一个词,让你猜这个词是什么。其本质是通过背景词(context word)来预测一个单词是否是中心词(center word)。

CBOW 示例:参考更详细的示例解析

XX ...
输入 输出 输入 ...
  • 在 CBOW 中,会定义一个为 window_size 的参数,假如 window 的大小为 1,那么中心词的前 1 个词和后面 1 个词就被选入了我们的窗口里,以 XX 为例,上下文的词为    ['我', '你'] 。 
  • 然后模型先将每个字符处理为 One-Hot 形式,其中维度大小为词表的大小(不同词的个数)。例如,一篇文章由 1000 个不同的词构成,那么词表大小即为1000,每个词的 One-Hot 编码大小为 1*1000。
  • 接着,将 One-Hot 向量进行相加。获得了一个输入向量以及目标向量后,将输入向量 X输入全连接层(设置好维度参数)中,进行参数的优化训练。(这里优化的目标是让模型能够学的词与词之间的上下文关系,我们的代价函数就是使得 sofamax 中预测的分布 y 与真实值 Y 这两个矩阵的交叉熵最小化,也可以最小化这两个矩阵的差平方,即损失值)
  • 训练结束后,对我们真正有用的是隐藏层中的权重 W,这就是我们所需要的词向量。 

CBOW 原理图:

1.2 Skip-Gram

Skip-Gram 是通过用中心词来预测上下文。其本质则是在给定中心词(center word)的情况下,预测一个词是否是它的上下文(context word)。

CBOW 示例:参考网络模型是如何计算的

XX XX
输出 输入 输出

Skip-Gram 原理图:

  • 输入的中心词 One-Hot 独热编码向量
  • 输入乘以 center word 的矩阵 W 得到词向量
  • 词向量乘以另一个context word 的矩阵 W(t) 得到对每个词语的相似度
  • 对相似度得分取 Softmax 得到概率,与答案对比计算损失。

我们提到预测中心词和上下文的最终目的还是通过中心词和上下文,去训练得到单词语义上的关系,同时还做了降维,最终得到想要的 embedding 了。

1.3 缺点

由于词和向量是一对一的关系,所以 Word2vec 无法解决多义词的问题。

 2 GloVe

GloVe 的全称叫 Global Vectors for Word Representation,它是一个基于全局词频统计(count-based & overall statistics)的词表征(word representation)工具,它可以把一个单词表达成一个由实数组成的向量,这些向量捕捉到了单词之间一些语义特性,比如相似性(similarity)、类比性(analogy)等。参考GloVe

共现矩阵(Co-Occurrence Matrix)指的是矩阵中的每一个元素 Xij 代表单词 i 和上下文单词 j 在特定大小的上下文窗口(context window)内共同出现的次数。

例如,语料库(corpus)中有如下两句话:

  • 句子1:小唐喜欢看电视剧,小王也喜欢看电视剧
  • 句子2:小唐还喜欢看电影

有以上两句话,设置滑窗为2,可以得到一个词典为:{'小唐', '小王', '还', '也', '喜欢', '看', '电视剧', '电影'}。这样我们可以得到一个共现矩阵(对称矩阵):

小唐 小王 喜欢 电视剧 电影
小唐 0 0 1 0 1 0 0 0
小王 0 0 0 1 0 0 0 0
1 0 0 0 1 0 0 0
0 1 0 0 1 0 0 0
喜欢 1 0 1 1 0 3 0 0
0 0 0 0 3 0 2 1
电视剧 0 0 0 0 0 2 0 0
电影 0 0 0 0 0 1 0 0

GloVe 模型仅对单词共现矩阵中的非零元素训练,从而有效地利用全局统计信息,并生成有意义的子结构向量空间。给出相同的语料库,词汇,窗口大小和训练时间,它的表现都优于 Word2Vec,它可以更快地实现更好的效果,并且无论速度如何,都能获得最佳效果。

相关推荐

  1. 语言模型向量表示

    2024-03-11 07:06:04       9 阅读
  2. 自然语言处理(NLP)基础:文本预处理与嵌入

    2024-03-11 07:06:04       23 阅读
  3. 语言模型高质量提示工程技巧指南

    2024-03-11 07:06:04       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-11 07:06:04       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-11 07:06:04       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-11 07:06:04       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-11 07:06:04       18 阅读

热门阅读

  1. 计算机基础专升本笔记十一-Word常用快捷键大全

    2024-03-11 07:06:04       26 阅读
  2. 云原生应用架构-微服务开发最佳实践

    2024-03-11 07:06:04       19 阅读
  3. 第十五单元日考技能

    2024-03-11 07:06:04       22 阅读
  4. Charles无法打开导出的har文件解决方法

    2024-03-11 07:06:04       23 阅读
  5. Asp .Net Core 系列:Asp .Net Core 集成 Newtonsoft.Json

    2024-03-11 07:06:04       22 阅读
  6. 在windows和macos安装multipass

    2024-03-11 07:06:04       24 阅读
  7. 如何删除github中已经被追踪的文件

    2024-03-11 07:06:04       25 阅读
  8. storm连接kafka

    2024-03-11 07:06:04       23 阅读
  9. 【ICRA】ICRA2023 Paper List

    2024-03-11 07:06:04       21 阅读
  10. leetcode热题HOT 25. K 个一组翻转链表

    2024-03-11 07:06:04       23 阅读