目录
前言
碎碎念:万般皆是命,半点不由人。
手撕transformer
目标:
掌握分词embedding,encoder、 encoder+decoder、decoder结构,注意力
掌握Q/K/V 矩阵乘法,softmax操作和意义,彻底理解attention矩阵,线性缩放
transformer encoder:分词——embedding成向量——和wq,wk,wv(学习得到的)矩阵相乘得到Q,K向量——K,Q相乘知道两个词之间的关系(一个对另一个的影响,结果上偏移多少)即为注意力矩阵——做一个softmax减少规模[0,1]并使得加和为1——上一步结果和V矩阵相乘——(做一个线性变换变成原来向量的维度)知道向哪里偏移——残差连接(梯度消失梯度爆炸 防止参数越大效果反而变差)与原来的input一相加——layer normalize归一化(减去均值除以方差)
大模型分词(tokenization)
将输入的文本切分为机器可以处理的token(词元)。 因此分词很重要。不同语言分词逻辑不同
作用:减小序列长度,提高模型推理效率,减少推理成本
分词算法:
BPE 字节对编码
BPE 分词将训练语料的单词拆解成了重复出现的有意义⽚段
面经
介绍一下transformer的位置编码,以及你知道哪些关于位置编码优化改进的方法:
给模型提供序列中个元素的位置信息,弥补其循环或者卷积结构的不足
transformer架构
编码
计算机怎么识别一句话。 embedding 词向量。
embedding(稠密向量:在特征空间里每一个维度都有数字,每一个词在特征空间里都能找到唯一的那个向量),如何捕捉单词与单词之间相互关系
向量和向量的距离来定义两个向量之间的关系、。把词放到向量里
attention的意义
输入一句话,模型预测下一个可能的单词。每一个单词对于接下来单词的影响,找到可能性最大的那个词。
单词和单词之间的相互影响,位置和单词之间的相互影响
编辑
看别的单词在这句话对此单词的影响来调整语义
编辑
注意力矩阵
编辑
编辑
在encoding_only的结构中,举例the flower中 flower对于the是不会有影响的,这是语义顺序决定的 ,所以我们需要一个mask矩阵把它遮住,全部变成负无穷,经过softmax就全部变成0 了
编辑
自注意力机制:自己对自己的影响
交叉注意力机制(连接编码解码器的那条线)和我没关系的那句话对我的影响
wq和wk 行数的大小和什么有关? 与你要表征的语义空间的维度有关 一般。隐藏层的维度,它决定计算后的行数
多头注意力机制(32-96个头),多搞几个wq和wk wv都和input token去乘,
同一个活,让多个人去干,总有一个人干得最好。因为模型学习是不稳定的所以需要这个操作
整个层的关系
intput_layer: embedding,attention,残差连接,layer normalize 得到丰富的语义特征向量
hidden_layer处理非线性关系: 连续进行线性特征缩放,非线性变换
注意:怎么升维 降维。 降维就乘一个行数小的。列数和自己行数一样的