Transformer的核心机制

假设词元是100维度,WQW_QWQ、WKW_KWK、WVW_VWV都是100×100的参数矩阵

一、基础设定

词元向量维度:dmodel=100d_{\text{model}} = 100dmodel=100

单条序列有 NNN 个词元,输入张量形状N, 100N,\\ 100N, 100(词数 × 词向量维度)

二、单头自注意力:Q/K/V 投影矩阵

Transformer 里的 Q、K、V 不是直接用原输入,而是通过独立线性层(参数矩阵)做线性变换得到。

设单头注意力中,Q/K 维度为 dkd_kdk,V 维度为 dvd_vdv,常规设计:dk=dvd_k = d_vdk=dv

  1. 投影矩阵形状
    输入:X∈RN×100X \in \mathbb{R}^{N \times 100}X∈RN×100
  • Query 投影矩阵:WQ∈R100×dk\boldsymbol{W}_Q \in \mathbb{R}^{\boldsymbol{100 \times d_k}}WQ∈R100×dk
  • Key 投影矩阵:WK∈R100×dk\boldsymbol{W}_K \in \mathbb{R}^{\boldsymbol{100 \times d_k}}WK∈R100×dk
  • Value 投影矩阵:WV∈R100×dv\boldsymbol{W}_V \in \mathbb{R}^{\boldsymbol{100 \times d_v}}WV∈R100×dv

变换计算:

Q=X⋅WQ,K=X⋅WK,V=X⋅WVQ = X \cdot W_Q,\quad K = X \cdot W_K,\quad V = X \cdot W_VQ=X⋅WQ,K=X⋅WK,V=X⋅WV

  1. 两种常见情况
情况1:单头、不压缩维度(dk=dv=100d_k=d_v=100dk=dv=100)

此时三个参数矩阵都是:100×100100 \times 100100×100

变换后:Q,K,V∈RN×100Q,K,V \in \mathbb{R}^{N \times 100}Q,K,V∈RN×100

情况2:标准多头配置(以8头举例,h=8h=8h=8)

总维度 dmodel=100d_{\text{model}}=100dmodel=100 要均分至每个头:

dk=dv=dmodelh=100/8=12.5d_k = d_v = \dfrac{d_{\text{model}}}{h} = 100/8 = 12.5dk=dv=hdmodel=100/8=12.5

工程上一般取能整除的维度 ,我们换标准配置:

以论文原版 dmodel=512, h=8d_{\text{model}}=512,\ h=8dmodel=512, h=8 举例(512/8=64512/8=64512/8=64)更好理解:

每个头 dk=dv=64d_k=d_v=64dk=dv=64,

单个头的 WQ,WK,WVW_Q,W_K,W_VWQ,WK,WV 形状:512×64512 \times 64512×64

实操简化写法:会用一个大矩阵 一次性投影出全部头的Q/K/V

合并投影矩阵 Wqkv∈Rdmodel×3⋅dmodelW_{\text{qkv}} \in \mathbb{R}^{d_{\text{model}} \times 3\cdot d_{\text{model}}}Wqkv∈Rdmodel×3⋅dmodel

对于 dmodel=100d_{\text{model}}=100dmodel=100,合并矩阵就是 100×300\boldsymbol{100 \times 300}100×300,再切分得到完整Q、K、V。

三、纠正一个误区

  • 单头、且保持维度不变时,三个独立权重矩阵确实都是 100×100
  • Q/K/V 本身不是参数矩阵 ,它们是输入向量经过矩阵变换后得到的特征张量 ,形状是 N,100N, 100N,100(词数×维度),不是方阵。

四、极简总结

  1. 词向量维度100,单头、维度不缩减
    WQ、WK、WVW_Q、W_K、W_VWQ、WK、WV 三个权重矩阵 = 100×100\boldsymbol{100 \times 100}100×100;
  2. 多头场景:总维度平分给每个头,单头权重矩阵列数变小;
  3. 区分:WQ/WK/WVW_Q/W_K/W_VWQ/WK/WV 是可训练参数 ,Q/K/V 是特征向量

WQ/WK/WVW_Q/W_K/W_VWQ/WK/WV初始化

Transformer 里线性层权重主流做法:

  1. 权重 :使用高斯/均匀随机初始化 ,且会限定取值范围 (小数值),避免初始输出爆炸/梯度消失。
    经典方案:Xavier 初始化(Glorot)He 初始化,Transformer 常用 Xavier。
  2. 偏置(bias) :一般初始化为 0

2. 为什么不能随便乱随机?

  • 若数值太大:输入经过多层矩阵相乘后,特征值会急剧膨胀,激活函数饱和,梯度接近0,网络训不动。
  • 若数值太小:信号不断衰减,深层梯度消失。
    所以必须用有界的标准随机分布

3. 结合自注意力补充两点

  1. 三个矩阵 WQ,WK,WVW_Q,W_K,W_VWQ,WK,WV 相互独立初始化,初始值不一样,不会共享参数。
  2. 多头场景同理:拆分后的各组头权重,也都是各自独立随机初始化。
  3. 位置编码、词嵌入矩阵,同样是随机初始化(词嵌入也常用Xavier)。

4. 一句话总结

100×100100\times100100×100 的可训练权重属于受控随机初始化(限定范围的正态/均匀分布),偏置置零,并非纯杂乱随机。

transformer本质就是在训练WQ/WK/WVW_Q/W_K/W_VWQ/WK/WV这三组100×100的参数?

训练Transformer,不只是训QKV三个矩阵 ,而是整套编码器(+解码器)里所有线性层、嵌入层的权重与偏置。

一、先回到你当前场景:单个编码层(d_model=100)

单层Encoder包含4类可训练参数:

  1. 多头自注意力部分

    • WQ、WK、WVW_Q、W_K、W_VWQ、WK、WV:3 个 100×100 权重矩阵 + 对应bias
    • 多头拼接后的输出投影矩阵 WOW_OWO:也是 100×100 + bias
      👉 注意力模块就有 4个大权重矩阵
  2. 前馈网络 FFN(两层全连接)

    Transformer标准FFN:先升维、再降维(通常扩4倍)

    d_model=100 → 中间隐层维度 = 400

  • W1W_1W1:100×400100 \times 400100×400 + bias
  • W2W_2W2:400×100400 \times 100400×100 + bias
    👉 FFN 又多 2个大权重矩阵

单层编码器 :就有 4+2 = 6 组主要权重矩阵,远不止QKV三个。

二、多层堆叠(原版Transformer 6层Encoder)

每层结构完全独立、参数不共享

  • 6层 = 6套 注意力+FFN 全套参数
    每一层的 WQ/WK/WV/FFNW_Q/W_K/W_V/FFNWQ/WK/WV/FFN 都是单独训练、互不复用

三、还有两大块你容易忽略的核心参数

  1. 词嵌入矩阵 Token Embedding
    假设词表大小为 VVV(比如几万词),维度100:
  • 形状:V×100\boldsymbol{V \times 100}V×100
    这是整个模型最庞大的参数之一,全程参与训练。
  1. 位置编码(分两种)
    • 标准正弦位置编码 :固定公式生成,不训练
    • 可学习位置编码:也是一个 Seq_Len×100Seq\_Len \times 100Seq_Len×100 的参数矩阵,参与训练

四、如果带上解码器(完整Transformer翻译模型)

解码器还有:

  • 掩码自注意力的 QKV
  • 编码器-解码器交叉注意力的 QKV
  • 解码器自身FFN
  • 最后的输出投影+Softmax层
    这些又新增大量独立参数。

五、回到你的理解:纠正+简化

  1. 你的感受有道理

    QKV矩阵是自注意力的核心,也是理解上下文语义的关键参数,模型学"词与词之间该关注谁",主要就靠这三组权重。

  2. 但严格来说:

    • 词语本身含义 → 靠词嵌入矩阵
    • 词与词的关联/上下文 → 靠各层QKV+输出投影
    • 抽象语义、特征变换 → 靠每一层FFN

训练Transformer,是同时优化词嵌入、每一层的QKV、注意力输出投影、前馈网络全部权重;QKV只是其中负责建模上下文依赖的核心模块,并非全部参数。

为啥100×100的参数矩阵能够实现Q查询的目的

100×100权重矩阵,本质是做线性特征变换**,把原始词向量「转成适合做匹配查询的新特征」,让Q能精准表达"我要找什么"。

一、先回顾基础形状

单个词元向量:x∈R1×100\boldsymbol{x} \in \mathbb{R}^{1\times 100}x∈R1×100

查询投影矩阵:WQ∈R100×100\boldsymbol{W_Q} \in \mathbb{R}^{100\times 100}WQ∈R100×100

查询向量计算:

q=x⋅WQ\boldsymbol{q} = \boldsymbol{x} \cdot W_Qq=x⋅WQ

结果:q∈R1×100\boldsymbol{q} \in \mathbb{R}^{1\times 100}q∈R1×100,维度不变,但特征含义彻底变了

二、矩阵乘法到底干了什么?

100维向量 × 100×100矩阵,可以理解为:

用100组不同的"线性规则",对原向量的100个维度做加权重组

举极简类比(缩成3维方便理解):

原向量 a,b,ca,b,ca,b,c 代表词本身字面语义;

乘上权重矩阵后得到 q1,q2,q3q_1,q_2,q_3q1,q2,q3,这组新向量不再单纯表示词义,而是专门用来表达「检索意图」

  • 原向量:描述这个词是什么
  • 变换后的Q向量:描述这个词想关注哪些词、和哪些词有关系

矩阵里的每一列,就是一个查询特征提取器;训练过程就是不断调整这100×100的权重,让提取出的Q越来越会"找关联"。

三、结合Q-K匹配,解释为什么它能实现"查询"

自注意力核心是:QKTQK^\mathrm{T}QKT 算相似度。

  1. 原始词向量直接做点积行不行?

    不行。

    原生词向量只编码单词语义,没有"查询导向",词和词之间的关联表达很弱,算出来的相似度不准。

  2. 经过 WQ/WKW_Q/W_KWQ/WK 分别变换后:

  • WQW_QWQ 把原向量转为查询表征Q:侧重"我需要什么信息"
  • WKW_KWK 把原向量转为键表征K:侧重"我能提供什么信息"

此时 QKTQK^\mathrm{T}QKT 点积,就变成**「需求」和「供给」的匹配打分**,这才是真正有效的关联度。

100×100的矩阵,就是用来学习这套"转成查询/键特征"的映射规则

四、用直观例子理解

句子:猫 抓 老鼠

  1. 初始三个词的100维向量,只存各自词义;
  2. 经过 WQW_QWQ 变换后:
    • "抓"的Q向量,会被权重训练成**主动偏向"猫"和"老鼠"**的特征;
    • 再和所有位置的K向量点积,自然算出更高的注意力权重;
  3. 整个过程:
    模型靠反向传播不断修改 WQW_QWQ 里的每一个参数,慢慢学会:动词"抓"应该去查询主语、宾语

五、补充两个关键细节

1. 为什么维度保持100不变?

不是必须同维度,只是工程习惯:

  • 维度一致,方便后续缩放点积、多头拼接、残差相加;
  • 100×100方阵,是全维度特征重组,没有信息维度上的压缩/丢弃,表达能力拉满。

2. 和V矩阵的分工再区分

  • WQ/WKW_Q/W_KWQ/WK:服务匹配打分,学习"谁和谁有关";
  • WVW_VWV:服务内容提取 ,学习"该取出哪些语义信息做融合";
    三者矩阵各司其职,合起来完成一整套「查询→匹配→取值」流程。

六、一句话总结

100×100的WQW_QWQ,就是把普通词向量线性重组成具备检索意图的查询特征;模型训练就是不断优化矩阵里的权重,让变换后的Q能精准找到序列中语义相关的位置。

为啥100x100的矩阵就是全局的?

先抓核心:不是矩阵本身叫"全局",是「矩阵作用+注意力计算逻辑」让模型拥有了全局建模能力

一、先分清两个概念

  1. 100×100 权重矩阵 :只是单词内部的特征变换(只改当前词的向量,不涉及其他词)
  2. 全局 :指一句话里所有词互相建立关联 (A词看B/C/D...所有词),这是注意力分数计算带来的,不是权重矩阵单独实现的

很多人混淆的点就在这:矩阵负责"造特征",注意力分数负责"跨词全局关联"。

二、分步拆解(沿用:词向量维度=100)

设一句话有 N 个词 ,整体输入张量形状:N, 100\boldsymbol{N,\\ 100}N, 100

每行 = 1个词的100维向量。

1. 第一步:用WQ(100×100)W_Q(100×100)WQ(100×100)做单词变换(无全局,只改自身)

对每个词向量 x∈R1×100\boldsymbol{x} \in \mathbb{R}^{1\times100}x∈R1×100

q=x⋅WQ\boldsymbol{q} = \boldsymbol{x} \cdot W_Qq=x⋅WQ

  • 运算范围:只用到当前这一个词的100维特征,和句子里其他词毫无关系
  • WQW_QWQ 作用:把"词义向量"转成"查询向量",纯单样本内部线性映射
  • 此时:依然看不到全局,每个词还是孤立的

同理 WK、WVW_K、W_VWK、WV 也只是单独改写每个词的向量。

2. 第二步:QKTQK^\mathrm{T}QKT 矩阵乘法 → 真正实现全局交互

现在把整段序列的Q、K拼起来:

Q∈RN×100,K∈RN×100Q \in \mathbb{R}^{N\times100},\quad K \in \mathbb{R}^{N\times100}Q∈RN×100,K∈RN×100

计算相似度矩阵:

QKT∈RN×NQK^\mathrm{T} \in \mathbb{R}^{\boldsymbol{N \times N}}QKT∈RN×N

重点来了:

  • 输出是 N行N列方阵
  • 第 iii 行第 jjj 列的值 = 第i个词 和 第j个词 的匹配分数
  • 第i个词 来说:一整行N个分数,就是它和句子里所有N个词的关联程度

👉 到这一步,单个词终于能"看到全句所有词" ,这就是Transformer的全局能力

三、那100×100矩阵到底起了啥作用?

一句话:

100×100的WQ/WKW_Q/W_KWQ/WK 是「全局匹配的前提」,本身不产生全局,但决定全局匹配准不准。

举直白例子:

  1. 不用WQ/WKW_Q/W_KWQ/WK,直接拿原始词向量算 XXTX X^\mathrm{T}XXT

    原始向量只存"单词本身意思",没有"查询/匹配倾向",算出来的相似度杂乱无章,全局关联毫无意义。

  2. 经过 WQ、WKW_Q、W_KWQ、WK 分别变换后

    • WQW_QWQ 训练出规则:把词向量变成「我想找谁」的查询特征
    • WKW_KWK 训练出规则:把词向量变成「我是什么」的匹配特征
      再做 QKTQK^\mathrm{T}QKT 全局比对,全局关联才变得有效、符合语义

形象类比

  • 每个词 = 一个人
  • 原始100维向量 = 人的长相、身份
  • WQ(100×100)W_Q(100×100)WQ(100×100) = 帮每个人生成寻人标签(我想找同伴/同事/家人)
  • WK(100×100)W_K(100×100)WK(100×100) = 帮每个人生成自我介绍标签(我是谁、能和谁配合)
  • QKTQK^\mathrm{T}QKT = 全场所有人互相比对标签(全局互相认识、建立联系

👉 没有"标签制作"(100×100矩阵),就算所有人面对面(全局),也不知道该亲近谁。

四、再总结边界,彻底区分

  1. 100×100 权重矩阵

    作用:单词特征重构 ,学习查询/匹配的特征表达

    范围:只作用于单个词,局部运算

  2. QKTQK^\mathrm{T}QKT 注意力分数矩阵

    作用:全序列两两相似度计算

    范围:覆盖所有词,全局运算

  3. 两者关系

    训练时优化 WQ/WKW_Q/W_KWQ/WK,本质是优化"特征表达方式" ,让后续的全局匹配 结果符合语言逻辑。

    不是矩阵=全局,是矩阵加工特征 + 注意力矩阵运算,共同实现全局上下文建模

五、补一个极简版本方便记忆

  • 100×100矩阵:给每个词"装一双会辨别的眼睛"
  • QKTQK^\mathrm{T}QKT 运算:让这双眼睛看向整句话所有词 (全局)
    合在一起,模型就能看懂全局语义。

既然拿到了注意力分数矩阵为啥还要和V计算

注意力分数只代表**「关联强弱」,没有语义内容;必须乘上V,才能按权重把全局语义融合出新向量**。

一、拆成两步理解(沿用你的维度设定)

设序列有 NNN 个词,向量维度 d=100d=100d=100

  1. 注意力分数矩阵 A=Softmax(QKTd)\boldsymbol{A = Softmax(\dfrac{QK^\mathrm{T}}{\sqrt{d}})}A=Softmax(d QKT)

    形状:N,N\boldsymbol{N, N}N,N

    • 每一行:当前词对全句所有词的关注权重(总和=1)
    • 里面只有数字权重没有任何词义、语义信息
    • 类比:一张「点名表」,只写"我要多看谁、少看谁",但不知道这些人说了什么。
  2. 乘以 V\boldsymbol{V}V 得到最终输出 A⋅V\boldsymbol{A \cdot V}A⋅V

    VVV 形状:N,100\boldsymbol{N, 100}N,100(每个词的语义内容向量)

    矩阵相乘后结果依然是 N,100\boldsymbol{N, 100}N,100,和输入维度一致。

逐行看计算(以第 iii 个词为例)

outputi=∑j=1NAi,j⋅Vj\text{output}i = \sum{j=1}^N A_{i,j} \cdot V_joutputi=j=1∑NAi,j⋅Vj

  • Ai,jA_{i,j}Ai,j:第iii个词对第jjj个词的注意力权重
  • VjV_jVj:第jjj个词的真实语义向量
  • 本质:用权重对全句所有词的语义做加权求和

二、生活化举例

句子:小猫 抓 老鼠

  1. 算出注意力矩阵后,"抓"这个词对「小猫、老鼠」权重很高,对自身权重一般。
  2. 只有权重:只知道"抓"要重点关注另外两个词,但不知道这两个词是什么意思
  3. 乘上V:把「小猫」「老鼠」的语义向量,按高权重大量融合进"抓"的向量里。
  4. 最终"抓"的新向量:同时包含自身含义 + 主语+宾语的语义,完成上下文融合。

三、再区分三者分工(闭环串起来)

  • WQ/WKW_Q/W_KWQ/WK → 加工出Q、K,用来算匹配权重
  • 注意力分数矩阵 → 确定看谁、看多少(只有比例,无内容)
  • WVW_VWV、V向量 → 承载所有词的语义内容
  • A⋅VA \cdot VA⋅V → 按照"观看比例",把全局内容揉进每个词的表征里

四、反问帮你彻底想通

如果只留注意力分数、不乘V:

  • 输出是 N×NN\times NN×N 的权重矩阵,和原始词向量维度完全不一样,没法继续往下走(残差连接、FFN、下一层编码器)
  • 只有权重没有语义,模型学不到任何语言信息,训练毫无意义。

极简总结

注意力分数是**"分配比例",V是 "原始素材"**;

按比例取用全局素材,才能生成带上下文的新语义向量,这一步是自注意力输出有效特征的最后一环。

那为啥得到的V又不是最终输出

A·V 只是自注意力模块的原始输出,还要经过残差、归一化、前馈网络层层加工,才能得到单层编码器最终结果;且编码器是多层堆叠,单一层输出也不是整个模型最终输出。

一、先看位置:A·V 处在整个链路的哪一步

沿用单层编码器标准流程(输入X\boldsymbol{X}X):

  1. 输入 XXX → 计算 Q,K,VQ,K,VQ,K,V → 注意力加权 A⋅V\boldsymbol{A\cdot V}A⋅V(注意力原始结果
  2. 残差连接:A⋅V+X\boldsymbol{A\cdot V + X}A⋅V+X(把原始输入直连过来)
  3. 层归一化 LN:对上一步结果做数值规整 → 得到注意力模块正式输出 X1X_1X1
  4. 送入前馈网络 FFN:FFN(X1)FFN(X_1)FFN(X1)(逐位置做非线性特征变换)
  5. 再一轮残差 + 层归一化 → 单层编码器最终输出

1. 为什么A·V不能直接当输出?

① 缺少残差连接,深层网络训不动

自注意力只做了上下文融合,完全丢弃了原始输入信息

残差连接相当于"抄近路",把词本身的基础语义保留下来,同时缓解多层堆叠带来的梯度消失,这是深度模型能收敛的关键。

② 数值分布不稳定,必须做层归一化

训练时网络参数不断更新,特征值会持续波动、偏移。

层归一化把向量维度的值拉到稳定分布,让后续网络更容易学习、收敛更快。

③ 自注意力只做「全局关联融合」,缺「非线性语义提纯」

自注意力是纯线性加权(矩阵乘法),表达能力有限:

  • 它只会按权重拼接不同位置的语义,没法挖掘复杂语义、语法逻辑;
  • FFN(两层全连接+激活函数)引入非线性,对融合后的特征做二次加工、抽象、提纯,让表征更贴合语言规律。

举个例子:

句子"苹果很甜"

  • A·V 只做到:把"甜"的语义关联到"苹果"上;
  • FFN 进一步学习:"苹果"+"甜"组合出"苹果具备甜味"这个整体语义

二、再往上:单层输出 ≠ 整个编码器最终输出

原版Transformer编码器是6层完全独立的编码层堆叠

  • 第1层输出 → 喂给第2层输入
  • 逐层传递,直到第6层

每层的侧重点不同:

  • 浅层:学习词性、局部搭配、简单语法;
  • 深层:学习长距离依赖、整句语义、抽象概念。

只有最后一层编码器跑完所有流程,得到的向量,才是编码器整体的输出。

三、结合你的QKV链路,完整串一遍闭环

  1. 原始词向量+位置编码 → 输入层
  2. WQ/WK/WVW_Q/W_K/W_VWQ/WK/WV 变换 → Q/K/V
  3. QKTQK^\mathrm{T}QKT+Softmax → 注意力权重(只存关联比例)
  4. 权重 × V → A·V(融合全局语义,中间结果
  5. 残差+LN → 补原始信息+规整数值
  6. FFN+残差+LN → 非线性提纯特征(单层输出)
  7. 多层堆叠迭代 → 编码器最终输出

四、一句话总结

A⋅VA\cdot VA⋅V 只是完成了全局语义加权融合这一步,还需要补原始信息、规整数值、做非线性特征强化,再经过多层迭代,才是最终可用的编码表征。

那又是怎么用编码器实现文本分类的?最后接一个全连接层就可以吗

核心思路是把整个句子的表征聚合为一个向量,再接全连接层做分类,单纯拿所有位置向量直接接全连接不行,主流有三种聚合方式。

一、前置:编码器输出形态

假设输入句子有 NNN 个词元,向量维度 dmodel=100d_{model}=100dmodel=100

编码器最终输出形状:N, 100\boldsymbol{N,\\ 100}N, 100

每一行是单个词融合全局上下文后的向量,一共N个向量,不是单个句子向量

文本分类需要一个向量代表整句话,所以第一步必须做「聚合」。

二、三种主流聚合方案(BERT/Transformer 分类标配)

1. 取第一个位置向量( 主流,BERT 用法)

输入时手动在句子开头加一个特殊词元 ** (分类符)**

  • 经过多层编码器后,` 位置的向量天然融合了全句语义
  • 直接取出这个 1,1001, 1001,100 向量,作为句子整体表征

后续:这个向量送入分类全连接层,输出类别概率。

2. 全局平均池化(Avg Pooling)

N,100N, 100N,100 所有词向量,按维度求平均:

  • 得到 1,1001, 1001,100 句向量
  • 优点:不用额外加[CLS],适配任意序列
  • 适用:纯Transformer编码器、部分开源分类模型

3. 全局最大池化(Max Pooling)

按维度取所有位置的最大值,得到句向量,效果一般,用得少。

三、完整流程(以 [CLS] 方案举例,最标准)

  1. 文本转词元,句首拼接[CLS],生成词嵌入 + 位置编码
  2. 送入堆叠的Transformer编码器,得到输出 N,100\boldsymbol{N, 100}N,100
  3. 单独抽取第0位([CLS])向量:1,100\boldsymbol{1, 100}1,100
  4. 接分类头(全连接层)
    • 输入:100维句向量
    • 权重矩阵:100×类别数100 \times \text{类别数}100×类别数
    • 搭配Softmax,输出每一类的概率
  5. 训练:用分类标签计算损失,反向传播更新整个编码器 + 分类层所有参数

四、回答你的问题:只接全连接层可以吗?

  1. 不能直接把 N,100N,100N,100 喂给全连接

    序列长度 NNN 不固定,输入维度会变,全连接层权重形状固定,无法运行。

    必须先聚合为固定长度的单向量

  2. 聚合之后 只接一层全连接完全够用

    • 简单分类任务:单层全连接 + Softmax 即可
    • 复杂任务:可多加1~2层全连接+激活函数,做更深的分类头

五、补充细节

  1. 训练特点
    分类任务会微调整个编码器,原本预训练学到的语义特征,会进一步适配分类目标。
  2. 为什么[CLS]向量能代表整句?
    自注意力机制让[CLS]位置会主动关注句子里所有词,经过多层编码后,它天然汇聚了全局语义。
  3. 极简流程图
    文本 → 词嵌入+位置编码 → 编码器 → 取[CLS]/池化(得到句向量)→ 全连接分类层 → 输出类别

一句话总结

先通过[CLS]或池化,把编码器输出的多个词向量压缩成一个句向量,之后再接全连接层,就能完成文本分类。

相关推荐
Python私教1 小时前
0、null、未采集:AI Agent 反馈系统最容易踩的语义坑
人工智能·python
xushichang123_1 小时前
训练和微调生成式 AI 模型,应该选择哪些云上高性能存储服务?亚马逊云科技四类方案选型
人工智能
政安晨1 小时前
政安晨【超级AI智能体~技术简报】- 向量退潮,图谱登场:Agent 基础设施的换代信号 [2026.8]
人工智能
北京晶数信息科技1 小时前
成品油交易即开票原创一体化解决方案汇报(二)
大数据·人工智能·物联网·产品经理·需求分析
浪里镖客1 小时前
激光雷达与惯导、相机与惯导的外参标定原理
人工智能·数码相机
DO_Community1 小时前
AI 应用成本怎么算?从推理费用到完整 TCO 拆解
人工智能·gpt·agent·ai编程·llama·kimi
IT_陈寒1 小时前
Redis的KEYS命令差点把我的生产环境拖垮,改用SCAN吧
前端·人工智能·后端
其美杰布-富贵-李1 小时前
03 类别不平衡下如何选择评估指标:Accuracy 为什么会失效?
人工智能·机器学习
野生技术架构师2 小时前
Multi-agent的新趋势,从Agent Team到Agent Swarm
开发语言·人工智能