连续自回归语言模型(CALM)与传统token模型最显著的区别在于输出空间的连续性。传统LLM在每一步预测的是有限词汇表上的离散概率分布,而CALM直接生成连续向量空间中的样本。这种设计带来了显著的效率优势——自回归步数可压缩至传统模型的1/K(K为块长度),但同时也关闭了基于logits的温度调节通道。
温度参数的本质作用是通过缩放logits来重塑概率分布。当T<1时,softmax输出的分布会更尖锐,模型行为趋向确定性;T>1时分布更平坦,生成结果更具多样性。这个机制在编程辅助、数学推导等场景至关重要,也是创意写作中控制发散程度的主要手段。
生产环境中90%以上的LLM应用都会调整温度参数,这是模型可控性的基础保障
CALM面临的困境在于:连续输出空间无法枚举所有可能性,自然也无法计算归一化概率。模型就像一个黑箱采样器,能生成样本但无法提供概率密度值。这就导致传统温度调节技术完全失效——没有logits向量可供缩放,也没有softmax函数可操作。
经典温度采样公式为:
code复制p_i = exp(x_i / T) / Σ exp(x_j / T)
其中x_i是第i个token的logit。CALM需要找到功能等效但仅依赖采样的替代方案。核心思路是将概率重加权转化为样本的接受/拒绝判断。
碰撞方法(collision method)提供了基础框架:若要采样来自分布P(x)^(1/T)的样本,可以通过以下步骤实现:
这种方法利用了独立事件的乘法原理——n个相同样本同时出现的概率恰好是P(x)^n。例如当T=0.5时,需要连续2个相同样本才能接受,等效实现了P(x)^2的采样。
实际应用中1/T往往不是整数。例如T=0.3时,1/T≈3.33。此时需要将指数分解为整数部分和小数部分:
code复制P(x)^(1/T) = P(x)^n × P(x)^α
其中n=⌊1/T⌋, α=(1/T)-n
整数部分n仍采用碰撞方法处理,小数部分α则需要更精巧的伯努利工厂(Bernoulli factory)技术。伯努利工厂是指仅通过观察伯努利试验(如抛硬币)来构造新伯努利随机变量的装置。
具体实现时,需要构建一个接受概率为P(x)^α的伯努利试验。这可以通过广义二项级数展开来实现:
code复制P(x)^α = Σ C(α,k) P(x)^k (1-P(x))^(α-k)
其中C(α,k)是广义二项系数。实际操作中采用截断级数配合重要性采样进行近似计算。
原始碰撞方法在低温(T<0.3)时效率极低。例如T=0.1需要连续10个相同样本,接受概率可能低至1e-10量级。为此提出批量近似策略:
这种方法将串行等待转化为并行批量处理,使实际吞吐量提升2-3个数量级。实验显示当N=10n时,采样成功率可达80%以上。
实现时需要注意以下工程细节:
典型实现中,温度调节带来的额外计算开销可控制在20-30%以内,远低于理论最坏情况。
根据实际测试结果给出建议值:
| 场景类型 | 推荐T范围 | 效果特征 |
|---|---|---|
| 代码生成 | 0.1-0.3 | 高确定性,低重复率 |
| 技术文档写作 | 0.3-0.6 | 平衡准确性与流畅度 |
| 创意写作 | 0.7-1.2 | 高多样性,适度冒险 |
| 头脑风暴 | >1.2 | 极高发散性,包含离群点 |
问题1:低温时输出变得重复
问题2:高温时输出不连贯
问题3:采样速度骤降
该方法不仅适用于CALM,也可推广到其他隐式生成模型:
当前局限在于极高温度(T>2)时稳定性下降,未来可通过自适应批量大小或重要性采样改进。另一个方向是将温度调节与top-k/nucleus采样结合,实现更精细的控制。