NLP - Transformer原理解析
一、背景介绍
论文地址:https://arxiv.org/pdf/1706.03762
模型优势
1. 能够实现并行计算,提高模型训练效率
2.更好的特征提取能力
发展进程:
ANN人工神经网络 -> RNN循环神经网络 -> LSTM/GRU -> Seq2Seq 模型框架 ->
Seq2Seq + 注意力机制 -> Transformer -> GPT、BERT、DeepSeek、Qwen等
绝大多数大模型底层的原理都是Transformer
二、框架结构
1. Seq2Seq 与 Transformer
2.四大部分
① 输入部分 ② 编码器部分 ③ 解码器部分 ④ 输出部分

============================== 通用部分 ===================================
Positional Encoding:位置编码
作用:给词向量增加位置信息。transformer框架本身是不明白词和词之间的顺序关系。所以需要额外告诉它,位置不同,词的含义也不同。
例如:小龙女想 过过 过过 过过 的生活,3个过过 含义完全不一样。
Feed Forward: 前馈神经网络/前馈全连接层
作用: 对每个位置的词向量进行信息增强,经过注意力机制处理后的数据,再使用前馈网络加工一下,给每个词添加更多的额外信息。
Add & Norm: 残差连接 和 层归一化/规范化层
作用:Add残差连接,是把注意力机制计算结果和原始结果进行求和
Norm层归一化,让数据调整到正态分布中,让模型更加稳定。
============================= 编码器端部分 =================================
左Nx:编码器层堆叠N层,得到编码器
作用: 把【多头自注意力子层+前馈网络】堆叠了6层。论文中N的值是6
Multi-Head Attention: 多头自注意力层
作用: 让模型同时从多个角度关注句子中每个词的含义
例如:大家就业时候,1个老师负责100个学生就业,那么每个学生受到帮助的程度都比较少。老师人数增加到10个,平均每个老师负责10个学生,10个老师不仅能够同时搞就业,而且每个学生受到关注的程度变高
Input Embedding: 编码器端的词嵌入层
作用:把词索引转成词向量
============================= 解码器端部分 =================================
右Nx:将解码器层堆叠N层,得到解码器
作用:把【掩码多头自注意力子层+多头注意力子层+前馈网络子层】堆叠了6层。论文中N值是6
Multi-Head Attention:多头注意力(也称为 交叉注意力 Cross Attention)
作用:让解码器更加关注编码器端输出的哪些数据
例如:文本翻译的时候,解码器译to之前,要分别与编码器端的欢迎、来、北京计算相似性。
Masked Multi - Head Attention: 掩码多头自注意力
作用:掩码的作用是为了防止偷看未来(后面)的词
例如:文本翻译的时候,解码器得到英语单词,例如翻译to的时候,只能查看它当前已翻译得到的词(例如Welcome),不能查看还未翻译的词(例如Beijing)
Output Embedding:解码器端的词嵌入层
作用:把词索引转成词向量
3.架构概述
输入文字 -> 嵌入 -> 位置编码 -> 编码器多层加工(注意力+前馈) -> 解码器多层加工(掩码注意力 + 关联编码器(交叉注意力) + 前馈) -> 线性层 -> Softmax -> 输出概率选词
整体架构的核心:
注意力机制抓关联,多层堆叠挖深度,残差归一化稳训练
三、具体开发步骤
1. Transformer 底层源码剖析(输入部分)
https://blog.csdn.net/i_k_o_x_s/article/details/161065795?spm=1001.2014.3001.5502
2. Transformer底层代码剖析(通用部分)
https://blog.csdn.net/i_k_o_x_s/article/details/161096897?spm=1001.2014.3001.5502
3. Transformer底层源码剖析(编码器部分)
https://blog.csdn.net/i_k_o_x_s/article/details/161173312?spm=1001.2014.3001.5502
4.Transformer底层源码剖析(解码器部分+输出)
https://blog.csdn.net/i_k_o_x_s/article/details/161176836?spm=1001.2014.3001.5502
编码器

解码器
参考编码器的开发过程,大部分地方的功能直接服用。主要开发【掩码多头自注意力层】
输出部分
非常简单,nn.Liner全连接层+Softmax激活函数
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)