从概率分布中选择单个词元(采样、解码):中学生版

#2025/12/29 #ai

目录

核心概念

想象你在玩一个“猜下一个词“的游戏。大语言模型就像一个非常聪明的玩家,它不会直接告诉你答案,而是给出每个可能的词的“得分”。

举个例子

假设你写了一句话:“我正在开一辆……”

模型会思考:“接下来应该是什么词呢?“然后给出这样的得分:

🚗 车 (car)        → 40% 可能性  
🚚 卡车 (truck)    → 13% 可能性  
🐘 大象 (elephant) → 2% 可能性  

两种选择策略

1️⃣ 贪心解码(总选最高分)

  • 规则
    • 永远选择概率最高的词
  • 结果
    • 每次都会选“车“
  • 特点
    • 结果固定,没有惊喜
  • 就像考试永远选 A,虽然保险但缺乏创意

2️⃣ 随机采样(按概率抽奖)

  • 规则:根据概率随机选择
  • 结果
    • 40%的概率选“车“
    • 13%的概率选“卡车“
    • 2%的概率选“大象“(虽然小但也可能)
  • 特点
    • 有随机性,更自然有趣

用代码理解

# 假设这是模型给出的概率  
词元概率 = {  
    "车": 0.40,  
    "卡车": 0.13,  
    "自行车": 0.08,  
    "大象": 0.02  
}  

# 贪心解码:总选最高的  
def 贪心选择():  
    return "车"  # 每次都一样  

# 随机采样:像抽奖  
import random  
def 随机选择():  
    # 根据概率随机抽取  
    return random.choices(  
        list(词元概率.keys()),  
        weights=list(词元概率.values())  
    )[0]  

为什么需要随机性?

想象如果AI作家总是选最保险的词:

  • ❌ “今天天气很好” → 每天都这么写
  • ✅ 有时写“今天天气晴朗“,有时写“今天阳光明媚“ → 更自然

关键要点

  1. 模型输出
    • 不是直接给答案,而是给每个词的“可能性得分“
  2. 解码策略
    • 决定如何从这些得分中选出最终的词
  3. 温度参数
    • 控制随机程度(温度=0就是贪心解码
  4. 实际应用:聊天机器人通常用随机采样,让回答更自然多样