自然语言处理笔记
自然语言处理基本知识
词嵌入(Word Embeddings)的常见方法有哪些?
- 词嵌入的定义:
- 将单词映射到一个实数向量空间中来表示每个单词,这样使得每个单词获得了一个向量表示
- 这些向量通过捕捉语义和句法上的相似性,使得计算机更加容易理解和处理语言
常见方法
-
Word2Vec
- 分为
CBOW
和Skip-gram
两种方法
- 分为
-
Glove
:Global Vectors for Word Representation -
FastText
:由Facebook提出的方法,不仅考虑了单词,还考虑了字符 -
ELMo
: 基于双向LSTM -
BERT
: 由Google提出的基于Transformer
的词嵌入方法
Word2Vec

CBOW(Continuous Bag of Words)
- 更适合用于具有大量数据集,并且关注于高频词的任务中。例如,文本分类、文本聚类
-
CBOW
假定上下文能够精准预测目标词,对于处理上下文信息和常见词汇比较高效 - 训练时间较短:输入为上下文窗口中的多个词向量的平均质量,输出为目标单词的预测
- 词向量的质量:
CBOW
主要用于目标词的预测,对于高频词的词向量的质量比较高- 高质量指的是:词向量能够较好地捕捉单词的语义特征和其他词的语义关系
Skip-gram
- 更适合用于小型数据集,尤其是低频词的处理任务,例如:处理稀有词汇的词向量学习
- 通过目标词来预测上下文信息,对罕见词语义的捕捉能力较强
- 在使用预训练模型中,能够较好的捕捉单词语义的准确信息,是Skip-gram的优势
- 计算复杂度较高:通过一个目标词来预测多个上下文词,对于处理小数据集或者稀有词汇非常有用,但耗时也较多
- 词向量的质量:通过目标词预测其上下文词汇,因此对于低频词和罕见词汇的词向量质量更好
使用Word2Vec
进行训练的相关问题
Transformer
学习到的新词汇
- in broad strokes: 从广义范围来讲
- snippet: 片段
词向量
- 两个词的叠加后的向量,与这个词的意思叠加后表示的词的向量是可能相似的
- 例如$E(cat) + E(plural) = E(cats)$
注意力机制
基本概念
- 词向量仅仅能够单纯表示一个词的独立意思(脱离于语境),还有这个词在句子中的位置
- 但是在实际处理中,我们还需要考虑语境中的依赖关系
- 注意力机制的目的就是通过上下文语境,重新定义这些词嵌入向量
- query矩阵
- 通过词嵌入向量与$W_q$矩阵相乘获得
- 可以用来查找上下文中哪个token与当前token最相关
- 其中的数字在某种程度上表示再前面的
- key矩阵
- 通过词嵌入向量与$W_k$矩阵相乘获得
- 可以看做是对于query向量的回答
- 例如,query向量和key向量的配合可以找到哪个形容词在修饰名词
- value向量
- 通过注意力矩阵,我们已经可以找到与一个名词相关的形容词,那么接下来就要更新这个名词的词嵌入向量
- 从旧词嵌入向量更新到新的词嵌入向量,需要加上一个向量,这个向量就是value向量
- value向量是通过词嵌入向量和$W_v$矩阵相乘得到
- 和一个词有关的词嵌入向量可能有多个,对应的,就有多个value向量,根据计算出来的注意力矩阵确定每个value向量的权重
- 使用权重乘上value向量,加和就是对应的deltaE,词嵌入向量需要更新的向量
- 词嵌入向量的更新公式为:$\Delta E = \sum_{i} a_i \cdot V_i$,其中$a_i$是注意力权重,$V_i$是对应的value向量
- 最终的词嵌入向量更新为:$E_{new} = E_{old} + \Delta E$
- 以上的过程就是一个单头注意力机制
对齐
- 两个词向量的点积,如果两个词向量的点积越大,说明这两个词向量在语义或者其他特征上更加对齐
- query向量和key向量的对齐,就是两个向量的点积,如果点积
Masking
- 如果在计算
query
向量和key
向量的对齐度时,不想考虑后一个token对于前一个 - 可以对于注意力矩阵的下三角部分进行遮罩,即进行masking
Enjoy Reading This Article?
Here are some more articles you might like to read next: