深度学习术语:词嵌入(大模型基础)

词嵌入(Word Embedding)

==词嵌入的主要思想是将文本转化为数字,==然后通过深度学习等算法可以摄取和处理数字,以形成对自然语言的理解。小说家 EL Doctorow 的一句可爱的话,他非常诗意地表达了这个想法:

It’s like numbers are language, like all the letters in the language are turned into numbers, and so it’s something that everyone understands the same way. You lose the sounds of the letters and whether they click or pop or touch the palate, or go ooh or aah, and anything that can be misread or con you with its music or the pictures it puts in your mind, all of that is gone, along with the accent, and you have a new understanding entirely, a language of numbers, and everything becomes as clear to everyone as the writing on the wall. So as I say there comes a certain time for the reading of the numbers.

翻译如下:
它就像数字是一种语言,好像语言中的所有字母都被转换成了数字,因此每个人都以相同的方式理解它。你失去了字母的声音,不管它们是点击声、爆破声、触碰到上颚的声音,还是发出“噢”或“啊”的声音,以及任何可能被误读的东西,或者那些通过它们的音乐或者它们在你脑海中勾画的画面来欺骗你的东西,所有这些都消失了,连同口音一起,你完全获得了一种新的理解,一种数字的语言,一切对每个人来说都像墙上的文字一样清晰。所以正如我所说,阅读数字的时刻到了。

作者通过比喻的方式表达了一种观点:如果语言中的文字和声音都被转化为数字,那么语言的理解就会变得非常直接和清晰,没有了误解和个人情感色彩的干扰。数字作为一种更加客观和精确的表达方式,可以消除语言中的歧义和主观性,让信息的传递变得像“墙上的文字”一样明显和易于理解。这里提到的“阅读数字的时刻”意味着在某个特定时刻,人们会更依赖数字这种形式的语言来交流和理解世界。

这种数字转化是必要的,因为许多机器学习算法(包括深度网络)要求其输入是连续值的向量;换句话说,机器学习算法需要能够进行数学计算的数据格式,而文本字符串无法直接提供这种格式。这就是为什么我们需要词嵌入技术来将文本转化为数值向量的原因。这种转换使得文本数据可以被算法“理解”和使用。

因此,像词嵌入这样的自然语言建模技术用于将词汇表中的单词或短语映射到相应的实数向量。除了易于通过学习算法进行处理之外,这种向量表示还有两个重要且有利的属性:

  • 降维——这是一种更有效的表示
  • 上下文相似性——这是一种更具表现力的表示

目前常用的几种词嵌入方法:
Word2Vec:由Google提出的一种基于神经网络的词嵌入方法。
GloVe:由斯坦福大学提出的方法,它通过统计语料库中词与词共现的频率矩阵,并对矩阵进行因式分解,从而获得词的向量表示。
BERT:由Google提出的一种预训练语言模型,使用Transformer架构,能够生成上下文相关的词嵌入。

一、Word2Vec

实现Word2Vec主要有两种方法:CBOW(Continuous Bag of Words)和Skip-gram。CBOW通过上下文预测中心词,Skip-gram通过中心词预测上下文。

请添加图片描述

1. CBOW

CBOW模型的目标是通过一个词的上下文(即周围的词)来预测这个词本身。在这个模型中,输入是一个词的上下文,模型会输出一个预测的目标词。例如,如果我们的句子是“猫坐在垫子上”,而目标词是“垫子”,那么其上下文可能是“猫”“坐”“在”“上”。CBOW模型会尝试根据这些上下文词来预测“垫子”

Bag of Words
在自然语言处理(Natural Language Processing, NLP)中,“词袋”(Bag of Words, 简称BoW)是一种简单但有效的文本表示方法。这种方法不考虑文本中单词的顺序和语法结构,只关注各个词汇在文本中出现的频率。具体来说,词袋模型会创建一个词汇表,并将每个文本(如句子或文档)表示为该词汇表中词汇的频率向量。
例如,如果有一个词汇表包含“苹果”,“橙子”,和“香蕉”,而一个句子是“苹果和橙子”,在词袋模型中,这个句子将被转换成向量[1, 1, 0],表示“苹果”和“橙子”各出现一次,“香蕉”未出现。
词袋模型的优点是实现简单,计算上也非常高效。然而,它的缺点是忽略了词汇的上下文信息,可能导致一些语义信息的丢失。此外,这种模型可能面临维度灾难,特别是在词汇表非常庞大的情况下。尽管如此,词袋模型在许多基础的文本分类和聚类任务中仍然非常有用。

2. Skip-gram

与CBOW相反,Skip-gram模型的目标是通过一个词来预测它的上下文。在这个模型中,输入是一个词,输出是它周围的上下文。继续使用上面的例子,“垫子”是输入词,而模型需要预测的上下文词则可能是“猫”“坐”“在”“上”
输入单词作为 one-hot 编码向量传入。这将进入线性单元的隐藏层,然后进入 softmax 层进行预测。这里的想法是训练隐藏层权重矩阵来找到我们单词的有效表示。这个权重矩阵通常称为嵌入矩阵,可以作为查找表进行查询。
请添加图片描述

你可能会问——“那个one-hot编码向量几乎全为零……这会产生什么影响?”如果将 1 x 10,000 one-hot 向量乘以 10,000 x 300 矩阵,它实际上只会选择与“1”对应的行矩阵。这是一个小例子,可以直观地看到:

请添加图片描述

这意味着该模型的隐藏层实际上只是作为查找表运行。隐藏层的输出只是输入单词的“词向量”。

3. Word2Vec的优点和缺点:

  1. 优点:
    有效捕获语义关系。
    对于大型数据集非常有效。
    提供有意义的单词表示。
  2. 缺点:
    可能会难以理解生僻单词。
    忽略词序。

二、GloVe

单词表示的全局向量 (GloVe) 是一种强大的单词嵌入技术,它通过考虑单词在语料库中的共现概率来捕获单词之间的语义关系。 GloVe 有效性的关键在于单词上下文矩阵的构建以及后续的分解过程。
它是斯坦福大学开发的一种无监督学习算法,用于通过聚合语料库中的全局词-词共现矩阵来生成词嵌入。由此产生的嵌入显示了向量空间中单词的有趣的线性子结构。
请添加图片描述
请添加图片描述
这种类型的表示在许多机器学习算法中非常有用。

1. 单词-上下文矩阵的形成

GloVe 机制的第一步涉及创建单词上下文矩阵。该矩阵旨在表示整个语料库中给定单词出现在另一个单词附近的可能性。矩阵中的每个单元格保存单词在特定上下文窗口中一起出现的频率的共现计数。

让我们考虑一个简化的例子。假设我们的语料库中有以下句子:
“Word embeddings capture semantic meanings.”
“GloVe is an impactful word embedding model.”
单词上下文矩阵可能如下所示:
请添加图片描述

在这里,每一行和每一列对应于语料库中的一个唯一单词,单元格中的值表示这些单词在某个上下文窗口中一起出现的频率。

2. 词向量的因式分解

单词上下文矩阵就位后,GloVe 转向矩阵分解。这里的目标是将这个高维矩阵分解为两个较小的矩阵——一个代表单词,另一个代表上下文。让我们将它们表示为 W W W(表示单词)和 C C C(表示上下文)。理想的情况是 W W W C T C T CT 的点积( C C C 的转置)近似于原始矩阵:
X ≈ W ⋅ C T X \approx W \cdot C T XWCT
通过迭代优化,GloVe 调整 W W W C C C,以最小化 X X X W ⋅ C T W \cdot C T WCT 之间的差异。这个过程为每个单词生成精细的向量表示,捕捉它们共现模式的细微差别。

3. 向量表示

经过训练后,GloVe 会为每个单词提供一个密集向量,该向量不仅捕获本地上下文,还捕获全局单词使用模式。这些向量对语义和句法信息进行编码,根据单词在语料库中的整体用法揭示单词之间的相似性和差异。

4. GloVe优点和缺点

  1. 优点:
    有效捕获语料库的全局统计数据。
    擅长表示语义和句法关系。
    有效捕捉词语类比。

  2. 缺点:
    需要更多内存来存储共生矩阵。
    对于非常小的语料库来说效果较差。

三、BERT(更为强大的Embedding)

1. 原理

BERT的关键技术创新是将流行的注意力模型Transformer的双向训练应用于语言建模。
BERT 利用 Transformer,这是一种学习文本中单词(或子词)之间的上下文关系的注意力机制。在其普通形式中,Transformer 包括两个独立的机制 :一个读取文本输入的编码器和一个为任务生成预测的解码器。由于 BERT 的目标是生成语言模型,因此只需要编码器机制
请添加图片描述

BERT和Word2Vec和GloVe在词嵌入的方法上有一些不同之处。其中最主要的区别是BERT引入了位置编码段落编码,而Word2Vec和GloVe没有考虑这些信息。

请添加图片描述

  1. **位置编码(Positon Embeddings)****:
    BERT通过位置编码来考虑词语在句子中的位置信息,这样可以使得模型能够更好地理解句子的结构和语境。位置编码是通过向词嵌入添加一系列固定的位置向量来实现的,这些向量表示了词语在句子中的绝对或相对位置。
  2. 段落编码(Segment Embeddings)
    另外,BERT还考虑了文本中的段落结构,它会为每个token添加一个表示其所属句子的段落嵌入。这样可以帮助模型区分不同句子之间的关系,尤其在处理多句话的情况下更为重要。

此外,BERT不需要像其他序列模型(如LSTM或GRU)那样使用掩码,因为BERT是一个Transformer架构的模型,它可以同时处理句子中的所有token,并且通过自注意力机制实现对上下文的建模。因此,BERT能够更好地捕捉句子中的双向上下文信息,而无需使用掩码来指示哪些部分是上下文,哪些是填充。

2. 编码过程

  1. Tokenization(分词)
    首先,文本被分割成词(或子词)单元,这些单元称为token。通常使用WordPiece或Byte Pair Encoding(BPE)等算法进行分词。

  2. 加入特殊标记
    在分词的过程中,BERT会在句子的开头和结尾加入特殊的标记,例如𝐶𝐿𝑆(用于表示句子的开始)和𝑆𝐸𝑃(用于表示句子的结束)。

  3. 嵌入向量表示
    BERT使用嵌入层将每个token映射到一个高维向量空间中,这些向量被称为词嵌入(word embeddings)。这些向量不仅包含了词语的语义信息,还包含了上下文信息。

  4. Segment Embeddings(段落嵌入)
    BERT还考虑了文本中的段落结构。在处理多个句子的情况下,它会为每个token添加一个表示其所属句子的段落嵌入。

  5. Position Embeddings(位置嵌入)
    为了考虑词语在句子中的位置信息,BERT还会为每个token添加一个位置嵌入,表示其在句子中的位置。

  6. 输入表示
    最后,这些token的嵌入向量、段落嵌入和位置嵌入会被结合起来,作为模型的最终输入(Embedding)表示,送入Transformer网络中进行处理。
    请添加图片描述

3. BERT优点和缺点:

  1. 优点
    能够捕捉双向上下文信息,不仅考虑了词语左侧的上下文,还考虑了右侧的上下文,从而更全面地理解词语的含义和语境。
    更好地反映词语在不同语境下的语义关系,具有更高的表达能力。
    不需要使用掩码来指示填充部分。

  2. 缺点
    受到预训练数据的影响较大
    对特定领域的语言表达能力有限

通过词嵌入技术,我们将文本转化为数字,使得计算机可以更好地理解和处理自然语言。这种转化使得文本的含义变得更加清晰和直观,消除了歧义和主观性的干扰,让信息的传递更加高效和准确。从Word2Vec到GloVe,再到BERT,词嵌入技术不断演进,为自然语言处理领域带来了重大的进步。通过深入理解词嵌入技术的原理和应用,我们能够更好地利用计算机技术解决语言理解和处理的挑战,为人工智能的发展铺平道路。在数字化时代,掌握词嵌入技术,就是掌握了解码“墙上文字”的钥匙,让我们能够更深入地理解和利用信息,开启智能化生活的新篇章。

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值