一、transformer模型简介
- 当前主流大模型都是基于transformer进行设计的
- transformer模型是有多层多头自注意力模块堆叠而成的神经网络模型
- transformer模型由解码器与编码器构成,二者可独立使用,例如BERT是基于编码器架构的模型,GPT是基于解码器架构的模型
- 与早期模型相比,大模型使用了更长的向量维度、更深的层数,进而包含了更大规模的模型参数,并主要使用解码器架构,对transformer本身架构和配置改变不大
- 编码器与解码器都有生成内容的能力
二、模型架构
编码器架构
输出数据
^
…(与前面相同,多层叠加)
^
残差连接和层归一化
前馈网络层
^
残差连接和层归一化
多头自注意力层
^
输入编码(词建模)
^
输入数据
解码器架构
输出数据
^
归一化指数函数
全连接层
^
…(与前面相同,多层叠加)
^
残差链接和层归一化
前馈网络层
^
残差链接和层归一化
多头自注意力层
^
残差连接和层归一化
掩码多头自注意力层
^
输入编码(词建模)
^
输入数据
三、模型组成
输入编码
- 定义:将词元序列转换成词向量和位置向量的过程
- 功能:词元序列->输入编码模块->词向量序列
- 为什么要有这一层:为了捕捉词汇本身的语义,每个词元会被输入编码模块转换成可学习的、有固定维度的向量
- 位置向量分类
- 绝对位置(会限制长文本处理能力)
- 相对位置
多头自注意力机制
- 特点
- transformer核心创新
- 相比于 循环神经网络(RNN)和卷积神经网络(CNN),多头自注意力机制可以直接建模任意词元之间的交互关系
- 原理:通过并行计算多个自注意力头来增强模型表达能力、稳定性和表示能力,解决了单头注意力机制在捕捉复杂依赖关系、多样化特征以及提高模型稳定性和泛化能力方面的局限性
- 计算过程:
(1)输入数据(词元向量序列)
(2)线性变换生成查询(Q)、键(K)、值(V)
(3)计算注意力权重
(4)计算加权求和值向量
(5)组合多个头结果
前馈网络层
- 作用:解决自注意力机制在表达能力和提取特征方面的局限性,提升模型处理复杂序列数据的表现
- 原理:通过引入非线性、增加模型深度、增加局部特征表现能力、提供更多参数化表示
- 意义:前馈网络层与多头自注意力机制,是transformer模型基础
- 结构:
- 输入的向量经过第一个线性变换、生成一个中间表示
- 中间表示经过一个非线性激活函数(默认ReLU)进行激活
- 激活后的数据再经过一次线性变换,生成最终输出
残差连接
- 作用:将输入与该层输出相加,实现了信息再不同层之间的跳跃传递,缓解梯度爆炸和消失的问题
掩码自注意力
- 作用:用来在计算注意力信息时,掩盖当前位置之后的词,以保证生成目标序列时,不受未来信息影响
全连接层
- 作用:通常用于将数据映射到输出空间,起到信息整合和特征转换的作用
- 特点:全连接层是一个神经网络层,其中每一个神经元都与上一层的神经元相连接
归一化指数函数
- 作用:将输入向量转换为概率分布的函数,常用于分类任务中生成多类别概率分布