利用熵提升大语言模型的创意写作能力

Reddit r/LocalLLaMA 工具

摘要

本文介绍了一种通过修改采样过程利用熵来改进大语言模型创意写作的技术,旨在减少生成文本中常见的“大语言模型风格”。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/02 04:19

# 利用熵提升大语言模型的创意写作能力 — Count Bayesie 来源: https://www.countbayesie.com/blog/2026/7/1/making-llms-better-at-creative-writing-using-entropy 作为一名作者,我经常对LLM写作的质量,尤其是它的“感觉”感到失望。对于许多实用目的来说,它当然完全可以接受,但我想我们都立刻能感受到那种“哦,这是LLM写的”氛围。现在,作为一名AI工程师,我觉得这一定是一个我们可以解决的问题!在这篇文章中,我尝试通过修改LLM的**采样**过程来解决这个问题,具体方法是引入关于模型在选中某个特定token后,未来熵(与下一个token的选择多样性相关)的信息。 社交网络上流传着一段相当有趣的片段,Ben Affleck在讨论AI在写作中的角色(https://www.youtube.com/shorts/G_ZWf0Nuzps),他很好地表达了LLM写作的这个问题: Affleck的观点有趣之处在于,他似乎正确地识别了问题(AI写作*确实*往往很糟糕),并且惊人地接近猜中了问题所在。Affleck意识到,从某种意义上说,LLM是在“走向平均值”,因为传统的LLM被训练来基本优化*期望的*下一个token。 然而,事实证明,我们对LLM的行为有更多的控制权(尤其是在使用本地模型时),通过我们对LLM生成文本方式进行自定义,我们*可以*提高结果的质量! ## 理解采样在LLM中的角色 在进一步深入之前,有必要简要回顾一下LLM生成token过程的最后阶段机制。下面是我们LLM生成token的流程图,我们特别关注下图中的步骤4(logits)和步骤5(采样器): LLM所做的所有惊人工作最终都归结为logits,这些logits可以轻松转换为给定先前上下文\(c\)(即提示)的词汇表下一个token \(V\) 上的*概率分布*:\(\text{p}(V \mid c)\)。“每个下一个token的可能性有多大?” 这基本上是**logits**告诉我们的,但它们*没有*告诉我们的是如何选择! 这就是**采样器**的工作!采样器基本上是我们选择下一个token的策略(在符号中为\(w\)),它对于LLM实际输出的样子起着极其重要的作用。为了更好地理解这一点,让我们看看本文中将使用的两种常见采样器。 ## 贪婪采样 最容易理解的采样器是*贪婪*采样器。贪婪采样器在生成过程的每一步只选择*概率最高的*token。数学上,贪婪采样器定义为: $$w = \arg\max_{v \in V}\ \text{p}(v \mid c)$$ 有趣的是,贪婪采样的结果是*一致*且*可预测*的。大多数人都谈论LLM是*随机的*(有些人说“非确定性”,但这个术语在计算机科学中有更有趣且具体的含义),然而,随机性*不是*Transformer架构的基本属性,而是*采样器的属性*。如果你使用贪婪采样器对同一个提示运行LLM,你会得到相同的结果! 贪婪采样器往往产生非常无聊的结果(我们很快就会看到),但对于解决数学问题或回答基于事实的问题(我们不希望模型太有创意)等情况很有用。 ## 基于温度的采样 大多数专有LLM的用户都熟悉使用LLM时的*温度*概念。温度通常与用户希望模型的创意程度有关。既然我们对LLM的创造力感兴趣,那么有必要精确定义基于温度的采样是什么。 当我们不进行贪婪采样时,我们通常希望简单地根据其概率来采样选择下一个token(这类似于我们从任何已知分布中采样的典型方法)。例如,如果一个token有 \(\text{p}(v \mid c) = 0.25\),那么我们有25%的机会选择该token。基于温度的采样的想法是,我们可以提供一个数字\(T\),范围从0.0到2.0,来调整该分布的形状。选择0.0实际上等同于贪婪采样,1.0是自然分布(导致像上一个例子中那样的25%概率),而2.0则将分布压缩到接近每个token等概率。 更正式地说:温度\(T\)在将logits转换为概率*之前*对其进行重新缩放,然后从分布中采样: $$\text{p}_T(v \mid c) = \frac{\exp\!\big(z(v \mid c)/T\big)}{\sum_{u \in V}\exp\!\big(z(u \mid c)/T\big)}, \qquad w \sim \text{p}_T(V \mid c).$$ 通常,在使用温度采样(对于创意结果)时,建议选择\(T=1.0\)(在实践中,\(T=2.0\)往往过于极端,无法得到连贯的结果)。 ## 创建新的采样器 一直让我着迷的是,在生成*图像*的AI社区中,选择甚至创建自己的自定义采样器是工作流程的主要部分。我即将出版的关于生成图像AI的书《Beyond Slop》(https://www.manning.com/books/beyond-slop)中,有一整章专门介绍如何使用和选择采样器!但出于某种原因,在LLM世界中,我们通常*最多*调整一下温度。 我们将通过构建自己的采样器来打破这种模式!首先,我们需要更多地了解这个采样器的核心概念:*熵*。 ### 熵与归一化熵 毫无疑问,熵是概率论和信息论中我最喜欢的概念之一。最初由Claude Shannon在其杰出的论文《A Mathematical Theory of Computation》(https://people.math.harvard.edu/~ctm/home/text/others/shannon/entropy/entropy.pdf)中引入,**熵**通常被理解为信息的度量(事实上,这是用'比特'来衡量网络容量的想法的来源)。数学上,熵通常定义为: $$H = -\sum_{i=1}^{N} p(x_i) \cdot \text{log }p(x_i)$$ 然而,这个等式并不总是有助于理解熵的行为。关于熵具体度量什么的更好直觉是:*我们对自己的选择有多不确定*。当我们对可能结果所知最少时,熵最高。例如,公平硬币的熵为1,但正面概率0.9、反面概率0.1的硬币的熵略低于0.5,因为我们对抛硬币的结果*更不*不确定。另一种思考方式是,熵衡量我们对结果感到惊讶的能力。低熵意味着结果有点无聊,高熵意味着更令人惊讶。 熵的一个限制是它只允许我们比较具有相同选择数量的选项。例如,一个公平的六面骰子的熵大约为2.6,但与公平硬币一样,它是骰子的*最大熵*。我们想要的是无论有多少选项都能对熵进行评分,并且理想情况下将其保持在0-1范围内。为此,我们只需创建**归一化熵**: $$H_{\text{normalized}} = \frac{H}{H_{\text{max}}}$$ 这给我们一个0-1的数字,告诉我们是否处于最小熵(只有1个确定性选择)或最大熵。 正如你可能猜到的,使用熵使我们能够定义样本路径将允许我们拥有多少创造力。如果提示的logits具有*更高*的熵,那么我们对选择哪个更不确定。更重要的是,如果它们具有*更低*的熵,我们*选择就更少*。选择更少,本质上意味着创造性表达的选择更少。 要深入了解熵,请查看之前关于KL散度的文章(https://www.countbayesie.com/blog/2017/5/9/kullback-leibler-divergence-explained)。现在让我们看看我们的采样器是什么样子的! ## 介绍未来熵采样器! 我们的采样器将做出一个不常见的选择,这是其独特采样行为的关键:它将*超越*我们正在看到的token,并考虑*选择每个token会解锁多少未来选择*。也就是说,我们关心如果我们选择某个\(v\)作为\(w\),我们的*下一个*token分布的熵。然后,我们使用提议分布的该熵(为方便起见,仅限于top-n候选者)并通过对该未来熵加权token的初始概率,然后重新归一化为新的概率。 以下是**未来熵**如何工作的具体细节:首先固定一个候选token \(w\)。将其附加到上下文得到\(c \oplus w\)(上下文加上末尾的\(w\));模型关于*下一个*token(即跟在\(w\)之后的token)的分布为: $$q_w(V) \;=\; p(V \mid c \oplus w) \;=\; p(V \mid c, w).$$ 取\(q_w\)下概率最高的\(n\)个token,仅在该集合上重新归一化,并测量其Shannon熵,通过最大值\(\log n\)归一化为\([0,1]\): $$T_n(w) = \text{top-}n\big(q_w\big), \qquad \tilde q_w(v) = \frac{q_w(v)}{\sum_{u \in T_n(w)} q_w(u)},$$ $$\hat H(w) = \frac{-\sum_{v \in T_n(w)} \tilde q_w(v)\,\log \tilde q_w(v)}{\log n} \in [0, 1].$$ 因此,\(\hat H(w)\) 衡量“模型在\(w\)之后的下一个token的最佳选项的分散程度”。接近\(1\)时表示接近均匀分布(许多开放的未来),接近\(0\)时表示某个选项占主导(一个被迫的延续)。最终由我们的采样器用于确定选择最终概率的简单未来熵分数,将初始概率乘以这个可选性: $$s(w) = p(w \mid c)\,\cdot\,\hat H(w).$$ 因此,当\(\hat H(w) \to 1\)时:生成\(w\)留下许多可行的延续(开放未来);当\(\hat H(w) \to 0\)时:\(w\)导致被迫的下一步(一个模板/陈词滥调),但我们仍然使用初始概率作为选择的一个因素。 有了这个基础,我们现在可以针对之前描述的两个采样器以及我们新实现的未来熵采样器,可视化同一个故事提示的不同结果(注意,将logits转换为token的过程通常被称为“解码”,尤其是在更复杂的情况下)。 正如你所看到的,前两个采样器,包括“创意”温度1.0采样器,选择了相当典型的LLM内容。但我们的定制采样器产生的结果,至少对我来说,感觉相当清新,并且不一定带有AI写作的典型特征。 有了采样器的基础,让我们看看是否可以进行一些改进! ## 泛化我们的采样器 - α交叉淡化器 回想一下,我们基于温度的采样器使用\(T\)来泛化从token分布采样,在一个极端上是贪婪,另一个极端上是均匀。我们可以通过引入一个新参数\(\alpha\)在-1和1之间来执行类似的泛化,该参数改变了原始概率和未来熵之间评分函数的平衡。 数学上看起来像: $$s(w) = p(w \mid c)^{a} \cdot \hat{H}(w)^{b}, \qquad a = 1 - \max(0, \alpha), \quad b = 1 - \max(0, -\alpha)$$ 有趣的是,当\(\alpha = -1\)时,类似于温度为0.0时,我们的采样器恢复为更像传统采样器。在另一个极端,\(\alpha = 1\)时,未来熵是唯一的因素(除了我们限制在top-n选项之外)。 在下图中,我们可以看到-1、0和1这些值的结果: 前两个结果与我们之前看到的几乎一样,第三个显示了纯熵引导路径的影响。请注意,因为我们总是基于熵选择路径,任何单个token的概率都很低。 那么,我们应该为生成选择哪一个呢?好吧,也许我们不必选择! ## 节奏解码 - α波 为了接近*真正的*创造力(并开始感觉配得上‘解码器’这个名称),为什么不混合使用未来熵采样器的方式呢?除了美学考虑(0-2作为温度?!),我选择-1到1作为\(\alpha\)的区间是有充分理由的:这很好地映射到*正弦*函数的范围! 这意味着我们可以将正弦波映射到我们的token生成过程,并使用它来控制我们的\(\alpha\),从而使我们的写作能够在不同程度的创作自由之间有效地*呼吸*。这里的意图是在可预测和不可预测的文本之间变化,从而产生更引人入胜的结果。在最后一张图片中,我们可以看到应用这种技术的结果: 在这张图片中,我们可以看到\(\alpha\)如何在较高值和较低值之间交替,信不信由你,创造了一种更加引人入胜的阅读体验(尤其对于如此相对较小的模型!)。这很可能是我第一次个人*享受*阅读LLM的输出,我肯定想尝试更多,阅读更长版本的这种输出! ## 结论 一方面,很容易觉得LLM在这一点上有点被过度炒作了;另一方面,我觉得我们甚至还没有真正开始探索这些模型背后最基本的机制所能实现的事情!有段时间,我也持有Ben Affleck的观点,认为LLM根本不会是优秀的作家,并且我认为这是因为它们架构的根本性质。运行这个实验有点改变了我的想法,并让我对应用更复杂的采样技术来创造更好的LLM创意写作的方式感到好奇。 ## 想探索更多使用AI进行创意的方式吗?! 那么,来看看我关于AI图像生成的书吧:《Beyond Slop》(https://www.manning.com/books/beyond-slop),即将由Manning出版社印刷出版!本书基本完整的版本现在可以通过提前访问获得!

相似文章

为了内容而内容

Armin Ronacher

作者探讨了LLM如何影响编码和日常语言中的用词,发现LLM偏好的词汇在编程会话和Google Trends中出现的频率均有所增加,这引发了人们对人类开始采用LLM写作风格的担忧。

不同LLM访问级别对论文写作行为的影响

arXiv cs.CL

一项针对24名大学生的初步研究探讨了不同LLM访问级别(无访问、有限访问、无限制访问)对论文写作质量、行为以及感知作者身份的影响,发现限制访问可以保持作者身份的自信,而无限制访问则降低了创造性表达和所有权感。

大语言模型何时进行推理?基于熵相变的动力系统视角

arXiv cs.LG

本文探讨了思维链推理在何时对大语言模型有益,表明早期熵动力学能够可靠地指示推理效用,并介绍了EDRM,这是一个轻量级、无需训练的框架,可自适应选择推理策略,在保持或提升准确率的同时显著节省token。