1. Tokenization 的理解?
Tokenization(分词或标记化)是自然语言处理的基础步骤,其主要作用是把连续的文本字符串拆分成离散的“token”(令牌)。这些 token 可以是:
字符级:把每个单独的字符作为一个 token;
词级:直接以单词为单位拆分;
子词级(如BPE、WordPiece):在词和字符之间寻找平衡,既能捕获常见词汇,又能处理稀有词或新词。
在 Transformer 模型中,模型的输入是这些离散的 token 序列,模型通过嵌入层将 token 映射到连续的向量空间,再进行后续计算。因此,好的 tokenization 方法可以降低词表大小,同时保留语言的语义信息,缓解稀疏性问题。
2. Softmax Attention 的原理与难以压缩的原因?
Softmax Attention是 Transformer 中核心的注意力机制,其计算流程大致如下:
计算相似度
给定查询(Query)、键(Key)、值(Value)矩阵,首先计算查询与键之间的点积,再除以一个缩放因子(通常是 根号d k ),得到一个分数矩阵。
应用 Softmax
将分数矩阵通过 softmax 函数转换成概率分布,这一步骤强调最相关的部分,同时抑制不重要的信息。
加权求和
利用得到的权重对值矩阵进行加权求和,得到最终的注意力输出。
为什么 softmax attention 很难被压缩?主要原因有:
非线性与敏感性
Softmax 是一个高度非线性的函数,哪怕是输入分数的微小变化,也可能导致注意力分布发生显著改变。这种敏感性使得用低精度或低秩近似来替代整个注意力矩阵容易引入较大误差。
密集性
注意力计算后得到的矩阵通常是稠密的,即使某些权重较小,它们也不是完全为零。相比于可以直接舍弃零值的稀疏矩阵,稠密矩阵就不容易通过剪枝或低秩分解来大幅压缩而不损失关键信息。
全局依赖
在 Transformer 中,每个 token 都可能受到所有其它 token 的影响(全局交互),这种全局性使得注意力矩阵往往没有明显的局部低秩结构,传统的压缩方法难以捕捉这种高维度的细微依赖。
因此,尽管有一些研究尝试(如 Linformer、Performer 等)通过近似方法减少计算量,但直接对 softmax attention 进行压缩仍然面临上述挑战。
3. “Cathe”(缓存)的工作原理?
这里的“cathe”很可能是指 Transformer 在生成任务(如语言生成、机器翻译)中常用的缓存机制,它的工作原理如下:
背景
在自回归生成过程中,每一步的预测都依赖于前面所有已生成的 token。如果每次都重新计算整个序列的注意力,计算量会呈平方级增长,效率低下。
缓存机制
为了解决这一问题,Transformer 会将前面步骤中计算得到的 Key 和 Value 存储起来(缓存)。在生成新的 token 时,只需计算新 token 的 Query,并将其与已经缓存的 Key/Value 拼接后计算注意力。
工作流程
初始化缓存:在生成初始 token 时,缓存为空或仅包含初始输入的信息。
更新缓存:每当生成一个新 token,就计算其对应的 Key 和 Value,并添加到缓存中。
高效计算注意力:在后续生成过程中,注意力只需要计算当前 Query 与整个缓存中的 Key 的点积,从而得到权重,再与缓存中的 Value 进行加权求和。
优势
这种缓存机制显著减少了重复计算,提高了生成效率,特别是在长序列生成时,可以有效降低时间复杂度。
总结
1.Tokenization:是将连续文本分割成离散 token 的过程,直接影响模型输入的表达能力。
2.Softmax Attention:通过非线性 softmax 将相似度分数转化为权重,加权融合信息,但由于其非线性、敏感性以及全局依赖特性,使得直接压缩(例如低秩近似)变得困难。
3.缓存机制(Cathe):在生成任务中,通过缓存前面的 Key 和 Value 来避免重复计算,提高推理速度,是 Transformer 高效解码的重要手段。