视频链接: https://youtu.be/4PyWLgrt7YY?si=JfjDxLeTtmSp7Vuo
欢迎回来。在这个视频中,我们将使用强化学习来掌握围棋。下围棋时,你轮流在棋盘上放置棋子。目标是包围对手并控制领地。看起来很简单,但可能性的空间使得它比国际象棋更难掌握。
在2016年,一个名为AlphaGo的计算机程序击败了世界顶级围棋选手。这是人工智能领域的一个重要里程碑。
AlphaGo基于两个重要理念。首先,它通过分析数千场之前的比赛向人类专家学习。其次,它与自己进行了数百万场比赛,使用强化学习不断提高。
我们将从头开始。我们应该在哪里放置第一颗棋子?让我们咨询一下专家。这里有三场历史上最优秀的围棋选手的比赛。你会注意到他们都从右上角开始,但这只是三场比赛。让我们下载一些其他的比赛,再多一些。这是自1941年以来日本职业选手进行的10000场比赛。让我们看看他们的开局走法。超过一半的比赛以这一步开始,其余的多数从这里开始。我们将不太流行的走法显示为更透明。现在,假设我们选择从这里开始。在5514场以这一步开始的比赛中,这是白棋的走法分布。接下来,让我们再次选择最受欢迎的一步。我们可以使用相同的策略来选择接下来的几步。酷。我们已经创建了一个围棋程序。你所做的就是模仿大多数专家在完全相同的情况下所做的。
但有一个大问题。在十几步之后,我们只剩下原始10000场比赛中唯一一场匹配的比赛。事实证明,围棋比赛有点像雪花。没有两场比赛是完全相同的。所以记住之前的比赛对你没有帮助,除了最初的几步。
我们需要一种更好的方法来预测好的走法。让我们训练一个策略,它以棋盘的当前状态为输入,并输出361种可能动作的概率。每个动作对应于在棋盘上的某个位置放置一颗棋子。
AlphaGo使用了一个有13层的神经网络,并在人类专家的数百万步走法上进行训练。你可以使用这个神经网络来玩完整的比赛,而且它的表现相当不错。它已经可以击败大多数业余玩家。这很酷。
但要击败专家,程序需要像专家一样思考。职业围棋选手可以规划未来几十步的走法。
考虑这个场景。如果你是白棋,你可能会认为你应该走这里以防止黑棋包围你,但接下来黑棋会走这里,然后你将不得不走这里来救你的两颗棋子。如果你继续这样走下去,最终你会失去所有这些领地。这种模式被称为“后手”,看起来不妙,对吧?
但到底有多糟糕呢?好吧,假设我们从这个状态开始模拟100场不同的比赛。白棋每一场都输了。我们说这个状态对白棋的价值是零。
专家可以提前规划以避免这样的糟糕结果。为了了解这是如何运作的,让我们回到“后手”开始时的这个时间点。这对白棋来说是一个好状态还是坏状态?好吧,如果你从这个状态开始模拟100场比赛,白棋赢了57场,价值为0.57。这相当不错。这个价值函数提供了一种给状态打分的方法,它对规划走法非常有用。
像AlphaGo这样的程序使用搜索树来提前规划。这个节点代表棋盘的当前状态。白棋下一步走,从左上到右下,每个可能的走法都有一个分支。接下来黑棋走,引入更多分支,依此类推。树中的每条路径代表一种走法序列。我们只有时间探索其中的几条路径。我们应该选择哪些路径?
AlphaGo使用两种策略来优化搜索。
首先,它使用专家策略。我们刚刚训练它优先考虑最有希望的分支。这些走法都有很高的概率。
其次,它使用价值函数来限制搜索的深度。价值函数提供了在不模拟整个比赛的情况下获胜的可能性。
你可能会问,为什么要搜索所有路径?直接从根节点选择价值函数最高的走法不就好了?答案是,价值函数只是近似值。它可能并不准确,所以最好在比赛中尽可能多地进行搜索。
价值函数非常重要。它们越准确,你的程序获胜的概率就越高。在这些模拟中,我使用了gnugo,一个开源的围棋程序。
AlphaGo使用了一种更先进的价值估计方法。AlphaGo从走法策略开始。我们从人类专家那里学习。它只为一方使用这种策略,这里是白棋,而为黑棋使用另一种固定的策略,其权重是固定的。
现在,我们通过强化学习来优化白棋的策略。这就像我们在第一部分中对乒乓球游戏所做的那样。使用当前策略进行一整局游戏。如果赢了,白棋的所有走法都会得到加强。如果输了,这些走法会受到惩罚。AlphaGo重复这种方法,通过与自己进行数千局游戏来改进策略。它还会尝试不同的对手策略,以积累与各种对手对弈的经验。
现在,我们模拟了许多胜利和失败。我们可以利用这些信息来计算价值函数。例如,这个状态有两局胜利和两局失败经过它。所以我们估计从这个状态获胜的概率是二分之一,而这个状态有三局中两局胜利。
但你会注意到,大多数状态根本没有被访问过。我们如何估计未见过状态的价值?嗯,我们可以进行更多的模拟。AlphaGo进行了3000万次模拟。这听起来很多,但19x19的围棋棋盘有10的170次方个有效状态。这是一个天文数字。这也是围棋如此具有挑战性的原因之一,为了估计未见过状态的价值,我们将使用我们的老朋友——神经网络。3000万次自我对弈为我们提供了大量训练数据来训练我们的价值网络。这非常酷。
想想看,职业选手通过与他人对弈积累经验。你可能一生中会下几千盘棋。AlphaGo只需几天时间,通过不断与自己对弈,就能获得类似的经验。这就是强化学习的魔力。
总结一下,AlphaGo的工作分为两个阶段。首先,它从人类专家的棋谱中自动学习。然后,它通过与自己进行数百万次对弈,利用强化学习不断提升水平。
就像我们在第一部分中玩乒乓球游戏一样,完全可以完全跳过第一步,仅依赖强化学习。这就是AlphaZero,来自DeepMind的一种更新、更先进的方法。它的表现甚至更好。敬请期待第三部分,了解强化学习如何被用于训练ChatGPT。