
AlphaZero 证明 AI 无需人类经验也能超越人类
来源标题:Cheap Oracles
AlphaZero 仅凭游戏规则、不借助任何人类棋谱训练,就超越了依赖人类经验构建的传统引擎。文章以国际象棋为例指出,语言模型同样不只是「读过所有文本的平均值」。这一类比被用来反驳「AI 只是人类经验复读机」的常见质疑。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
如今在 Mastodon 上,你总能碰到一种让人安心的说法:AI 是泡沫,会过去的;只要你把它当成别人的问题,它就会客客气气地继续当别人的问题。我认为这三句话都错了,但第三句最值得一谈。有用的技术以前也产生过泡沫,而泡沫破裂从来没让铁路消失过。一项技术是否影响你,并不取决于你是否使用它,而取决于它是否改变了完成工作的成本。
对语言模型最常见的否定是这样的:它们其实什么也做不了,只是把一切都读过了。输出最多也就是人类已有写作的平均值。没有我们,它们什么都不是。
这种反对意见有历史可循,你可以去国际象棋里看看。在那里,人类经验看上去同样是必不可少的原材料:一个世纪的赛事实践、开局理论、几代棋手积累的理解。引擎正是用这些知识造出来的——评估函数由人设计,标准权重由人设定。
2017年底,AlphaZero 出现了。系统只被给了规则,没有人类棋谱、没有开局理论、没有手写评估标准。它跟自己下棋,从结果中学习。一年后发表在 Science 上的最终报告称,经过大约九小时训练,它对阵 2016 年 TCEC 冠军版 Stockfish,在一千局中取得 155 胜 6 负。
值得精确说明的是,这里被推翻的到底是什么。不是“计算机比人类快”——从深蓝时代我们就知道这一点了。被推翻的是一个更窄也更令人意外的东西:超人棋力并不需要人类棋谱作为训练材料。人类棋谱的档案不是天花板,甚至不是地基,而是一条弯路。
为什么这偏偏在国际象棋里奏效?因为国际象棋提供了廉价而精确的反馈。规则判定一步棋是否合法、局面是否终局、谁赢了。结果信号是稀疏的——只在棋局结束时到来——把它转化成好棋仍然需要大量计算。但它是明确无歧义的,而且只要你愿意再跑一局,它就随时可用。系统可以自行生成训练材料,不必请人来评判每一次尝试。
这个区别对本文余下部分很重要。我所说的 oracle,是指任何可重复、能对一次尝试打分的机制。oracle 在成本、延迟、覆盖面和噪声上各有不同。国际象棋有精确的结果 oracle。软件测试快但不完整。人类评审覆盖面广,但慢且不一致。第二个模型便宜又快,但只是个批评者——不是 ground truth。
今天要击败的引擎又一次叫 Stockfish,这并不改变核心结论。现在的 Stockfish 用神经网络评估局面,而受 AlphaZero 启发的 Leela Chess Zero 通过自我对弈学习。人类棋谱仍然有用,但已不再是限制性资源。
2019年,Rich Sutton 解释了为什么这个模式不是一次性的,而是贯穿 AI 研究七十年的一条常量:随算力扩展的方法——搜索和学习——最终会击败围绕人类专业知识构建的方法。专业知识在短期内有用,长期则成为约束,在国际象棋、围棋、语音识别和计算机视觉中都是如此。Sutton 称之为“苦涩的教训”,因为它的刺痛之处在于:每次输掉的,都是我们自认为不可或缺的那部分。
Halevy、Norvig 和 Pereira 在 2009 年提出了一个互补的论点。在《数据的非凡有效性》一文中,他们描述了简单方法配大量数据如何击败复杂方法配少量数据。Sutton 强调的是可扩展的搜索和学习;他们强调的是大规模数据集的杠杆作用。两者都警告我们:不要把今天的手工优势误认为永久的优势。
软件行业从自身实践中早就知道这一点,比 AI 研究给它命名还要早。2001年,Linus Torvalds 在内核邮件列表上论证 Linux 是演化而非设计时警告说:“永远不要犯这样的错误,以为你能设计出比‘残酷的大规模并行试错加反馈循环’更好的东西。那是把你的智力看得太高了。”这比 Sutton 早了十八年,而且完全不是在谈 AI——同样的两个要素,并行搜索和反馈循环,同样刺痛我们的自我形象。
你可以把苦涩的教训读作一系列“去中心化”的最新一章。地球是宇宙的中心——并不是。我们是造物的皇冠——只是树上的一根枝条。我们是自己家的主人——我们所做的大部分事情,都是由我们永远看不到的过程准备好的。我们甚至不是遗传的主角;从基因的角度看,我们只是载体。每一次降级都刺痛过,每一次都留了下来。苦涩的教训归档了下一次:我们显式的聪明并不是我们以为的那台引擎。把计算和反馈转化为性能的系统,一再跑赢我们试图手工植入其中的知识——而我们正慢慢用完那些能用来安慰自己“模型里没有类似事情在发生”的基准。
这让每个领域面临的问题都一样:有哪些反馈可用,一次查询要花多少成本?
对代码来说,答案是:相当多的反馈,而且很多很便宜。能编译吗?测试通过吗?基准退化了吗?这些检查不能证明程序做了任务要求的事——测试不完整,规格也模糊——但它们能快速自动地否决掉相当一部分糟糕的尝试。代码更靠近国际象棋那一侧。
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。