Datewhale组队学习
Transformer结构概述
1. Attention 机制
1.1 引入Attention机制
Attention机制最初是为了改进基于Encoder-Decoder的神经机器翻译系统而提出的,解决了RNN/LSTM在处理长序列时的长程依赖问题。传统的Encoder-Decoder模型通过编码器生成一个固定长度的上下文向量,解码器基于该向量生成输出。然而,这种方法在处理长句子时效果不佳,因为编码器难以有效总结长序列信息。Bahdanau等人(2015)提出了Attention机制,允许模型在生成每个输出时动态关注输入序列的不同部分,从而更好地捕捉长距离依赖关系。
1.2 Attention机制的工作原理
Attention机制的核心是“加权求和”。它通过以下步骤实现:
- 分解输入:将输入序列分解为单个元素(如单词)。
- 分配重要性:根据每个元素与当前任务的关联性,分配一个权重。
- 加权求和:根据权重对输入元素进行加权求和,生成上下文向量。
Attention机制的优势在于它能够动态地为输入序列中的不同部分分配不同的权重,从而更好地捕捉序列中的关键信息。
1.3 全局注意力与局部注意力
- 全局注意力:考虑所有输入元素的隐藏状态,计算复杂度较高,适合处理较短的序列。
- 局部注意力:只考虑输入序列的一部分,减少了计算量,适合处理较长的序列。局部注意力通过预测对齐位置和定义注意力窗口来实现。
2. Transformer模型
2.1 Transformer模型架构
Transformer模型由编码器和解码器组成,每个编码器和解码器层包含自注意力机制和前馈网络。Transformer通过自注意力机制捕捉序列中的全局依赖关系,并通过位置编码引入序列的顺序信息。
2.2 Transformer的工作流程
Transformer通过自注意力机制为每个输入元素生成多个注意力分数,从而捕捉序列中不同元素之间的关系。例如,在处理代词“it”时,模型可以通过自注意力机制确定“it”指代的具体对象。
2.3 Transformer的发展历程
Transformer模型自2017年提出以来,迅速成为自然语言处理领域的主流模型。后续的BERT、GPT等模型基于Transformer架构,进一步推动了NLP技术的发展。
2.4 Transformer对seq2seq模型的影响
- 摒弃RNN结构:Transformer完全摒弃了RNN结构,使用自注意力机制处理序列数据,提高了并行计算能力。
- 引入自注意力机制:自注意力机制允许模型在处理每个序列元素时考虑到序列中所有其他元素的信息,有效捕捉长距离依赖关系。
- 位置编码:由于Transformer没有递归结构,位置编码被引入以保留序列的顺序信息。
- 训练效率提升:Transformer的并行化处理显著提高了训练效率,能够处理更长的序列。
2.5 迁移学习与预训练模型
Transformer的成功推动了预训练模型的发展,如BERT、GPT等。这些模型通过在大规模语料上进行预训练,然后在特定任务上进行微调,显著提升了NLP任务的性能。
3. Transformer vs CNN vs RNN
- 计算复杂度:Transformer的自注意力机制计算复杂度为O(n²d),RNN为O(nd²),CNN为O(knd²)。当序列长度n小于维度d时,Transformer的计算效率更高。
- 并行操作数量:Transformer和CNN的并行度较高,而RNN由于序列依赖关系,难以并行化。
- 最长计算路径:Transformer的最长计算路径为O(1),而RNN为O(n),CNN为O(n/k)。
4. 输入嵌入与位置编码
4.1 词嵌入(Word Embedding)
词嵌入通过将单词映射到低维向量空间,捕捉单词的语义信息。可以使用预训练的词嵌入(如Word2Vec、GloVe)或随机初始化的词嵌入。
4.2 位置编码(Position Embedding)
由于Transformer没有递归结构,位置编码被引入以保留序列的顺序信息。位置编码通过正弦和余弦函数生成,能够捕捉序列中元素的相对位置关系。
词向量生成过程总结
词向量是将自然语言中的词语转化为计算机可理解的数值向量表示的过程。词向量的生成方法主要分为两类:基于统计的方法和基于神经网络的方法。以下是词向量生成过程的详细总结:
一、引言
词向量的核心目标是将自然语言中的词语转化为计算机可处理的数值向量。词向量的生成方法主要包括:
- 独热编码(One-hot Encoding):稀疏表示,每个词用一个高维向量表示,向量中只有一个位置为1,其余为0。
- 分布式表征(Distributed Representation):稠密表示,每个词用一个低维稠密向量表示,向量中的每个元素都是实数。分布式表征能够捕捉词语之间的语义关系。
Word2Vec 是生成分布式表征词向量的主流方法之一,其他方法包括 LSA、PLSA、LDA 等。
二、基于统计的词向量生成方法
(一)词袋模型(Bag-of-Words, BoW)
原理:
- 将文本视为词的集合,忽略词序和语法结构。
- 每个文本表示为一个向量,向量的每个元素对应词汇表中的一个词,值为该词在文本中出现的次数。
构建过程:
- 构建词汇表:统计语料库中所有不重复的词。
- 对每个文本,统计词汇表中每个词的出现次数,生成向量。
缺点:
- 忽略词序和语义信息。
- 向量维度高,计算成本大。
(二)TF-IDF(词频-逆文档频率)
原理:
- 在词袋模型的基础上,引入词的重要性权重。
- TF(词频):词在文本中出现的频率。
- IDF(逆文档频率):词在整个语料库中的稀有程度。
- TF-IDF = TF × IDF。
构建过程:
- 计算每个词的 TF 和 IDF。
- 将 TF 和 IDF 相乘,得到每个词的 TF-IDF 值。
优点:
- 能够体现词在文本中的重要性。
缺点:
- 仍然无法捕捉语义信息。
- 对常见词(如“的”“是”)的权重可能过高。
三、基于神经网络的词向量生成方法
(一)Word2Vec
原理:
- 通过神经网络学习词的分布式表示。
两种主要架构:
- CBOW(Continuous Bag-of-Words):根据上下文预测中心词。
- Skip-Gram:根据中心词预测上下文。
训练过程:
CBOW:
- 输入:上下文词的 one-hot 编码。
- 输出:预测中心词的概率分布。
Skip-Gram:
- 输入:中心词的 one-hot 编码。
- 输出:预测上下文词的概率分布。
- 通过反向传播算法优化模型参数。
优点:
- 能够捕捉词的语义信息。
- 支持词向量的语义运算(如“国王 - 男人 + 女人 ≈ 女王”)。
(二)GloVe(Global Vectors for Word Representation)
原理:
- 结合统计方法和神经网络方法,基于词的共现矩阵学习词向量。
训练过程:
- 构建词的共现矩阵。
- 定义目标函数,最小化预测共现概率与实际共现概率的差异。
- 通过优化算法(如随机梯度下降)更新词向量。
优点:
- 有效利用语料库的统计信息。
- 训练速度快,适合大规模语料库。
四、词向量的完整生成过程
(一)数据收集与预处理阶段
收集语料库:
- 获取大量文本数据(如新闻、论文、社交媒体等)。
文本清洗:
- 去除噪声(如 HTML 标签、特殊字符)。
分词:
- 对中文等语言进行分词。
构建词汇表:
- 统计语料库中所有不重复的词,并为每个词分配唯一索引。
(二)模型选择与架构设计阶段
基于统计的模型:
- 词袋模型(BoW):简单,忽略词序。
- TF-IDF:引入词的重要性权重。
基于神经网络的模型:
- Word2Vec:CBOW 和 Skip-Gram 架构。
- GloVe:基于共现矩阵学习词向量。
(三)模型训练阶段
定义目标函数:
- 最小化预测结果与真实标签之间的误差。
选择优化算法:
- 常用算法:随机梯度下降(SGD)、Adam 等。
训练过程监督与调整:
- 监控损失值,调整超参数(如学习率)。
(四)词向量生成与评估阶段
生成词向量:
- 训练完成后,为词汇表中的每个词生成词向量。
评估词向量质量:
- 通过词向量之间的相似度评估语义关系。
- 在下游任务(如文本分类、命名实体识别)中评估词向量的性能。
欢迎各位大佬在评论区交流&批评指正!
Datewhale组队学习
参考链接
评论 (0)