
昨天刷到了一条非常有意思的推特。是我关注的一个博主,Howie.Serious 发的。
他发现了一个很有趣的点,就是即使是世界上现在最牛 X 的 NanoBananaPro,在世界知识如此强大的情况下,AI,还是没有办法生成左手写字的图片。

这事特别有意思。我立马用 Gemini 上的 NanoBananPro 试了下。果然翻车了,而且是非常稳定的翻车。

我又直接用 Lovart 跑了十几张图,只对了 2 次,其他的,全错。

我又去试了其他的大模型,包括 chatgpt、seedream、grok,也在这个小小的提示词上全军覆没。

刷刷刷给我生成了一堆右手,让我都有点混乱了,我那一瞬间都在怀疑是不是我自己分不清左右了 ……
我又尝试了一些进阶版。比如,右手拿着苹果左手写字。
这个已经非常明确了吧,我已经给他做限制了。还是会生成右手写字左手拿苹果的图。

GPT 直接给我玩鬼畜了。

甭管是谁,就算是蜘蛛侠来了也没用,也得用右手 ……

非常的倔强。
在好奇之下,我又试了一些其他的 case。比如,让一个人左手拿着橘子右手拿着苹果。

翻车。
穿个不同颜色的鞋子,翻车。

左手举起魔法棒,翻车。

左手拎着一只鸡,右手拎着大高达,翻车。

全都翻车,翻了个大车。
至此,确实发现,AI 完全分不清左右手和左右脚。
但是,如果你让他去纯粹地画空间关系,确实是没啥问题。

但只要一涉及到左手左脚,就直接原地爆炸。
这个话题太有意思了。
我非常好奇地想知道,到底是为什么?
在 DeepReasearch 之后,还真找到了一个蛮有趣的可以解释这个事的论文,叫《Skews in the Phenomenon Space Hinder Generalization in Text-to-Image Generation》,中文名翻译过来是,现象空间的偏差,会阻碍文生图模型的泛化。
而这个影响的核心,其实就是偏见。
跟我之前写过的一篇《AI 们数不清六根手指,这事没那么简单》很像。

那篇文章,聊的是视觉模型,在理解的时候,分不清图中的人有几根手指。
而这次,是在生成的时候,分不清左右。
其实本质的逻辑都是相同的,就是因为数据集的偏见。
这篇论文,大意就是一句话:
AI 之所以分不清左右,不是因为它逻辑不行,而是因为它的老师,也就是我们投喂给它的海量图片数据,本身就存在巨大的压倒性的偏见。
他们做了一个实验。
干的第一件事,是把一张图给拆解成 filler 和 role 两种要素,你可以把它们理解为,主体和关系。
拿猫追老鼠的图来举例,主体就是猫和老鼠;而关系就是,谁是追的那一方,谁是被追的那一方。
确定好这两种要素之后,他们找来了几十个小图标。

两两图标分为一组,规定好它们的主体和关系,用 Unicode 字符画在 32×32 的小方块里。
所有的画面,只干一件事:两个东西,上下叠放。
比如,把名为蛋糕和橡皮的小图标放在同一张图上,上面是蛋糕的图标,下面是橡皮的图标。然后附上一句话,这张图是一个蛋糕在一个橡皮上面。以此类推,就有了一堆测试图片加一堆文本。
然后,他们又分了一些数据集。
有些训练集里,每个物体都当过上面的、也当过下面的;有些训练集里,猫可能几乎永远在上面,狗也可能几乎永远在下面;还有些训练集,更狠一点,某些物体从来没当过上面,只当过下面。
接着,他们把这些图片和文字打包成数据集丢给模型去训练,看它学了这些东西之后,能不能理解上下位置关系。
按照我们对模型训练的常规理解呢,这件事儿的关键在于,样本量要够大。
只要数据规模够大,智能就会自然长出来,对吧?
但是他们的实验数据发现,其实,完全不是这样的。
决定模型能不能举一反三的,其实看的不是数据的数量,看的是数据怎么分布。
他们又定义了两个指标,一个叫 Completeness(完整性),就是每种东西,是否都至少在每个位置上出现过一次。
举个例子,圆在上、三角在下是一种组合,圆在下、三角在上是另一种组合,这两种情况都要在数据里出现过,完整度才能算是及格。
但只有完整度还不够,还得看另一个指标,叫 Balance(平衡性),对,就是跳舞里面的那个 Balance。
它其实指的就是,不同组合出现在数据中的具体比例。
只有圆在上和三角在上这两种情况,在数据里的分布情况大差不差时,平衡度才过关。
反之,如果九张图都是圆在上,只有一张图是三角在上,对模型来说,就是平衡度极差、世界观极度倾斜的情况了。
这样一来,模型就会天然地把圆在上这件事当成一个真理。
只有当一个训练集里,不同的排列组合都出现过,并且每种组合在上在下的情况都出现得差不多时,模型才会开窍:
原来谁在上谁在下不是恒定的,是可以互攻的。
哦说错了,是可以互换的。
那一刻,模型才是真正掌握了上下的位置关系,而不是死记硬背几种固定搭配。

右边的表格里,两个 CPL 代表完整度,也就是圆和三角在上的情况是不是都出现了,BLC 代表平衡度,也就是圆和三角在上的情况分布是否均匀。
左边的纵轴是模型测试的准确性。
你会发现,当完整度和平衡度都是百分百的时候,模型测试的正确率几乎也是百分百,也就是蓝色的散点。
而当完整度和平衡度越来越差的时候,模型正确率也会不断下跌,到了完整度和平衡度最低的灰色散点这里,准确率就没上过百分之四十。
论文后半段,他们还做了一个和现实世界更接近的实验,用的是一个叫 what ’ sup 的基准数据集,里面都是自然图片,专门用来描述两个物体的位置关系。
然后,在这个数据集里面抽取子集。有的子集完整度和平衡度都很高,有的相反。
接着,他们让模型去生成数据集里没有的物品左右关系图片。
得到的结果非常稳定:视觉这边的完整度和平衡度,一旦掉下去,测试集的准确率就一路跟着往下掉,有的组合甚至永远突破不了 50%。
更经典的是最常见的一类错误:两个物体都画对了,但顺序反了。
你让它画盘子在罐头左边,它给你的图看起来很协调,但仔细一看,变成了可乐罐在盘子左边。

这个错误就非常符合我今天在左右手的 case 中测试出来的结果 ……
所以现在可以对 AI 分不清左右这件事,初步给一个解释:
AI 不是分不清左边右边,而是在它受过的童年教育里,现象空间本来就是偏的。
就比如写字这个案例,因为现实世界里,写字的大部分人就是右撇子。
图像网站的标注里,"writing""student writing notes" 这些 tag 背后,也几乎清一色是右手写字。
当一个模型在海量图像上长大,它看到的写字几乎等价于右手写字。
所以当你说左手写字的时候,它脑子里的激活模式是这样的:
" 写字?写字这事我懂啊,写字不就是等于一个人 + 一本本子 + 一只手拿笔吗,啥玩意?你要左手写字?你有毒吧,这个世界还有人用左手写字?我就没见过。"
然后,啪的一下,给你画了个右手写字。
其实有点像一个极端偏科的学生。他做了十万道 "2+3=5" 这样的题,但是从来没见过 "3+2=5"。所以,当你问他 "3+2 等于几 ",他直接就宕机了。
左手写字,就是 3+2 那一侧的世界。
其他的失败的 case 其实也差不多。
当然,这也不怪 AI,因为它的见识就是我们给的。
如果训练集里,左撇子的踪迹本来就少,模型学不出来,是不是应该怪模型?
还是我们,根本就没把这个世界里那些少数者的现象,认真地采集进去?
以前我做用户研究的时候,其实最怕的,就是招样本招得不均匀。
比如你明明是个普适性的 APP,但是只找一线城市上班族深度访谈,当然得不出老人怎么用你的 APP 的这个结果。
只看 iOS 用户的数据,当然也看不到千元安卓机上的使用体验。
只做所谓的可用性测试,不实地去做田野调研,就根本不可能看到用户在真实场景中的那些小动作、小走神、小偷懒。
AI 一直在模仿的,其实就是我们自己的偏见。
我们的大规模图像语料,是过去几十年的人类摄影习惯和文化习惯的快照。
如果这个世界 90% 的人都是右撇子,摄影师拍照的时候又喜欢把笔、杯子、道具放在某个视角更舒服的位置,那模型看到的世界,就会是一块巨大的统计偏差。
如果用一句很正确的话来说,就是,我们根本没给模型一个公平的童年。
但反过来,我们如果看自己呢?
好像,我们本身,也会被各种各样的训练集规训。
成功的概念是有房有车财务自由,人生的捷径是考公上岸。
我们和 AI 的区别只不过在于,AI 是用几百亿张图、几万亿 token,迅速堆叠起来一个模型的失误。
而人类是用几十年的生活和经验积累,逐渐走到一条自己不那么想走的岔路上。
人类和 AI,现在好像,都无法看到自己认知以外的东西。
如果说技术的发展会逼着 AI 公司们,去重新设计那个属于 AI 的训练集,增加它的完整度和平衡度,让它泛化。
那我们,是不是也可以,增加一下自己体验的厚度?
当我们对模型说,你不能永远只会用右手写字,你也得试试左手。
那在我们的生活里,有没有哪一些左手的可能性,其实一直都在,但我从来没有看见过?
我相信,肯定会有的。


