transformer
一、背景
1. 序列到序列模型

1)语音辨识
**输入输出关系:**输入声音信号(t帧特征向量),输出对应文字(n个字),t与n无固定比例关系。
**典型案例:**台语语音辨识系统(1500小时乡土剧训练数据)。
**技术特点:**直接端到端训练,跳过音标转换等中间步骤(”硬train一发”方法)。
2)机器翻译
**长度关系:**输入句子长度n与输出句子长度n’由模型动态决定。
中英案例:“机器学习”(4字)→”machine learning”(2词),非固定1/2比例(可长可短)。
3)语音翻译(语音辨识复合机器翻译)
**特殊价值:**适用于无文字语言(全球7000+语言中过半无文字系统)。
**实现方式:**直接建立语音到目标语言文字的映射,避免传统ASR+MT串联方案。
4)台语语音辨识应用案例

**数据来源:**YouTube乡土剧(台语音频+中文字幕对齐数据)。
**技术挑战:**背景⾳乐/噪声干扰(直接忽略处理);字幕与语音不完全对齐(仍可训练);跳过台罗拼音中介步骤(端到端训练);强行训练。
**典型错误:**倒装句处理困难(”我有帮厂长拜托” vs 正确应为”我拜托厂长”);语义理解偏差(”要生了吗” vs 正确答案”不会腻吗”)。
5)台语语音合成应用案例

**实现方案:**两阶段处理:中文→台罗拼音→声音信号;使用Tacotron模型(基于Seq2seq架构)。
合成示例:“欢迎来到台大语音处理实验室”→台语发音。
6)聊天机器人
**训练数据:**影视剧对话数据集(输入-响应配对)。
**实现方式:**将对话建模为[输入语句→响应语句]的序列转换任务。
7)自然语言处理

**统一视角:**多数NLP任务可视为QA问题:翻译:问题=”英文句子的德文翻译?”;摘要:问题=”文章的摘要是什么?”;情感分析:问题=”句子是正面/负面?”。
**实现方案:**将”问题+上下文”拼接作为输入序列,答案作为输出序列。
2. 任务应用
1)多标签分类
**核心区别:**多分类任务:从多个类别中选择一个最合适的类别(n选1);多标签任务:一个对象可以同时属于多个类别(n选k,k不固定)。
**应用示例:**文章分类中,一篇文章可能同时属于”科技”和”教育”两个类别;图片标注中,一张图片可能包含”猫”、”狗”、”草地”等多个标签。
**传统方法局限:**直接取分类器得分前三名会失效,因为不同样本的标签数量可能不同(有的需要2个标签,有的需要3个)。
Seq2Seq解决方案:让模型自主决定输出序列长度(即标签数量);输入文章,输出不定长的类别序列(如:Class1 Class3)。
2)目标检测

**创新应用:**传统目标检测需要预定义anchor boxes;Seq2Seq模型可以直接输出检测结果序列。
**实现特点:**输入图片特征,输出不定长的(object class, bounding box)序列;模型自主决定需要检测的物体数量。
**参考文献:**DETR模型论文链接:https://arxiv.org/abs/2005.12872。
二. transformer结构
1.编码器

**组成结构:**Encoder:处理输入序列,输出中间表示;Decoder:基于编码结果生成输出序列。
**发展历程:**2014年首次提出(论文:https://arxiv.org/abs/1409.3215);现以Transformer架构为主流。
1)编码器的block

**基本流程:**输入向量序列通过多个相同结构的block;每个block包含:Multi-head Self-attention层、Feed Forward层、残差连接和Layer Normalization。
2)位置编码
必须添加positional encoding来保留序列顺序信息;与输入embedding相加后送入encoder。
3)自我注意力的层次

**残差连接:**将self-attention层的输入直接加到输出上(a + b);缓解深层网络梯度消失问题。
Layer Normalization:对单个样本的所有维度计算均值方差;公式:[图像];与Batch Norm区别:不依赖batch统计量。
**完整流程:**Self-attention + 残差;Layer Norm;[
][图像];FFN + 残差;再次Layer Norm。
**架构优化:**原始设计非最优(论文:https://arxiv.org/abs/2002.04745);调整normalization位置可能提升性能;PowerNorm可作为Layer Norm替代方案(论文:https://arxiv.org/abs/2003.07845)。
2.解码器

1) 自动回归解码器
1.1 例题:语音识别

**工作原理:**输入声音信号(如”机器学习”的语音),通过encoder转换为vector sequence,decoder逐步生成文字输出。输入输出转换与机器翻译原理相同,只需改变输入输出内容(语音→文字 vs 文本→文本)。特殊起始符需在decoder输入中加入BEGIN符号(BOS),用one-hot vector表示(某一位为1其余为0)。
**输出向量特性:**输出向量长度等于vocabulary size(如中文常用3000字),经softmax处理后形成概率分布(总和为1),输出的就是中文的每一个字的可能性,比如预测下一个字之后可能输出的方块字的可能性。多语言处理差异:英文可选择字母/单词/subword为单位,中文通常以单个方块字为单位,英文是以词或者字母,或者词组。中文是单个字进行输出。输出的是一个分布。分数最高的中文字就是最终的输出。
decoder的上一个输出回合以前的输入成为新的decoder的输入。自己的输出当作下一个时间的自己的输出。
1.2 解码器的结构

**基础结构:**与encoder相似(multi-head attention → add & norm → feed forward → add & norm),重复N次。
**关键差异:**输出端增加softmax层生成概率分布(输出变成未来的几率);采用masked multi-head attention(屏蔽未来信息)包含中间特殊连接层(图中被遮盖部分)现在不能再去看未来的信息了。
**自回归特性:**将前步输出作为当前输入(如BEGIN→”机”→”器”→”学”→”习”),输入和输出的结果长度不确定。
**错误传播风险:**若中间输出错误(如将”器”误为”气”),后续输出可能持续错误。
1.3 屏蔽自我注意

对应的query和key不会涉及到之后的信息,是有顺序的。

**屏蔽原理:**计算bi时只能关注a1到ai,禁止访问右侧信息(ai+1及之后)。
**实现方式:**计算attention时,query只与左侧key相乘(如q2只与k1,k2计算);通过设置attention score为-∞实现右侧屏蔽。
**必要性:**decoder输出具有时序性(a1→a2→…),生成ai时无法知晓ai+1信息
**对比标准attention:**原始self-attention可同时访问全部输入信息。
1.4 输出序列长度确定
例题:推文接龙类似于成语接龙。

**类比说明:**类似PTT推文接龙(如”超→人→正→大→中→天”),需明确终止机制。
**持续风险:**若无终止信号,decoder可能无限生成输出(如”机器学习习习习…”)。
**停止标记:**特殊符号在vocabulary中添加END标记(与BEGIN可同符号)有开始就要有结尾

**终止条件:**当输出END的概率最大时停止生成。
**实现细节:**训练时让decoder学习在适当位置输出END;中文处理时需额外增加该特殊符号(超出常规汉字集)。
**工作流程:**完整生成过程示例:BEGIN→”机”→”器”→”学”→”习”→END,产生习之后END的概率应该最高。
2) 非自动回归解码器

**AT工作方式:**采用自回归方式(Autoregressive),缩写为AT。依次生成序列:输入BEGIN→输出W1→将W1作为新输入→输出W2→…→直到输出END标记。不是一次产生的。
**NAT工作方式:**非自回归(Non–autoregressive)模型,缩写为NAT。一次性生成整个序列:输入一排BEGIN token→直接输出完整序列(如中文句子)。
**长度控制方法:**使用分类器预测输出长度:分类器读取encoder输出,预测数字n→decoder接收n个BEGIN token,简单的预测一个对应的长度;
**预设最大长度:**输入固定数量BEGIN token(如300个),通过END标记截断多余输出,假设一个具体长度的上限。
2.1 非自动回归解码器的优点
**并行计算优势:**无论输出长度多少都只需一个计算步骤,速度显著快于AT(100字句子AT需100次计算,NAT只需1次)计算步骤明显减少。输出长度
**可控性:**通过调整预测长度的分类器输出,可精确控制生成速度(如语音合成中,长度×2→语速减半)。
**技术背景:**依赖Transformer的self-attention机制,传统RNN/LSTM无法实现此架构
**当前局限:**存在multimodality问题,性能通常低于AT模型,需复杂技巧才能达到相近效果,实际上准确度很差,很多的研究只能逼近对应的AT模型。
3)编码器和解码器之间的连接


**信息传递方式:**通过cross attention(桥梁)连接,decoder生成query(q),encoder提供key(k)和value(v)。
**具体流程:**encoder输出向量a1,a2,a3转换为k1,k2,k3和v1,v2,v3;decoder输入(如BEGIN)生成query(q);计算q与k的attention分数,加权求和v得到输出向量。
**层级连接:**原始方案中所有decoder层都使用encoder最后一层输出,但可自定义其他连接方式,可以由操作者自行定义,永远可以有新的想法。


4) 训练
4.1 需要什么样的训练资料

**数据要求:**输入序列(如音频)与对应输出序列(如人工标注文本)的配对数据。
**标注格式:**每个输出token对应one-hot向量(如4000个中文单字的分类问题),每一个输出都有一个交叉熵,所有的交叉熵的总和越小越好。
4.2 训练过程

**Teacher Forcing:**训练时decoder接收真实序列作为输入(BEGIN+正确答案),测试时使用自身输出,训练的时候会给decoder看正确答案。
**损失计算:**每个时间步计算输出分布与one-hot向量的交叉熵,总和最小化。特殊标记处理:需包含END标记的训练(如4字句子需计算第5个位置的END损失)。
**训练-测试差异:**存在exposure bias问题,后续可能需用计划采样(scheduled sampling)等方法缓解。
5) 训练技巧
5.1 复制机制
5.1.1 复制机制在任务中的应用
**核心思想:**允许decoder从输入序列中直接复制内容到输出,而非完全自主生成。
**适用场景:**当输出内容部分或全部存在于输入中时特别有效,如专有名词、特定术语等(聊天机器人)。
**必要性:**对于罕见词汇(如”库洛洛”),模型可能从未在训练数据中见过,自主生成困难。
5.1.2 聊天机器人中的复制机制举例
**案例1:**输入:”你好,我是库洛洛”;理想输出:”库洛洛你好,很高兴认识你”;机制优势:模型无需生成罕见词”库洛洛”,只需学习复制模式”我是[某某某]→[某某某]你好”。
**案例2:**输入:”小杰不能用念能力了”;理想输出:”你所谓的不能用念能力是什么意思”;机制优势:直接复述用户输入中的关键短语,避免生成错误。
5.1.3 摘要任务中的复制机制

**数据需求:**需要百万级文章-摘要配对数据(几万篇效果不佳)。
**复制必要性:**摘要中60-70%内容通常直接来自原文;
**类似人工摘要过程:**筛选关键句+改写。
**训练技巧:**可利用文章标题作为摘要简化标注。
5.1.4 实现复制机制的模型
**Pointer Network:**最早实现复制能力的模型。
**Copy Network:**改进版本,论文《Incorporating Copying Mechanism in Sequence-to-Sequence Learning》。
**实现原理:**通过概率pgen决定生成新词或复制输入词。
5.2 引导注意
5.2.1 Sequence to Sequence模型在语音合成中的应用
**典型应用:**输入文字→输出语音波形。
**成功案例:**输入:”发财发财发财发财”(四次);输出:自动添加抑扬顿挫。数据需求:需要大量文本-语音配对数据。
5.2.2 Sequence to Sequence模型的局限性
**漏字问题:**输入:”发财”(单次);错误输出:”财”(漏掉”发”)。原因分析:短句训练数据不足导致处理异常。
5.2.3 Guided Attention的引入与重要性

**核心思想:**强制模型按特定模式处理输入。
**关键应用:**语音识别:必须听完整个输入;
**语音合成:**必须读完所有文字。必要性:相比聊天机器人等任务,语音任务对完整性要求更严格。
5.2.4 Monotonic Attention与Location-aware Attention简介

**Monotonic Attention:**强制注意力从左到右移动;适合语音合成等单调对齐任务。
**Location-aware Attention:**考虑当前位置信息;防止注意力”颠三倒四”。实现效果:通过约束注意力路径解决漏字问题。
5.3 束搜索
5.3.1 贪婪解码(Greedy Decoding)介绍

**工作原理:**在每一步解码时选择当前概率最高的token(max选择),如示例中第一步选择概率0.6的A,第二步选择0.6的B,最终输出序列为ABB。
**局限性:**可能陷入局部最优,如红色路径虽然每个步骤都选最大值,但整体序列概率(0.6×0.6×0.6=0.216)低于绿色路径(0.4×0.9×0.9=0.324)。
5.3.2 束搜索与贪婪解码的对比
**策略差异:**贪婪解码只保留单一路径,而束搜索(Beam Search)保留Top B(束宽)条路径,通过牺牲短期收益可能获得更优全局解。
**类比说明:**类似”天龙八部珍珑棋局”中先牺牲局部棋子获得全局胜利,或人生决策中短期辛苦(如读博)可能带来长期收益。
5.3.3 束搜索的必要性
**计算可行性:**当词表大小V=4000时,3步解码就有4000³种路径,穷举不可行。束搜索通过束宽B控制计算复杂度。
**折中方案:**不是精确求解而是近似搜索,平衡计算资源和结果质量。
5.3.4 束搜索的效果评价
**适用场景:**语音识别等答案明确的任务效果较好,因其需要确定性输出。
**潜在问题:**在需要创造力的任务(如文本生成)中可能导致重复输出(如”鬼打墙”现象)。
5.4 采样
5.4.1 任务介绍:句子合成(Sentence Completion)

**任务特点:**给定前半句生成后半句,存在多种合理续写方式,属于开放式生成任务。
5.4.2 Beam Search的问题:重复与无穷循环
**典型表现:**如论文案例中机构名称”Universidad Nacional…”的无限重复,输出失去语义连贯性。
5.4.3 随机性在Decoder中的作用
**必要性:**通过引入采样噪声(如top-k/top-p采样)打破确定性输出模式,生成更自然的文本。
5.4.4 任务特性与采样策略的关系
**确定性任务:**语音识别等应采用Beam Search。
**创造性任务:**文本生成、故事续写等需引入随机性。
哲学启示:“接受不完美才是真正的美”(呼应神经网络输出不一定概率最高即最优)。
5.4.5 需要随机性的任务示例:语音合成(TTS)
**反常现象:**测试时加入噪声反而改善合成效果(正常ML应在训练时加噪)。
**对比表现:**纯确定性解码会产生机械的”机关枪式”语音,适当随机性使发音更自然。
5.5 优化评估指标

**评估指标差异:**训练时使用交叉熵损失(cross entropy),而评估时使用BLEU score,两者目标不一致。
**指标特性对比:**BLEU score需要生成完整句子后与参考答案进行整体比较;交叉熵对每个词汇分开计算损失。优化困境:BLEU score不可微分,无法直接用于梯度下降;
实际应用中通常选择BLEU score最高的模型而非交叉熵最低的模型。
**解决方案:**RL方法将BLEU score作为强化学习的reward,decoder作为agent;实践建议该方法实现难度较大,作业中不特别推荐使用。
5.6 训练与测试不一致的问题
**暴露偏差(Exposure Bias):**训练时decoder只看到完全正确的输入;
测试时decoder需要处理自身产生的错误输出;后果错误会累积传播,导致”一步错步步错”现象。
**解决思路:**在训练时有意向decoder输入包含错误的数据定期采样。
**Scheduled Sampling:**核心思想按一定比例混合正确输入和模型预测输出作为decoder输入。

发展历程2015年首次提出用于LSTM;后续有Transformer适配版本(2019年)。
**局限性:**可能影响Transformer的并行计算能力。
**实现变体:**Parallel Scheduled Sampling等改进方法;不同网络结构需要采用不同的采样策略;

技术背景:这些训练技巧需要结合Transformer的特殊结构实现;应用范围涉及encoder、decoder及其交互关系的整体优化。
