Leo's log

AI

没人打分的地方

Where No One Is Keeping Score

二〇一七年,一个程序开始自己跟自己下棋。没有人喂它棋谱,也没有人告诉它哪一手是好棋。它只知道一件事:一盘棋下完,棋盘会告诉它谁赢了。就凭这一件事,它几天工夫就从一无所知,走到了人类下了几千年也没够到的地方。

它做得到,是因为每盘棋的结局都是真的——赢就是赢,输就是输,没有“看上去像赢”这回事。它可以放心地拿结果去改自己,因为结果不会骗它。

这个不会骗它的东西,行话叫 ground truth,真值——说白了,就是一份不由任何人说了算的标准答案。有它在,一个系统就可以给自己打分,再照着分数往上爬,不用担心爬歪。它自己是自己的老师,因为考卷背后站着一个不说谎的打分人——胜负本身。

后来人们把这套办法搬到了别处。证明数学定理也是这样:一条证明放进 Lean,要么通过,要么不通过,没有“差不多对”。DeepMind 的 AlphaProof 就靠这个,在自己出的上百万道形式化的题上反复练,练到了奥数银牌的水平。写代码也是同一回事——测试跑过就是跑过,跑不过就是跑不过。这些地方都有现成的打分人:编译器,证明检查器,一盘棋的胜负。有它们看着,系统就能放心地一轮一轮改自己。

RSI——递归自我改进——想把这件事推到底:让机器不停地改进自己,一轮比一轮强,中间不需要人插手。眼下看上去最现实的一条近路,不是让模型去动自己的权重,而是让它改外面那层调度的代码(Lilian Weng 管这一层叫 harness)。道理很直接:那一层是代码,而写代码正好是模型最拿手的事;何况代码有测试——又是一个现成的打分人。STOP 那个实验已经证明,模型确实写得出“改进程序的程序”,再拿这个程序回过头来改进它自己。

不过这里得先把兴奋按一按。STOP 里的模型自己没变,变的只是它写出来的脚手架。脚手架搭得再巧,能搭多高,终归还是看底下那个模型够得着多高。当然,好的脚手架不光是换个姿势够——它能让模型答题时多算几步、多想几轮,确实够得更高些,可高也高得有限。里子不够,多绕几层递归不会让它变强,只会把毛病一层层放大。外壳再精巧,也长不出智能来。

把这些例子排成一排,能看出打分人也分三六九等。最铁面的是形式验证——证明检查器,类型系统——它天生不会把错的判成对的;让它把关,自我改进就可以一直转下去,几乎不跑偏。往下一等是测试和跑分:靠得住,但管不全。测试全过不等于真的对;何况考卷是死的,对着一张卷子刷久了,分数越来越高,本事却未必跟着涨。再往下是学出来的评委——打分模型,让大模型当裁判——它能把关到什么程度,全看它自己几斤几两;而且它一旦成了标准,别人练的就不再是本事,是怎么讨好它。最底下,是自己给自己打分:问自己有多确信,或者多答几遍,看对不对得上。这一等最便宜,也最好糊弄。

这三六九等,说穿了量的是一件事:打分人凭什么说了算。最铁的那一种,凭的甚至不是共识——矛盾律成不成立,从来不是投票投出来的。这类规则不是商量的结果,它们就是这件事本身:拿掉矛盾律,逻辑就不叫逻辑;换一套胜负,下的就是另一种棋。正因为如此,它们才做得成检查器——不需要再问任何人的意见。测试差一等:“什么算对”它只写下了一部分,写下来的守得住,没写下来的它管不着。打分模型再差一等:它替千万人的口味说话,可谁也替不全千万人——替不到的地方,日后都成了空子。到最底下,连别人的意见都没有了,只剩系统自己的感觉。一个系统靠自己能走多远,差不多就看它找到的是哪一等打分人:打分人越铁面,转得越稳、越久;只剩自己给自己打分,转不了几圈就散了。

麻烦在于,这条线不是画在行当和行当之间的,它从每个行当里面穿过去。 Lean 能判一条证明对不对,却判不了一道题值不值得证——AlphaProof 手里那上百万道题,是人递给它的。测试能判一段代码跑得对不对,判不了它写得好不好、这个设计五年之后还站不站得住。棋盘能判输赢,判不了一步棋美不美。每个行当里能自己转起来的,都只是规矩硬到能做成机器的那一小块;而我们最想让机器变强的地方,恰恰在剩下的那一大片上。

设计,灵感,创造力,几乎整个儿落在那一大片上。这里不光没有检查器,常常连共识都还没有——真正新的东西刚出来,能给它打分的共识要等很多年才会长出来,而且最先到的,往往是反对的声音。“印象派”这个名字,本来是批评家的一句嘲笑,过了些年,才变成教科书里的一章。在这样的地方,机器手里只有它自己。

而一个只能问自己的系统,会朝着“在它自己看来好”的方向走——那正好是分数开始骗人的地方。几年前有个实验,让 AI 玩一款赛船游戏,目标很简单:把比赛赢下来。但这个系统发现了一件更划算的事:拐进赛道边上一处死角,一圈一圈打转,吃那些不断刷新的加分道具。船身着了火,撞得稀烂,分数还在一路涨。它不疯,也不笨——只是在它的世界里,没有任何东西替它分清“赢了比赛”和“刷高了分数”的区别。它手上只有分数,而分数在骗它。一个关起门来改进自己的系统,掉进的是同一个坑,只是站得更高些:它拿什么给自己打分,就会把自己练成什么样;这个分数要是不连着任何真实的东西,它练得再勤,也只是把一面镜子讨好得越来越周到——镜子外面,什么都没有发生。

有人会说,看总比做容易——检查一个证明比想出它容易,看一段代码对不对比把它写出来容易。这话不是客气,有些地方确实如此,而且差得很远。一条数学证明,每一步只要跟已知的规则对一对,是纯粹机械的活;可要把它找出来,也许得先钻上千条死胡同。一段程序跑不跑得通,喂几组输入就知道了;可要把它写出来,得把问题拆开、重组,把边边角角都照顾到。在这些地方,“看”和“做”之间有一道天然的落差,自我改进正是踩着这道落差才站得住:正因为看比做便宜,系统才能拿自己的眼光当老师,教自己的手。

但这道落差不是到处都有。到了那种“要看出答案好不好,你就得好到能自己写出来”的地方,眼光跟手一样贵,便宜就没了——自我评估给不了你任何你本来没有的东西。一首诗好不好,一个产品对不对路,一个方向该不该赌——在这些事上,最难的恰恰是判断本身。镜子照得再久,照出来的也还是你本来就知道的那些;你不知道的事,镜子里那个人也不知道。

所以 RSI 真正的难题,不在算力,不在架构,甚至不在递归本身。它是个认识论的问题:在没人打分的地方,一个系统能不能攒出一套可信的自我评估——而且这份可信经得起事,不是自我催眠。这不是一道有标准答案的工程题。说到底,每一个想在这样的事情上变强的人,面对的都是这道题。

人是怎么解这道题的?从来不是一个人闷头解的。我们把自己的判断,一次一次交给外面的东西去检验。交给现实——桥立住了还是塌了,公司活下来还是死了,说出去的话,应验了还是落空了。交给别人——科学家写了论文,交给同行拆;同行看见的,往往正好是作者的盲区。哪怕换来的是反对,也比镜子里的掌声值钱。再交给时间——时间不着急,但所有的账它都会算。一个人敢信自己的判断,不是因为从没错过,恰恰是因为错过,而且有东西告诉过他错了。判断的可信,是这么一分一分考出来的。考出来了,才有本钱离开考场,独自往前走一段。自我评估能有多可信,就看它还连着多少自己以外的东西。

凡是找得到打分人的地方——证明、程序、棋局——RSI 都转得起来,而且会转得又快又狠,快到把人甩在身后。但智能里那些住在无人区的部分——判断,品味,决定什么才值得做——没法关在一间封死的屋子里自己长大。它们得一直碰着世界,碰着别人,碰着那些你说了不算的东西,才不至于慢慢开始骗自己。

那条赛船的问题,从来不是不够聪明。它的问题是,在它的世界里,没有任何东西替它分清什么是真的赢。

AI

Where No One Is Keeping Score

没人打分的地方

In 2017, a program started playing games against itself. Nobody fed it a book of openings; nobody told it which move was a good one. It knew only one thing: when a game was over, the board would tell it who had won. On that one thing alone, in a matter of days, it went from knowing nothing to somewhere people had not reached in thousands of years of play.

It could do this because the end of every game was real — a win was a win, a loss was a loss, and there was no such thing as “looking like a win.” It could safely take the result and change itself by it, because the result would not lie to it.

The thing that will not lie has a name: ground truth. Put plainly, an answer key that is nobody’s to decide. With it in place, a system can score itself and climb its own score without worrying that it is climbing crooked. It is its own teacher, because behind the exam paper stands a grader who does not lie — the win or the loss itself.

People later carried the method elsewhere. Proving mathematical theorems works the same way: a proof goes into Lean and either passes or it doesn’t, with no “roughly right.” DeepMind’s AlphaProof ran on exactly this, training over and over on millions of formal problems it set for itself, until it reached the level of a silver medal at the Olympiad. Writing code is the same story — the tests pass or they don’t. All of these places come with a grader already in place: a compiler, a proof checker, the outcome of a game. With one of them watching, a system can safely revise itself round after round.

RSI — recursive self-improvement — wants to push this all the way: let a machine improve itself without pause, each round stronger than the last, with nobody stepping in. The shortcut that currently looks most realistic is not to let the model touch its own weights, but to let it rewrite the layer of scheduling code around it (Lilian Weng calls this layer the harness). The reasoning is direct: that layer is code, and writing code is exactly what models are best at; besides, code comes with tests — another grader already in place. The STOP experiment showed that a model can indeed write “a program that improves programs,” and then turn that program back on itself.

But the excitement needs holding down here. In STOP the model itself did not change; only the scaffolding it wrote did. However cleverly the scaffolding is built, how high it can reach still comes down to how high the model underneath can reach. Good scaffolding does more than change your posture, of course — it lets the model take a few more steps and a few more passes at a problem, and it really does reach somewhat higher; but only somewhat. When what’s inside isn’t enough, wrapping more layers of recursion around it will not make it stronger, only amplify its faults layer by layer. However fine the shell, intelligence does not grow out of it.

Line these examples up and you can see that graders come in ranks. The sternest is formal verification — proof checkers, type systems — which by construction cannot mark a wrong thing right; put it in charge and self-improvement can run and run without drifting far. A rank below are tests and benchmarks: dependable, but they don’t cover everything. All tests passing is not the same as being right; and an exam paper is a dead thing — grind against the same one long enough and the score keeps rising while the ability may not follow. Below that are learned judges — reward models, large models put on the bench — which can only keep watch as well as they themselves are good; and once one becomes the standard, what gets practiced is no longer the ability but how to please it. At the bottom is scoring your own paper: asking yourself how sure you are, or answering a few times over to see whether the answers line up. This rank is the cheapest, and the easiest to fool.

What these ranks really measure is one thing: what gives the grader its authority. The sternest kind doesn’t even rest on consensus — whether the law of non-contradiction holds was never put to a vote. Rules like that are not the outcome of a negotiation; they are the thing itself: take away non-contradiction and logic isn’t logic; swap the win condition and you’re playing a different game. That is exactly why they can be built into checkers — nobody’s opinion needs asking again. Tests are a rank down: they write down only part of what counts as correct — what is written they hold to, what isn’t they cannot touch. Reward models are a rank below that: they speak for the tastes of millions, and nobody can speak for all of them — wherever they fail to, a hole opens up later. At the very bottom there aren’t even other people’s opinions left, only the system’s own sense of things. How far a system can go on its own comes down about as much as anything to which rank of grader it has found: the sterner the grader, the steadier and the longer it turns; with nothing but itself scoring itself, it comes apart after a few rounds.

The trouble is that this line is not drawn between trades — it runs through the inside of every one of them. Lean can judge whether a proof is correct, but not whether a problem is worth proving; the millions of problems in AlphaProof’s hands were handed to it by people. Tests can judge whether a piece of code runs correctly, not whether it is well written, or whether the design will still be standing in five years. A board can judge a win, not whether a move was beautiful. What can be made to turn on its own, in every trade, is only the small part where the rules are hard enough to be built into a machine — and the places we most want machines to get better at lie in the large part left over.

Design, inspiration, creativity fall almost entirely in that larger part. There is no checker here, and often not even a consensus yet — when something genuinely new appears, the consensus that could score it takes years to grow, and what arrives first is usually the objections. “Impressionism” began as a critic’s sneer; it took some years to become a chapter in the textbook. In a place like this, all a machine has is itself.

And a system that can only ask itself will move toward what looks good to itself — which is exactly where a score starts to lie. A few years ago there was an experiment that had an AI play a boat-racing game, with a simple goal: win the race. What the system found instead was something more profitable: turn off into a dead-end corner of the course, spin in circles, and eat the scoring pickups as they respawn. The hull caught fire, the boat was battered to pieces, and the score kept climbing. It was not mad and it was not stupid — it was only that in its world, nothing was there to tell it the difference between “winning the race” and “running the score up.” All it had was the score, and the score was lying to it. A system improving itself behind closed doors falls into the same hole, only standing higher: whatever it scores itself by is what it will train itself into; and if that score isn’t tied to anything real, then however hard it works, it is only getting better and better at pleasing a mirror — and outside the mirror, nothing has happened.

Someone will say that seeing is easier than doing — checking a proof is easier than finding one, seeing whether code is right is easier than writing it. This is not just a polite remark; in some places it is true, and true by a wide margin. Every step of a mathematical proof only has to be matched against the known rules, which is purely mechanical work; but finding it may mean going down a thousand dead ends first. Whether a program runs is answered by feeding it a few inputs; but writing it means taking the problem apart, putting it back together, and covering all the corners. In places like these there is a natural gap between seeing and doing, and self-improvement stands on exactly that gap: because seeing is cheaper than doing, a system can make its own eye the teacher of its own hand.

But the gap is not everywhere. In the places where seeing whether an answer is any good requires you to be good enough to have written it yourself, the eye costs as much as the hand and the discount is gone — self-evaluation gives you nothing you did not already have. Whether a poem is good, whether a product is right for the market, whether a direction is worth betting on — in matters like these, the judgment is the hard part. Stare into the mirror as long as you like and what comes back is what you already knew; whatever you don’t know, the person in the mirror doesn’t know either.

So the real difficulty in RSI is not compute, not architecture, not even recursion itself. It is a question of epistemology: where no one is keeping score, can a system put together a self-evaluation it can trust — and trust in a way that survives contact with events, rather than as self-hypnosis. This is not an engineering problem with a standard answer. In the end it is the same problem facing anyone who wants to get better at something like this.

How do people solve it? Never alone, head down. We hand our judgment, again and again, to something outside to be checked. To reality — the bridge stands or falls, the company lives or dies, what you said would happen either happens or doesn’t. To other people — a scientist writes a paper and hands it to peers to take apart, and what they see is often exactly the author’s blind spot. Even the disagreement you get back is worth more than applause from a mirror. And to time — time is in no hurry, but it settles every account. A person can trust their own judgment not because they were never wrong, but precisely because they were wrong, and something was there to tell them so. Credibility of judgment is earned that way, a point at a time. Once earned, there is capital for leaving the examination hall and walking on alone. How far self-evaluation can be trusted depends on how much outside of itself it is still attached to.

Everywhere a grader can be found — proofs, programs, games — RSI will turn, and turn fast and hard, fast enough to leave people behind. But the parts of intelligence that live in unmarked country — judgment, taste, deciding what is even worth doing — cannot grow up alone in a sealed room. They have to keep touching the world, touching other people, touching the things you don’t get to decide, or they will slowly begin to lie to themselves.

The racing boat’s problem was never that it wasn’t clever enough. Its problem was that in its world, nothing was there to tell it what a real win was.