跳至正文
返回首页
1952软件

Samuel 跳棋程序

Arthur Samuel 开发 IBM 第一个跳棋程序,首次实现机器自学习概念。

事件概述

1952年,IBM 的 Arthur Samuel 开发了世界上第一个自学习跳棋程序。这个程序不仅能下跳棋,还能通过分析对局不断提高自己的水平。Samuel 引入了"机器学习"(Machine Learning) 这一术语,并设计了关键的技术创新:从残局倒推的学习方法和基于博弈树搜索的评估函数。到1962年,这个程序已经能够击败跳棋冠军。Samuel 的工作是机器学习领域的开创性贡献,展示了计算机可以通过经验改进性能。

深度学习笔记

背景、原理、影响与要点,一次读懂这个事件

约 3 分钟读完

背景与脉络

1952 年,IBM 的 Arthur Samuel 在 IBM 701(公司首批商用机之一)上写出跳棋程序。他本是无线的电机工程师而非棋手,选择跳棋而非象棋,是因为规则更简单、分支更少,便于把精力集中在“让程序自己变强”上。当时主流思路是手写规则与搜索,Samuel 却想验证一个更大胆的设想:能否给机器一套评价函数与试错机制,让它不靠人类逐条教招,而是通过对弈自我改进。这一动机直接催生了“机器学习”这一术语与范式。1956 年该程序上电视演示,轰动一时,也令 IBM 股价应声上涨。

核心要点

  • 11952 年 Samuel 在 IBM 701 上完成首个跳棋程序,1955 年加入学习机制。
  • 2基于 Shannon 的 minimax,用“评分多项式”对各局面打分。
  • 3机械学习(rote learning):记住见过的局面及其回传值,等效加深搜索。
  • 4泛化学习:两副本自对弈,按结果微调评估函数权重,逼近 TD 思想。
  • 5早期即实现类似 α-β 剪枝的搜索截断,缓解 701 内存不足。
  • 61962 年程序战胜康涅狄格州跳棋冠军 Robert Nealey。

原理与技术细节

Samuel 的程序靠对当前局面做有限层前瞻搜索,用“评分多项式”(线性函数近似)给终局局面打分。它沿用 Shannon 的 minimax:自打分叶节点逆向回传,每个局面的取值等于“假设对手也用同样准则”时的最优着法对应的分数;Samuel 称之为“回传值”。两种学习机制是其精髓。其一为机械学习:把每个见过的局面连同其回传值存表,再遇时直接取用,等于把此前多次搜索的结果“缓存”下来,等效加深了搜索;并对每层回传做微小折扣,使程序偏向“更快赢、更慢输”的路径。其二为泛化学习:让程序两个副本(Alpha、Beta)大量自对弈,按“相邻局面估值应一致”的原则微调特征权重——这正是后来时序差分学习的雏形。

影响与后续

Samuel 的工作是最早成功的自学习程序之一,证明机器能在无人显式编程每一步的情况下变强。其“评分函数 + 自对弈调权”的思想,正是现代强化学习(特别是 Sutton 与 Barto 的时序差分学习、Tesauro 的 TD-Gammon)的先声。局限是程序始终未达人类大师水平,且泛化学习缺乏终点回报,需人为固定“子力优势”权重以防学到无用的恒等估值。它也为“机器学习”一词的诞生铺路(见同名事件)。

学习要点

  • “学习”可理解为不断改进一个能打分的评价函数,而非记忆答案。
  • 自对弈让机器从胜负反馈中自我提升,是强化学习的雏形。
  • 没有正确目标信号,学习可能收敛到“什么都没学到”的平凡解。

术语表

机械学习Rote learning

把已见局面与其 minimax 回传值存入表,再遇时直接取用,等效于加深搜索。

评分多项式Scoring polynomial

Samuel 用以对棋局打分的线性加权和函数,其权重由自对弈结果不断调整。

时序差分Temporal-difference

用后继状态估值之差来更新当前估值的学习思想,Samuel 的泛化学习已暗含其雏形。

相关事件