跳到主要内容
采样变便宜了,条件没有

采样变便宜了,条件没有

图南
图南

· 阅读约 7 分钟

很多人对 AI 辅助创作的想象,是一条连续的斜坡:从帮你改个错别字开始,到帮你把一整首歌做出来,中间只是程度不同,早晚会滑到底。

不是。它至少是两层,而且这两层的成本曲线正在分叉——一层快塌到地上了,另一层几乎没动。你脑子里那条斜坡,只存在于第一层。

这篇想给你一个够用的切法:以后任何一次"AI 帮我做了个东西",先问两个问题——这东西对不对,谁说了算;这次要什么,是谁给的。问完这两个,你大概就知道自己省掉了什么,没省掉什么。

九月底 DEV 上有首歌,正好把这事演了一遍。Anna Villarreal 发的《Bleeding Knuckles》,词是她自己写的,人声和配图交给 AI。她说写词和画画是那天把她从床上拽起来的东西。评论区一边倒地共鸣,有人想起印刷厂赶工的时候,有人说精疲力竭的时候能做出点东西就够撑过一天了。这条我看了两遍,不是因为歌,是因为那个分工的切法——切得几乎精准地踩在分界线上。

第一层:采样

说人话就是——模型生成的时候,真正做的动作只有一个:给定前面已有的内容,猜下一个 token 是什么。写一首歌、画一张图、补完一个函数,都是这一个动作滚了成百上千遍的结果。它没有"先把整体想好,再落笔"这一步,那个看起来像整体的东西,是滚完之后自己长出来的。

形式上就是在算一个条件概率:给定前面所有 token,下一个 token 的概率分布长什么样,然后从这个分布里抽一个。整篇故事的所有后果都从这一句里长出来——分布是谁定的,签是谁抽的。

这一层的成本为什么在往零掉?因为这层里的活,绝大多数可以被写成"给定输入,产出一个输入能决定的东西"——也就是判据能写出来。判据能写出来,就意味着这件事存在一个可以优化的方向,梯度有地方落。这一点比模型本身有多大更要命。

那首歌的 AI 人声就是这一类。歌词已经定死了,要什么很明确:唱出来、在调上、情绪别崩、风格对路。这些判据客观上可以验,验不了的也能拿大量样本对齐。有个评论说这首听着像 Evanescence——这句话的重点不在夸。它说明听众的第一反应是"这是一首工业标准的歌",而不是"这是 AI 唱的"。判据清晰的活,就是会被这么吃掉,而且是静悄悄地吃掉,吃到你都懒得说这是 AI 做的了。

那温度调高,是不是就能让它写出不一样的东西?也不会。temperature 做的事只是把采样点从众数附近挪到长尾附近,长尾里走的路径仍然是训练数据里出现过的路径,只是没那么高频。随机性给你的是噪声,不是新东西。这条后面还会用到。

第二层:条件

采样不会自己知道该生成什么。它得先拿到一段东西,让分布的形状变一下。这段东西就是条件。

"prompt"翻成"提示词"翻得挺误导的,听起来像在提建议,其实是在改分布。这里最容易被搞混的是:prompt 不是指令,是坐标。

举个例子。你按下这个条件:

写一首关于 burnout 的歌

采样出来的大概是:倦怠、循环、燃烧、麻木、无声的喊、觉得自己被困住。谁拿这个条件按下去,出来的都是同一批词,因为这就是 burnout 这个词在语料里的高概率邻域。它不是不好,它是平均。平均的意思是,你从里面读不出任何一个具体的人。

所以那首歌的歌词不是这么来的。它从一个更靠外的坐标来:压力、反胃、什么都掏空了、早上睁眼的那一下、把墙一圈一圈筑起来。这些东西不在"burnout"这个词的邻域里,是有人拿自己当天的真实处境当条件,才落得到那个位置。

那为什么条件必须由人来给?很多人以为这是"模型还不够强"的暂时状态,我倾向于不这么看。模型的知识是训练语料里已经出现过的模式的形状,它给的是"过去出现过的合理选项"。一个人某天下午的处境,不在语料里。这不是"太稀有了所以没学好"——稀有度能靠数据量补——是"一次性的所以不可学"。它在训练数据里没有对应物,也没办法有。

所以条件这一层的成本,过去两年基本没动。甚至更难了,因为现在更容易被"反正 AI 能生成个差不多的"劝住,直接跳过给条件这一步。而给条件这一步,恰好是那首歌里唯一不能从别处来的部分。

两个被塞进同一个词里的动作

写到这里我得往回退一句:我刚刚把"创作"当成一个统一的东西在讲,这么讲不严谨,应该反过来说——创作不是一个动作,是至少两个被塞进同一个词里的动作,一个是选,一个是渲染。要判断哪个能交出去,只看一件事:这件事的"对不对"能不能写在纸上给别人看。

渲染这一类,判据在外面,能写、能测、能对齐,交给模型,成本趋近于零。选择这一类,判据在你自己身上,"哪个词才是今天"这件事没有真值,交不出去,交出去也是别人的判断。

拿同行更熟的场景过一遍。让模型写个排序函数,判据在外面,随便写,跑测试就完了。让它写"按我们组上周定的那个口径排序"——这个口径不在语料里,不给上下文它一个字都写不出来,给了上下文它也只是在复用你喂进去的东西。同一件事,差的就是判据在不在模型看得见的地方。

这个切法很干净。干净也正是它的缺点。真实世界里这两者是混着的:挑哪个 take、选哪个 seed,也是选择,遣词造句的过程里也有一大半是纯生成。切成两半是为了让你先抓住形状,边界其实是渐变的。而且条件这一层到底该怎么界定、上下文里哪些信息是模型真的在用、哪些只是摆着占位置,业内也没完全达成共识。我讲的是相对主流的那个理解,别当成定论。

用这套框架再看一遍那个分工:她做的是条件那一层,AI 做的是采样那一层。这不是"各做一半"那种平均分配——这两层的成本曲线是分叉的,一层塌了,另一层一点没动。

她说是写词和画画把她从床上拽起来的。这里面有一半交给了 AI,那另一半是不是就是让她能起来的那个东西?机制上我讲不清情绪和创作之间到底怎么转,这不在我的射程里,不敢下这个结论。能讲清的是:那首歌里唯一不能从别处来的东西是词。人声可以换个模型再生成一版,图可以重画,词换不了,因为它记的是某个具体的下午。

这次的条件,语料里没有别人给过。所以这首歌不管人声是不是合成的,它撞不上别人的歌——撞不上,因为出发的坐标就不一样。

所以说到底,这事一句话就是:生成的成本塌了,条件的成本没塌,这两件事之间的差,就是现在这套工具全部的价值和全部的坑。

再往下就是同质化那个问题——大家的条件给得一样,采样自然收敛到同一块高地上,写得越多越像。这是同一套机制的另一面,坑我先留着,改天填。

懂了这层,你下次看到"某某工具能自动生成 XX"的时候,先问一句:那 XX 的条件是谁给的。答案基本就告诉你了,能省掉的是哪一半。