一、生成式任务的基础认知

1.定义与核心特征

生成式任务的核心是输出无预设固定范围,完全由输入X决定——模型需基于输入信息“创造”全新内容,而非从已有选项中选择(区别于分类、匹配等判别式任务)

2.跨领域应用场景

生成式任务并非局限于文本,而是贯穿AI多领域:

  • 图像领域:图像/视频生成(如AI绘画)、图像补全(修复破损图片)
  • 语音领域:语音合成(文字转语音TTS)
  • 文本领域:机器翻译、诗歌生成、自动摘要、对话生成

3.核心子任务:seq2seq任务

seq2seq(序列到序列)是生成式任务的核心范式,特征是输入和输出均为不定长序列,比如:

  • 机器翻译:输入 “我喜欢学习”(中文序列)→ 输出 “I like studying”(英文序列);
  • 机器作诗:输入 “主题:春天”→ 输出 “春风又绿江南岸,明月何时照我还”;
  • 自动摘要:输入一篇 1000 字文章→ 输出 100 字核心摘要。

二、文本生成的核心技术架构

1.自回归语言模型:逐字生成的基础

文本生成的底层依赖自回归语言模型,核心逻辑是“基于前文预测下一个词”:

  • 输入:一段“引言”(如“今天是个好”),以length × embedding_dim的向量形式送入模型(embedding_dim 是词向量维度)
  • 模型:可基于LSTM、BERT、CNN等网络结构,学习语言的上下文依赖
  • 输出:每个位置预测下一个词的概率分布(length * vocab_size, vocab_size 是词典大小)
  • 训练方式:逐字计算“预测词”与“真实词”的交叉熵损失,优化模型参数

示例:输入 “今天是个好”,模型先预测 “天”,再基于 “今天是个好天” 预测 “气”,最终生成 “今天是个好天气 <<eos>”(<<eos>是结束标记)。

2.Encoder-Decoder结构:seq2seq的核心实现

Encoder-Decoder是完成seq2seq任务的经典神经网络架构,本质是“输入编码->信息传递->输出解码”的三步流程:

  • Encoder(编码器):将不定长的输入序列(如中文句子)转化为固定维度的向量/矩阵(称为“上下文向量”),核心是提取输入的语义信息;
  • Decoder(解码器):基于Encoder输出的上下文向量,逐步生成目标序列(如英文句子),核心是利用输入信息构造符合语法和语义的输出
  • 经典流程示例(机器翻译 “how are you”→“你好吗”):

    1. Encoder:通过word2id+embedding将 “how”“are”“you” 转化为词向量,再通过神经网络提取语义,输出上下文向量 H;

    2. Decoder:以<GO>(开始标记)为起点,结合 H 预测第一个词 “你”,再基于 “H + 已生成的‘你’” 预测第二个词 “好”,最后生成 “吗” 和<<eos>

三、关键优化机制:Attention注意力机制

1.核心思想:解决“信息分配不均”问题

在生成输出时,输入序列中不同词的重要性不同——比如翻译“这家餐馆做的饭是在是太好吃了”时,“好吃”对“情感倾向判断”的影响远大于“餐馆”“做的”。Attention机制的本质量:

  • 给输入序列中每个词分配权重(注意力权重),生成输出时优先关注权重高的词
  • 抽象为“键值对匹配”:将输入视为(key,value)(通常 Key=Value,即输入词本身),待生成的当前词视为Query,通过计算Query与每个key的相似度,得到Value的权重分布

2.三种常见Attention类型

类型 核心逻辑 适用场景
Soft Attention(软注意力) 权重是连续值(0~1),所有输入词都参与输出计算(加权求和) 绝大多数生成式任务(翻译、摘要),兼顾效果与稳定性
Hard Attention(硬注意力) 权重是 one-hot 向量(仅一个词权重为 1,其余为 0),仅选一个输入词参与计算 需精准定位关键信息的场景(如命名实体生成),但训练不稳定
Local Attention(局部注意力) 仅选取输入序列中 “局部窗口” 内的词计算权重,而非全部 长序列输入(如长文档摘要),减少计算量

3.Soft Attention具体流程(三步法)

以“Query(当前待生成词)-> 输入序列(Key1~Key4,Value1~Value4)”为例:

  1. 计算相似度:通过函数F(Q,K)(如点积,余弦相似度)得到Query与每个Key的相似度得分s1-s4
  2. 归一化:对s1--s4做SoftMax处理,得到权重a1--a4(权重和为1)
  3. 加权求和:Attention输出=a1*Value1 + a2 * Value2 + a3 * Value3 + a4 * Value4,将输入信息加权融入当前输出预测

四、进阶架构:Transformer 与Self-Attention

1.核心突破:Self-Attention替代RNN

传统Encoder-Decoder依赖LSTM/GRU处理序列,但存在“长距离依赖建模减弱”“并行计算差”的问题。《Attention is All You Need》提出的Transformer 架构,用 Self-Attention(自注意力)完全替代RNN,核心优势:

  • 直接计算序列中任意两个词的依赖关系,无需按时间步递进
  • 支持并行计算,训练效率大幅提升

2.Transformer核心组件

  • Scaled Dot-Product Attention(缩放点积注意力):Self-Attention的核心是实现,通过Query * Key^T/\sqrt{d_k} 计算相似度(\sqrt{d_k} 避免维度过高导致的梯度消失)
  • Multi-Head Attention(多头注意力):将Query Key Value投影到多个子空间,并行计算多个Attention,再拼接结果,捕捉多维语义信息
  • Position Encoding(位置编码):由于Self-Attention无时间步概念,需通过位置编码给每个词添加“位置信息”,保证序列顺序不丢失
  • Encoder-Decoder Attention:Decoder的注意力机制同时关注“输入序列(Encoder输出)”和“已生成的输出序列”,兼顾输入语义与输出连贯性

3.Transformer的训练与解码

  • 训练时:Decoder 使用“Masked Self-Attention”(屏蔽未来词),避免模型提前看到目标序列(信息泄露);
  • 解码时:按时间步生成,每个步骤基于前序生成结果和Encoder输入,通过Multi-Head Attention 整合信息

五、训练技巧与优化方法

1.Teacher Forcing:加速训练但需规避缺陷

  • 核心逻辑:训练Decoder时,每一步的输入不是“模型上一步的预测结果”而是“真实目标序列的前序词”(如训练翻译 “你好吗” 时,第二步输入是真实的 “你”,而非模型可能预测的 “我”);
  • 优势:降低训练初期的误差累积,加速收敛
  • 缺陷:Exposure Bias(暴露偏差)—— 训练时模型依赖“真实标签”,但推理时依赖“自身预测”,导致训练与推理场景不一致,可能生成语法错误

2.采样策略:控制生成结果的多样性与准确性

生成式模型的输出本质是“从此的概率分布中采样”,通过以下参数调节采样方式:

参数 核心作用 取值影响
Beam Size(束宽) 解码时保留 Top-K 个最优候选序列,而非仅选概率最高的 1 个 束宽越大,生成越准确但速度越慢(如 Beam=1 是贪心搜索,Beam=5 保留 5 个候选)
Temperature(温度) 调节概率分布的 “平滑度”(对 SoftMax 输出做缩放) T→0:只选概率最高的词,结果固定但单调;T→∞:概率分布均匀,结果随机但混乱
Top-K 仅从概率最高的 K 个词中采样 K 越小,多样性越低但准确性越高;K 越大,多样性越高但可能出现无意义词
Top-P(核采样) 按概率排序,从 “累加概率≤P” 的词中采样(动态 K 值) 比 Top-K 更灵活,避免 K 过小时的单调或 K 过大时的混乱(常用 P=0.7~0.9)
Repetition Penalty(重复惩罚) 降低输入中已出现词的预测概率 取值 > 1(如 1.2),有效解决生成文本 “段落重复” 问题(如 PPT 中机器翻译重复 “overview of the current state-of-the-art”)
Max Memory(最大记忆长度) 截断输入文本,仅保留最近 N 个词 避免长序列输入导致的显存溢出,同时保证模型只关注近期上下文(如 Max Memory=3 时,输入 “abcd” 会截断为 “bcd”)

3.特殊优化:指针网络(Pointer-Netwarok)

针对“输出需包含输入特定实体”的场景(如摘要。问答),指针网络允许模型“直接指向输入序列中的词”,而非从词典中采样——比如摘要时直接引用原文的命名实体(如“Attala 县”“密西西比州”),避免生成错误实体。

六、预训练与模型应用

1.Seq2Seq预训练模型:T5

  • 核心思想:将所有NLP任务同一为“文本到文本”的Seq2Seq格式,通过大规模数据预训练Encoder-Decoder架构
  • 任务示例:
    • 翻译:输入 “translate English to German: That is good.”→ 输出 “Das ist gut.”;
    • 相似度计算:输入 “stsb sentence1: 犀牛在吃草。sentence2: 一头犀牛在田野里吃草。”→ 输出 “3.8”(相似度分数);
    • 摘要:输入 “summarize: 州政府周二派遣应急人员调查密西西比州强风暴后的损失...”→ 输出 “阿塔拉县风暴后 6 人住院”;
  • 优势:统一任务范式,可通过微调适配各类生成任务,迁移能力强

2.评价指标:BLEU与ROUGE

生成式任务的评价需衡量“生成结果与参考文本的相似度”,常用指标:

  • BLEU(双语评估替补):基于n-gram(n元语法)的精确率,核心是“生成文本职工参考文本重合的n-gram比例”,适用于机器翻译、文本生成
  •    示例:通过 NLTK 库计算,输入参考文本(可多个)和候选文本,输出相似度分数(0~1,越接近 1 越好);
  • ROUGE(召回导向的生产观念评估):基于n-gram的召回率,核心是“参考文本中与生成文本重合的n-gram比例”,适用于自动摘要(更关注是否覆盖核心信息)

七、场景问题与解决方案

1.核心问题:文本重复

  • 现象:模型生成的内容反复重复某一段落(机器翻译重复 “overview of the current state-of-the-art”)
  • 原因:模型过度依赖局部上下文,对已生成词的概率惩罚不足
  • 解决方案:启用Repetition Penalty(重复惩罚),限制Max Memory(避免长序列导致的循环)、结合Top-P/Top-K采样增加多样性。

2.其他问题

  • 语义不连贯:通过增大Beam Size、降低Temperature提升准确性,或使用Transformer架构增强长距离依赖建模
  • 实体错误:使用指针网络直接引用输入中的实体,或在预训练模型中加入实体级别的优化

八、核心总结

NLP 生成式任务的技术脉络可概括为:

  1. 基础范式:seq2seq 任务→Encoder-Decoder 架构;
  2. 核心突破:Attention 机制解决信息分配问题→Transformer 架构用 Self-Attention 替代 RNN,提升效率与建模能力;
  3. 优化方向:通过采样策略控制生成多样性、用重复惩罚解决文本重复、用预训练模型(如 T5)提升泛化能力;
  4. 应用场景:覆盖翻译、摘要、作诗、对话等,核心是 “基于输入创造符合语义和语法的全新内容”。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐