Transformer
机器学习和深度学习本质区别
机器学习:编写固定菜谱,人工制定规则处理输入(比如遇到A就输出1)
深度学习:可以调节
- 输入:任意实数数组(包括图片像素、文字向量)
- 核心:通过权重参数对数据变换,权重会再训练过程中自动调整
权重就是模型的大脑,是在训练过程中学习到的,决定了模型的行为模式
正在处理的数据,仅仅编码了某次操作中模型接收的具体输入
-
关键特性:数据和模型的唯一交互方式是矩阵运算(向量转换)
-
注意:并不是简单构建一个参数众多的庞大模型就能有效工作,可能导致模型严重过拟合训练数据/训练特别困难
-
训练的本质:通过大量数据调整权重,奖励正确预测,惩罚错误预测
-
反向传播:根据预测误差从输出层推导调整各层权重
Transformer底层流程
①拆解Token:将输入的内容拆解为多个小片段(词元Token)
例如:”我爱AI“ 可以拆解为[”我“,”爱“,”AI“]
②嵌入向量初始化:给每个Token对应到一个数字向量上,初始化:
-
向量仅代表此Token的字面含义,不会涉及其他周边环境的信息
例如:苹果,就代表苹果水果这个含义,不会因为他后面跟着苹果手机,就改变这个语言
向量的初始位置相当于高维空间中的箭头,比如猫和狗的向量夹角就会小,和汽车的夹角就会大 -
向量里会加位置编码Position,让模型知道这个词是第几个(上下文中位置)
③注意力模块Attention Bolock:接下来所有Token向量会相互交流,更新自己的值
- 比如苹果后面如果接手机这个词,会重点影响”苹果“向量,模型会学习哪些词对当前词很重要
- 信息可以跨远距离传递,哪怕词隔很远也能直接互动
- 输出时,每个向量可包含上下文信息
传统RNN只能顺序处理单词,距离远的信息就丢失了,Attention强调互相看,不管多远
初始时嵌入矩阵随机,所有词毫无意义。训练后向量会通过Attention和MLP学会语言和上下文关系
④前馈网络MLP:也叫多层感知机,主要让每个Token单独升级
-
每个向量会独立通过一个MLP层,问"根据你现在的新含义,你怎么调整向量中的数字?"调整后,向量的含义会更精准
-
这一步全部都是并行计算,向量间不交流
⑤重复交替Attention交流 + MLP升级
⑥模型会取最后一个Token的向量,用它来计算下一个词出现的概率,选取概率最高的为预测结果
因为核心都会融入到序列的最后一个向量中
例如:输入”我爱“,输出可能是{”AI“70%,"学习"20%}
Transformer核心部件
①嵌入层Embedding:将单词转换为向量(如”猫“->[0,1,2…])
- 初始值随机生成,训练中调整
- 目标:让语义相似的词向量方向接近
- 矩阵大小:向量维度 × 词表大小(d_embed * n_vocab)
②注意力机制Attention:
-
目标:让每个词向量能询问其他词:你们谁对我更重要?
-
三步操作:
- Query:查询向量,当前词提出问题(”我是名词,谁是形容词可以修饰我?“)
- Key:键向量,其他词提供答案线索(”我是形容词“)
- Value:值向量,实际传递的信息(”把我的‘小型的’含义加个你“)
效率优化:如Value矩阵由Query+Key组合得到,可以减少计算量
-
数学过程:
-
计算Query和Key的点积(匹配度分数)
-
Softmax归一化(分数->概率)
技术细节:确保后续词不影响前面词(不然后面词汇会泄漏接下来的内容线索)->Mask掩码机制
-
用概率加权求和Value,更新当前词向量
-
-
多头注意力:并行多组Q/K/V,让模型从不同角度理解上下文(比如同时关注语法、语义)
这里都是Self-Attention概念,Cross-Attention和Self-Attention不一样的点在于键和查询映射在交叉,注意力机制中会作用于不同的数据集,即Query和Key来自不同序列,常用于翻译任务
③前馈网络MLP:对注意力处理后的向量单独精加工
- 特点:纯并行计算,无词间交互
④输出阶段Unembedding:将最终向量映射回词表空间(n_vocab*d_embed )
- Softmax温度参数T:T=0代表确定性输出(总选概率最高的,略显呆板)。T>0增加随机性(输出回更创意,但可能不合理)
本文仅自己学习整理,如有不正确的观点感谢留言或评论~
参考学习的资源是3Blue1Brown大神的很多作品都太妙了!!!