传统文本生成(如 GPT 系列)依赖大规模语料训练,生成内容具有随机性,难以满足工业级应用的精确需求。而可控文本生成(Controllable Text Generation)指通过预设约束条件或引导信号,使 AI 模型生成符合特定要求的文本内容。这些 “可控” 维度包括但不限于:主题(科技新闻, 医学报告等), 风格(正式或口语化, 幽默或严肃), 格式(诗歌, 电邮, 代码等), 语义属性(情感倾向, 信息量, 逻辑结构等).
可控文本生成技术
可控文本生成核心原理
将控制信号作为模型输入的一部分,通过 n-gram 条件概率模型建模生成过程。
\[P(y|x,c) = \Pi^T_{t=1}P(y_t|y_{\lt t}, x, c)\]其中, $x$ 为输入文本, $c$ 为控制信号(标签, 提示词等), $y$ 为生成文本.
常规可控文本生成方法
-
基于输入条件的显式控制
-
提示工程: 通过精细化设计的提示词指定生成要求, 此处 $c$ 就是提示词指令.
例如: 以莎士比亚风格写一首关于人工智能的十四行诗,要求押韵且包含‘机器之心’一词
-
条件编码: 将控制信号(如情感标签 “积极”)转化为 multi-hot 向量,与输入文本一同输入编码器(如 BERT),引导模型生成对应内容。
-
-
基于模型干预的隐式控制
-
参数微调: 使用带标签的数据集对预训练模型进行微调, 例如: 使用 “正式邮件” 语料微调模型以生成商务文本.
-
推理时干预: 在模型生成过程中修改隐藏层表示,例如通过调整 Transformer 的注意力权重控制生成文本的长度或主题集中度.
-
-
基于强化学习的动态控制
基于生成文本与控制目标的匹配度设计奖励函数, 例如:
-
主题相关性: 生成文本是否属于某一主题.
-
格式合规性: 生成文本是否是合法 JSON 格式.
-
技术挑战和前沿研究
-
多模态可控生成: 结合图像、音频等信息进行文本生成.
-
基于知识图谱的可控生成: 将结构化知识(实体关系图谱等), 作为控制信号, 确保生成内容的事实准确性.
Conditional Transformer Language Model (CTRL): 基于条件 Transformer 的可控文本生成模型
Paper: https://doi.org/10.48550/arXiv.1909.05858
CTRL(Conditional Transformer Language Model)的核心目标是解决传统语言模型的不可控问题,通过引入控制代码(control codes) 实现对生成过程的显式调节。这些控制代码可直接指定生成文本的领域(如维基百科、亚马逊评论)、风格(恐怖故事、学术论文)、任务类型(问答、翻译),甚至实体关系和日期等细粒度特征。例如,用户只需输入对应控制代码(如 Reviews Rating: 4.0),模型即可生成符合该领域和评分要求的评论,而无需依赖复杂的提示词设计。这种控制方式将传统模型的 “隐式引导” 转化为 “显式指令”,大幅提升了生成过程的可预测性。
方法论
CTRL 采用基于 Transformer 的条件语言模型架构,核心创新在于将控制代码作为条件输入融入生成过程:
-
条件概率建模: 常规语言模型如 GPT 学习文本的概率分布 $p(x)$, 而 CTRL 学习条件概率 $p(x | c)$, 其中 c 为控制代码, 概率分解如下:
\[p(x|c) = \Pi^n_{i=1}p(x_i|x_{\lt i}, c)\]训练的目标函数 (此处为损失函数) 则是负对数似然函数 (此处是对数概率):
\[\textbf{L}(D) = - \sum^{|D|}_{k=1}logp_{\theta}(x^k_i|x^k_{\lt i}, c^k)\] -
输入处理
控制代码 $c$ 作为序列的首个 token,与原始文本一同嵌入。每个 token 的嵌入由学习到的词嵌入和正弦位置嵌入 (把这里换成 RoPE 矩阵算不算创新点?) 叠加而成.
-
网络结构
模型包含 48 层 Transformer,每层由多头注意力(16 头)和前馈网络组成。多头注意力使用因果掩码避免关注未来 token,前馈网络采用 ReLU 激活,内层维度为 8192。每层引入层归一化和残差连接,提升训练稳定性。
控制代码的设计是 CTRL 实现可控生成的关键,其核心原则是从训练数据的自然结构中提取,而非人工设计。具体来源包括:
-
领域相关代码: 如 Wikipedia、Project Gutenberg、亚马逊评论等大规模语料库对应独立控制代码;Reddit 子版块数据则使用
r/subdomain
格式(如r/science
) -
任务相关代码: 问答
Questions
, 翻译Translation
等任务对应的专用控制代码, 可与领域代码结合使用, 例如Translation English: French: + Reviews
-
URL 结构代码: OpenWebText 数据集中的 URL 被用作控制代码,其结构(如域名、路径、日期)被模型学习,支持通过自定义 URL 生成特定主题内容(如
https://www.cnn.com/2023/01/science
生成科技新闻)。
除了模型创新外, 为解决传统采样方法中 “贪婪采样易重复” 与 “随机采样易偏离” 的矛盾,CTRL 提出了另一个创新点, 也就是带惩罚的采样策略:
\[p_i = \frac {exp(x_i / (T \cdot I(i \in g)))} {\sum_j exp(x_j / (T \cdot I(j \in g)))}\]其中 $g$ 为已生成序列, $I(i \in g)$ 为指示函数, 当 token 已生成时惩罚其得分. 该方法在保证生成真实性的同时减少重复, 由于传统 top_k 或核采样 (top_p).
CTRL 的贡献
-
多维度可控文本生成
-
领域控制: 通过领域代码生成不同领域文本
-
Wikipedia
: 生成百科全书式条目. -
Horror
: 生成恐怖故事. -
Review Rating: 5.0
: 生成正面产品评论.
-
-
风格控制: 同一领域可通过子代码调整风格
-
Books Genre: Science Fiction
: 生成科幻小说片段. -
New Tone: Opinion
: 生成观点类新闻文章. -
Poetry Style: Shakespearean
: 生成莎士比亚风格十四行诗.
-
-
任务控制: 支持多种自然语言处理任务
-
问答:
Questions Q: What is AI? A:
Completion 生成问题答案. -
翻译:
Translation English: Spanish: The sun rises in the east.
生成西班牙语翻译. -
摘要:
Summarize Article: [原文]
生成文本摘要.
-
-
-
零样本跨领域任务
通过混合代码实现跨领域任务
-
领域 + 任务混合:
Science + Questions
生成科学领域的问答对. -
多语言混合:
French Literature + Translation to German
生成德语的法国文学片段. -
实体关系控制: 通过 URL 中的实体参数生成相关内容,
https://www.bio.com/Marie_Curie
生成居里夫人的传记段落.
-
-
源归因分析
CTRL 的源归因功能可分析生成文本与训练数据各子集的相关性, 例如输入一段关于 “人工智能伦理” 的文本,模型可输出其最可能源自的 Reddit 子版块.
-
长文本生成和上下文一致性维护
通过滑动窗口技术和改进的采样策略,CTRL 可生成超出训练序列长度的连贯文本,且保持上下文一致性, 例如生成多段落的小说章节,各段落风格、主题一致, 续写新闻报道,后续段落与开头事件描述连贯, 生成多轮对话,保持角色语气和话题一致性…