当前位置: 首页 > news >正文

自用大模型学习笔记--transformer(不定期更新,欢迎挑错)

Self-Attention机制

产生原因:每个词在句子中的重要程度不同,所以对每个词要赋予不一样的权重。

自注意力机制是注意力机制的一种,目的是让机器注意到整个输入中不同部分之间的相关性。其减少了对外部信息的依赖,更擅长捕捉数据或特征内部相关性。QKV是同一个东西,或来源于同一个X,从而更关注X的关键信息。

1、将input embedding成向量。

2、分别和权重矩阵相乘得到Query向量(查询),Key向量(键)和Value向量(值)。

Query向量(查询):查询的范围,主观意识的特征向量

Key向量(键):被比对的项,物体的突出特征向量

Value向量(值):物体本身的特征向量,与KEY成对出现

3、q1向量分别和k1,k2...做点积(点积是其中一种方法,还有cosine相似度,MLP网络),得到相关性分数(score)。这里为什么要点积呢,因为点积中的cos反映了两个向量在方向上的相似度。

4、为了避免模长给score带来影响,score会除以q、k、v维度的平方根(论文中是8),使梯度更稳定。

5、mask是可选步骤,在encoder里面不做,decoder里面会做(这个后面会讲)。

6、经过softmax得到权重因子(更加突出重要元素的权重)。

7、权重因子和value相乘得到词的新的向量表示。

公式如下:

Multi-Head Self-Attention

对于同一个输入X,定义多组可训练的参数矩阵,从而得到多个不同的Q,K,V,最后学习到不同的参数。

Encoder-Decoder

注意里面用到了交叉注意力机制(decoder的q和encoder的kv运算)

【Transformer系列(1)】encoder(编码器)和decoder(解码器)_encoder和decoder的区别-CSDN博客

layer Norm(NLP): 几个句子就有几个分布,并标准化,不同句子的语义失去可比性。

batch Norm(CV): 一个batch中同一通道的所有特征视为一个分布,并将其标准化,因为同一通道一般捕捉的是同一类特征。

mask 机制:做预测的时候只考虑输入向量本身和输入向量之前的向量,不考虑后面的向量

减少Attention计算量的方法

一、通过人类知识省略一些计算量

(1)local attention/ truncated attention

只需要知道左右邻居的key,其他的值都设为0。

类似CNN,因为a. 只关注局部区域;b. 参数共享; c. 局部特征提取

(2)stride attention

关注stride外的领居

(3)global attention

add special token into original sequence(类似token中的综合员)

these special tokens: attend to every token; attended by every token

二、只关注关键信息

(1)small values directly set to 0

如何找到small values? 对Q, K 做clustering,相近的vector属于一个群

(2)learnable patterns(学另一个Network)

(3)linformer/ compressed attention(压缩矩阵)

N keys---K representative keys

N values--K representative values

三、改变运算顺序

kq first-- vk first

改变前: N*d*N+d'*N*N

改变后:d'*N*d+d'*d*N

计算量得到的减少

四、新的框架结构

synthesizer

大模型输出采样方法(TOP-K,TOP-P,temperature)

top-k: 每一步只从概率最高的K个单词中进行随机采样(k是超参数)

top-p: 每次生成下一个单词时,首先计算所有可能单词的概率分布,然后从高向低排序,直到累积的概率和超过阈值,并在此范围内随机采样。

temperature: 使用温度调整单词的概率分布,温度越低模型越具有确定性。

【Transformer系列(2)】注意力机制、自注意力机制、多头注意力机制、通道注意力机制、空间注意力机制超详细讲解-CSDN博客

相关文章:

  • VS 2022,配置PCL 1.12.0,C#使用C++/CLI调用
  • Spring Boot 3.4.3 基于 SpringDoc 2 和 Swagger 3 实现项目接口文档管理
  • C++26 编译时反射简介
  • 0101数学_算法-常用符号-常用模板.md
  • stm32week9
  • 【Es】基础入门:开启全文搜索的大门
  • 数据结构每日一题day4(顺序表)★★★★★
  • conda的基础命令
  • VLAN的高级特性
  • 苹果与安卓,鸿蒙下跨设备,应用分享
  • Matlab_Simulink中导入CSV数据与仿真实现方法
  • 基于Spring Boot的木里风景文化管理平台的设计与实现(LW+源码+讲解)
  • 1.2 斐波那契数列模型:LeetCode 面试题 08.01. 三步问题
  • 【NLP】13. NLP推理方法详解 --- 穷举和贪心搜索
  • Hyperlane 框架的临时上下文数据功能:助力高效 Web 开发
  • NoSQL数据库
  • JS 手撕题高频考点
  • MATLAB详细图文安装教程(附安装包)
  • 域渗透(web安全)
  • 归并排序与快速排序的简单实现(C语言)
  • 小型网站商城建设/抖音搜索优化
  • 设计师必须知道的十个网站/黄页88网推广服务
  • 做网站和做推广的区别/手机创建网站免费注册
  • dede美女图片网站模板/镇江百度推广公司
  • 网站索引量/百度网站推广价格
  • 自己做的网站上怎么编辑滚动窗口/网络营销知名企业