生成式人工智能
学习数据分布,并从中采样生成新的文本、图像、音频或代码。
前置知识
通俗直觉
分类模型常把输入映射到已有标签,生成模型则要构造文本、图像或其他新内容。难点在于可能的输出极多,而且同一输入往往允许多个合理结果,不能只按固定答案查表。
生成模型从训练数据学习统计规律,并在给定条件下生成结果。新组合不意味着保证原创或保证真实:模型可能复现训练中的片段,也可能产生从未出现但错误的内容。
核心原理
自回归生成把序列拆成逐步预测:给定已有上下文,计算下一个元素的条件分布,选择一个元素并加入上下文,再继续下一步。文本模型处理的通常是 token,并不总与一个完整汉字或单词对应。
训练阶段用样本调整参数,推理阶段用已训练参数生成内容。下方联合概率分解是概率链式法则;代码里的手写转移表只是帮助观察采样过程,没有展示训练,也不能等同于大语言模型。
解码策略决定怎样从预测分布选择输出。总选最高概率项容易得到稳定但单一的结果;采样可以增加多样性,也可能提高出现不合适结果的机会。生成概率反映模型偏好,不是事实被证实的概率。
生成式 AI 不只包括自回归文本模型。图像等任务也可以用逐步去噪等机制生成;共同点是学习并构造数据,而不是所有模态都逐字生成。实际应用还要结合检索、约束和外部验证检查内容是否适合任务。
案例:一个三步条件生成器
构造词表规定“人工智能”后可接“正在”或“可以”;“正在”后可接“改变”或“学习”,“可以”后可接“辅助”。从“人工智能”开始,依次选两次下一个词,可以形成“人工智能正在学习”或“人工智能可以辅助”等序列。
这些句子是否常见、是否符合任务,都没有被这张表验证。下方代码使用预设抽样值固定路径,方便核对每一步;真实模型会根据更长上下文计算分布,而且需要明确停止条件。若用户要求可靠的政策解释,还必须检查当前政策证据,不能只检查句子读起来通顺。
数学公式
整个序列的概率等于每一步条件概率的乘积。
工作流程
- 收集并清理训练数据
- 学习数据分布参数
- 根据上下文预测概率
- 按采样策略生成内容
代码示例
Python
example.pynext_word = {
"人工智能": [("正在", 0.6), ("可以", 0.4)],
"正在": [("改变", 0.3), ("学习", 0.7)],
"可以": [("辅助", 1.0)],
}
def choose(distribution, draw):
if not 0 <= draw < 1:
raise ValueError("draw must be in [0, 1)")
if abs(sum(p for _, p in distribution) - 1.0) > 1e-9:
raise ValueError("probabilities must sum to 1")
cumulative = 0.0
for word, probability in distribution:
cumulative += probability
if draw < cumulative:
return word
return distribution[-1][0]
text = ["人工智能"]
for draw in [0.2, 0.8]:
text.append(choose(next_word[text[-1]], draw))
print("".join(text))- 人为给定条件概率,累积区间决定选中哪个词。
- 两个固定抽样值使逐步生成结果可复核。
- 示例只展示推理中的选择过程,没有学习参数,也没有使用神经网络。
这是没有训练过程的词级条件采样演示,只依赖前一个词。第一次抽样值 0.2 落入“正在”的区间;第二次 0.8 落入“学习”的区间,所以预期输出固定为 人工智能正在学习。
预设抽样值用于复核,不代表真实生成过程没有随机性。修改抽样值可观察其他路径;表内概率是人为构造,不能解读为真实语言模型概率、事实可信度或测得的性能。
应用场景
- 内容创作
- 代码补全
- 智能检索
常见误区
- 把“生成概率高”理解为“事实一定正确”,只用流畅度验收回答。
- 宣称生成模型从不复制训练内容,或者认为任何新组合都没有版权与来源问题。
- 把教学中的手写转移表当作训练后的语言模型,或认为图像生成也只能使用同一种自回归机制。
推荐学习资料
参考库不会生成虚假资源或无效外部链接。