文章目录
前言
在AI技术的迅猛发展中,注意力机制成为了关键驱动力,赋予机器高效处理复杂信息的能力。本文深入探索注意力机制及其核心应用——Transformer架构,解析其如何通过自注意力机制革新自然语言处理。同时,对比分析GPT与BERT两大热门模型,揭示它们在策略上的差异与共识,探讨其在未来智能技术中的潜力。此外,本文还将简要提及RNN与Embeddings等基础概念,为读者构建一个关于注意力机制及其应用的初步框架。期待通过本文,读者能对AI领域的这一重要技术有更深入的了解和启发。
一、揭秘注意力机制:AI的焦点如何塑造智能
1.什么是注意力机制?
两种不同的神经网络架构
首先,我们先了解一下下图中两种不同的神经网络架构:传统的编码器-解码器(Encoder-Decoder
)架构和带有注意力机制的编码器-解码器架构。这两种架构常用于序列到序列(Sequence-to-Sequence,Seq2Seq
)任务,如机器翻译。
以学生向教师传递信息举例:
- 传统的编码器-解码器(Encoder-Decoder)架构
- 传递信息时,类似->击鼓传花,A->B->C => 教师
- 带有注意力机制的编码器-解码器架构
- 传递信息时,(A,B,C)=>教师 (教师听每个人说什么,自己分析每人所说的重点)
对比传统编码器-解码器和带有注意力机制的编码器-解码器
a.左侧表格对比了传统编码器-解码器和带有注意力机制的编码器-解码器的函数和步骤:
Encode
:
- 传统编码器:每个输入元素 x i x_i xi更新隐藏状态 h j h_j hj
- 带注意力的编码器:同上,但额外计算了注意力权重 α i j α_{ij} αij并用于生成上下文向量 c j c_j cj
Context
:
- 传统编码器:将最后一个隐藏状态 h T h_T hT 作为上下文向量。
- 带注意力的编码器:通过加权平均所有隐藏状态 h i h_i hi 来生成上下文向量 c j c_j cj。
Decode
:
- 传统解码器:使用上下文向量 c c c 和解码器的前一步隐藏状态 s j − 1 s_{j-1} sj−1 更新解码器隐藏状态 s j s_j sj。
- 带注意力的解码器:同上,但使用的是加权的上下文向量 c j c_j cj。
Generate
:
- 传统解码器:根据解码器隐藏状态 s j s_j sj 和上下文向量 c c c 生成输出 y j y_j yj。
- 带注意力的解码器:同上,但使用加权的上下文向量 c j c_j cj。
b.右侧图形展示了两种架构的详细流程
- 传统编码器-解码器(左半部分):
- 编码器将输入序列 x 1 , x 2 , x 3 x_1, x_2, x_3 x1,x2,x3 转换为隐藏状态 h 1 , h 2 , h 3 h_1, h_2, h_3 h1,h2,h3。
- 最后一个隐藏状态 h 3 h_3 h3 作为上下文向量 c c c 传给解码器。
- 解码器根据 c c c 和前一个输出 y j − 1 y_{j-1} yj−1 生成下一个输出 y j y_j yj。
- 带注意力的编码器-解码器(右半部分):
- 编码器同样将输入序列转换为隐藏状态 h 1 , h 2 , h 3 h_1, h_2, h_3 h1,h2,h3。
- 注意力机制计算出每个隐藏状态的注意力权重 α i 1 α_{i1} αi1, α i 2 α_{i2} αi2, α i 3 α_{i3} αi3。
- 根据注意力权重 α i j α_{ij} αij 计算加权的上下文向量 c j c_j cj。
- 解码器根据 c j c_j cj和前一个输出 y j − 1 y_{j-1} yj−1生成下一个输出 y j y_j yj。
c.关键区别:
- 传统编码器-解码器仅使用最后一个隐藏状态作为上下文向量。
- 带注意力的编码器-解码器使用加权的上下文向量,其中权重取决于解码器的当前状态。
Encoder-decoder Architecture with Attention Model
- 输入序列:
- 输入序列经过编码器转换为隐藏状态。
- 注意力机制:
- 解码器的隐藏状态与编码器的隐藏状态相比较,计算注意力权重,这是由一个名为“alignment function”的函数完成的。
- 注意力权重是通过比较查询(query)和键(key)的相似度得出的。
- 注意力权重通常通过softmax函数进行归一化,以确保总和为1。
- 加权上下文向量:
- 加权上下文向量是通过将隐藏状态乘以其对应的注意力权重然后求和得到的。
- 解码器:
- 解码器根据加权上下文向量和前一个输出生成下一个输出。
- 学习注意力权重:
- 注意力权重的学习是一个迭代的过程,解码器通过反向传播算法调整权重,使其更加聚焦于输入序列中相关的信息。
- 额外的值向量:
- 在某些情况下,注意力机制还考虑额外的值向量,这可能会提供更多的信息来帮助解码器生成输出。
不同类型的对齐函数,进一步分析带注意力机制的编码器-解码器架构
2.为什么需要注意力机制?
注意力机制的特点和优势:
- 注意力机制有助于克服循环神经网络(
RNNs
)的一些挑战,例如输入序列长度增加时性能下降和顺序处理输入导致的计算效率低下。- 在自然语言处理(
NLP
)、计算机视觉(Computer Vision
)、跨模态任务和推荐系统等多个领域中,注意力机制已成为多项任务重的最先进模型,取得了显著的性能提升。- 注意力机制不仅可以提高主要任务的性能,还具有其它优势。它们被广泛应用于提高神经网络的可解释性,帮助解释模型的决策过程,使得原本被认为是黑盒模型的神经网络变得更易解释。这对于人们对机器学习模型的公平性、可追溯性和透明度的关注具有重要意义。
克服循环神经网络(
RNNs
)的一些挑战
- 解决传统编码器-解码器模型的挑战,避免信息损失和无法建模输入输出对齐的问题。
- 允许解码器访问整个编码的输入序列,通过注意力权重选择性地关注相关信息。
- 自动学习注意力权重,捕捉编码器和解码器之间的相关性。
- 构建上下文向量,使解码器能够全面访问输入序列并重点关注相关部分。
- 提高模型性能,改善输出质量,并提供更好的解释性。
二、变革先锋:Transformer的突破与影响力
1.什么是Transformer?
注意力建模技术的关键组成部分:
Encode-Decoder架构 与 Transformer架构
Transformer 架构
Multi-Head Attention
: Transformer的核心模块之一,它允许模型同时关注输入的不同方面。Feed Forward
: 用于非线性变换的全连接层。Add & Norm
: 添加残差连接和层归一化操作,有助于梯度流经深层网络。Positional Encoding
: 添加到输入嵌入中的信号,使模型能够理解输入元素的位置信息。Linear
: 线性变换,可能用于合并多头注意力的结果或其他目的。Softmax
: 输出概率分布。
对比:
seq-aligned RNNs
使用RNN
作为编码器和解码器,而Transformer
完全基于注意力机制。Transformer
引入了多头注意力和残差连接,使得模型更易于训练和扩展。Transformer
中的注意力机制不再局限于序列对齐,而是可以在整个输入序列上自由地分配注意力。
自注意力机制
Scaled Dot-Product Attention =>a 一种对齐函数
Transformer:Encoder-Decoder
2.为什么Transformer如此重要?
- Attention is all you need:
Transformer
是第一个完全依赖自我注意力机制来计算输入和输出表示的转换模型,没有使用序列对齐的RNN
或卷积运算。这意味着它能更好地处理长距离依赖关系,因为它可以直接关注输入序列中的任何部分,而不需要按照顺序处理。
- GPU-friendly parallel computation:
Transformer
的层高度并行化,导致更低的计算成本。由于注意力机制可以并行计算,因此在GPU上运行时速度更快,这对于大规模文本处理任务至关重要。
- Sentence-level representations:
Transformer
结合了位置编码,可以通过考虑标记的相对位置来捕获长程依赖关系。这意味着它不仅能捕捉单词间的直接联系,还能理解句子级别的语境信息。
三、路径分岔:GPT与BERT的策略与应用对比
1.BERT
BERT (Bidirectional Encoder Representations from Transformers)
是一种深度学习预训练模型,由Google的研究人员在2018年提出,并且在自然语言处理(NLP
)领域产生了重大影响。
BERT
的创新之处在于它使用了双向的Transformer
编码器来生成词的上下文嵌入,这意味着它可以同时考虑一个词前后的上下文信息,从而获得更准确的语言理解能力。
BERT : Pre-training + Fine-Tuning Paradigm
BERT 独特价值
1. 全方位上下文理解: 与以前的模型(例如GPT
)相比,BERT
能够双向理解上下文,即同时考虑一个词的左右边的上下文。这种全方位的上下文理解使得BERT
能够更好地理解语言,特别是在理解词义、消歧等复杂任务上有明显优势。
2. 预训练+微调(Pre-training + Fine-tuning)的策略:BERT
模型先在大规模无标签文本数据上进行预训练,学习语言的一般性模式,然后在具体任务的标签数据上进行微调。这种策略让BERT
能够在少量标签数据上取得很好的效果,大大提高了在各种NLP
任务上的表现。
3. 跨任务泛化能力:BERT
通过微调可以应用到多种NLP
任务中,包括但不限于文本分类、命名实体识别、问答系统、情感分析等。它的出现极大地简化了复杂的NLP
任务,使得只需一种模型就能处理多种任务。
4. 多语言支持:BERT
提供了多语言版本(Multilingual BERT
),可以支持多种语言,包括但不限于英语、中文、德语、法语等,使得NLP
任务能够覆盖更广的语言和地区。
5. 性能优异: 自BERT
模型提出以来,它在多项NLP
基准测试中取得了优异的成绩,甚至超过了人类的表现。它的出现标志着NLP
领域进入了预训练模型的新时代。
6. 开源和可接入性:BERT
模型和预训练权重由BERT
模型进行相关研究和应用开发,推动了整个NLP
领域的发展。
2.BERT vs GPT 差异
特性 | BERT | GPT |
---|---|---|
训练方式 | 自编码(Autoencoding) | 自回归(Autoregressive) |
预测目标 | 给定上下文,预测其中一个或多个缺失单词 | 在给定前面的单词时,预测下一个单词 |
输入处理 | 双向,可以同时考虑一个词的左右上下文 | 单向(从左到右或者从右到左) |
适用场景 | 适合理解上下文,有助于信息提取、问答系统、情感分析等 | 适合生成式任务,如文章生成、诗歌创作等 |
架构 | 基于Transformer的编码器 | 基于Transformer的解码器 |
语言模型 | 判别式(Discriminative) | 生成式(Generative) |
优点 | 对上下文理解能力强 | 预测的连贯性强 |
缺点 | 生成的文本连贯性较弱 | 对上下文理解能力相对较弱 |
3.BERT vs GPT 共识
模型架构 | Transformer |
---|---|
数据预处理 | 都需要对数据进行Tokenization,一般使用词片方法(Subword Tokenization) |
模型训练 | 均使用了大量的无标签数据进行预训练 |
任务迁移 | 都可以通过Fine-tuning方式进行任务迁移 |
训练目标 | 都试图通过预训练理解语言的一般模式,如语法、语义、上下文关系等 |
多语言支持 | 均支持多语言模型训练 |
四、一些概念的简单概述
RNN
循环神经网络(RNN)
是一种专为序列数据设计的神经网络模型,它通过在隐藏层中引入循环连接来保持对先前输入的记忆,从而能够处理可变长度的数据序列。 RNN
广泛应用于自然语言处理、语音识别和时间序列预测等领域,但由于梯度消失/爆炸问题,在实际应用中常被LSTM
或GRU
等更先进的变种所取代。
Embeddings
Embeddings
是一种将文本中的单词或短语转换为连续向量的技术,这些向量能够捕捉词汇间的语义和句法关系,从而帮助解决数据稀疏性问题并量化词汇间的相似性和差异性,在自然语言处理任务如文本分类、命名实体识别、机器翻译等场景中有广泛应用。常见的创建方法包括 Word2Vec
、GloVe
、FastText
和 BERT
等,可以通过预训练或与具体任务模型联合训练的方式获得。
五、参考论文:
- An attentive survey of attention models
- Attention Is All You Need
- Visual Attention Methods in Deep Learning An In-Depth Survey