从围棋AI到自动驾驶

从围棋AI到自动驾驶
2023年08月18日 17:00 大成基金

本文从偏技术的角度分析了机器学习非常有前景的一个方向:强化学习(Reinforcement Learning),包括通过分析其著名的应用AlphaGo来了解强化学习的核心思想,并给出应用展望。

1

机器学习简介

机器学习就是找到能够完成特定的任务,即给定输入与给出输出中间的那个函数f(x)。机器学习的一般有三个步骤:Function(设定一个架构,即model)、Define Loss(定义学习样本与损失函数)、Optimization(最小化损失函数,以得到最优模型)。

图1:机器学习的标准框架

资料来源:台湾大学

举个最简单的例子,多元线性回归就是一种机器学习的model。回归任务的输入是一个x向量,输出为一个y值。按照机器学习一般框架来说:Function(y = W·X + b);Loss:监督学习方法(残差平方和最小);Optimization:梯度下降(机器学习基本上都是通过Gradient Descent求数值解,最小二乘是解析解)。结果:我们能够通过对特定样本的监督学习,得到线性回归模型中最优化的W与b(参数),这个模型可以用来处理新的x向量,输出对应的y,完成回归任务。

图2:多元线性回归作为机器学习模型

资料来源:台湾大学

监督学习指的是在模型的训练数据中,我们同时知道样本的input与目标output(label)。在三种机器学习常见任务中:1)分类任务(输入多个向量、输出一个离散值):比如图像识别中,训练集中图像已经被标记为猫或狗;2)回归任务(输入多个向量、输出一个连续值):比如线性回归中的训练集中,有一组x一定有对应的y;3)Sequence to Sequence任务(输入多个向量、输出多个向量):比如机器翻译中,训练集中的每一句英文都被标记了对应的中文翻译。

使用监督学习可以比较方便地构建损失函数,即只要让模型生成的答案和标准答案(label)越接近就越好。就像回归中,我们最小化的目标是。

图3:三种机器学习的方法:非监督学习、监督学习、强化学习

资料来源:台湾大学

2

围棋AI

下围棋是什么任务?对于每一步来说,围棋都可以看作一个分类任务(即对所有的361个点来说,下一步应该落在哪一点)。应对这个问题,传统的思路为暴力搜索穷举(Monte Carlo Tree Search),然而受限于算力,这种方法能当国际象棋的冠军,却无法解决围棋问题。Google DeepMind在16年1月发表于Nature的Mastering the game of Go with deep neural networks and tree search论文中提出了新的围棋机器学习办法,这就是当年3月4:1击败李世石的AlphaGo。

图4:AlphaGo的神经网络训练架构。首先使用人类棋谱去训练一个Rollout policy network,并训练了一个SL policy network,之后使用强化学习(Reinforcement learning)去增强SL policy network能力得到RL policy network,最后再用RL policy network训练了一个Value network(价值网络)。

资料来源:DeepMind

AlphaGo Fan训练一、监督学习下的快速走子策略(fast rollout policy)

快速走子策略(rollout policy)主要强调快,其精度较低,思想是输入棋谱(Tygem 服务器中8百万个人类棋局)的局部特征,通过训练一个线性模型(softmax),得到一个快速走子策略(各个落子点位的概率向量),然后用这个策略不断走棋就可以推演至终局。因此采用Monte Carlo Tree Search叠加Rollout policy可以快速推演在某个地方落子后若干可能情况的终局,平均后即可以给出在某处落子的胜率。

图5:Rollout   Policy是一个简单的线性模型,可以快速给出在某一个地方走子的胜率

资料来源:DeepMind

AlphaGo Fan训练二、监督学习下的策略网络(policy network)

基于KGS的三千万个棋局(输入的特征如下表),DeepMind团队训练了一个13层的Policy Network(使用卷积神经网络[1])。这个网络可以用来预测专家下一步的走子,能够达到57%的精确度。

表1:神经网络input features,可以看到输入的feature较多较复杂(共48层)

资料来源:DeepMind

图6:AlphaGo的Policy Network能得到走下一步应该走哪个位置的概率

资料来源:DeepMind

AlphaGo Fan训练三、强化学习升级策略网络(policy network)

图7:强化学习(Reinforcement Learning, RL)

上图是强化学习的一般情形:一个Agent(此处为AlphaGo)在每个时间点(step)会面对一个state/observation(如当前的棋局)。通过提取各种feature作为输入,然后输出一个Action(各个落子点位的概率)给Environment(此处为棋局的对手方,可以是人或机器)。Environment会再产生下一个state给Agent,然后不断循环下去。我们需要训练的就是Agent产生Action的这个模型,损失函数定义为Reward,如果棋局胜利,reward就是正数,然后我们通过最大化这个reward来训练模型。

下图为强化学习的另一种表述:注意每个s(state)都会让actor (agent)产生一个a(action),我们的model目标是让reward最大。强化学习比较厉害的点是:可以在实践中搜集训练数据(不断试错)。

资料来源:台湾大学

对于AlphaGo来说,强化学习的对手方(Environment)是上一版本的自己,即Previous Iteration of the Policy Network(强化学习的policy network是不断更新的,这相当于自己和自己下棋中不断进化。当然最初的版本是监督学习生成的policy network)。在这种架构下,强化学习的policy network在一次次训练中越来越强,最终RL下的Policy Network对SL的Policy Network下棋达到了80%的胜率。

AlphaGo Fan训练四、强化学习下的价值网络(Value Network)

拥有了RL Policy Network,我们假设对局双方都用RL Policy Network来对弈,隐含假设为RL Policy Network是双方的最优策略。那么我们针对s局面任意落子点,只要让这个RL Policy Network一直互相对弈、重复多次获得许多的结果,然后对这些结果求一个平均值,就能得出在s局面这一落子点的Value(价值,或叫做胜率)。

图8:价值函数的定义

资料来源:DeepMind

图9:AlphaGo的Value Network能得到走每一个位置的估计胜率(越深的地方胜率越高)

资料来源:DeepMind

总结:AlphaGo Fan一共训练了四个神经网络:简单的rollout policy(用于快速预测人类专家下一步走子位置)、SL policy network(用于预测人类专家下一步走子位置)、RL policy network(SL policy network自主对弈增强版)、Value network(基于 RL policy network的走子胜率评价网络)。

AlphaGo Fan实战一、在任意阶段如何模拟

图10:AlphaGo做模拟的过程,这是一个叠加机器学习的Monte Carlo Tree Search的过程。b:看到一个局面后,首先根据SL policy network得到下一步可能落点的先验概率,这个过程可以不断延伸下去(Monte Carlo Tree Search过程);c.在满足特定条件以后,子节点开始做Evaluation,包括使用Value network(价值网络)与rollout policy(快速落子策略)两种办法。两者用特定方法相加形成Q,即在这一点落子的Action Value;d.对一个子节点下的所有孙节点的Q进行平均,为该子节点的Q

资料来源:DeepMind

上图中,我们对若干先验概率(SL policy network给出)较大的落子位置均进行了若干次模拟,通过backup可以得到在这些地方落子的Q(Action Value)。

(为什么要这么操作:”to narrow down the search”使之落子选择局限于SL policy network给出的落子概率较大的位置)

AlphaGo Fan实战二、在任意阶段如何决策

图11:AlphaGo的实战决策的公式:最大化Q(s,a)(被称作action value)与u(s,a)(被称做bonus value)的和。其中Action Value(Q)主要取决于value network与z(rollout network),而bonus value主要取决于P(s,a),即SL   Policy Network告诉的先验概率

资料来源:DeepMind

图12:AlphaGo的完整图例:实际上的决策是Rollout Policy, value   network(由RL policy network训练)以及SL policy network的综合。

资料来源:微软

讨论:人类的知识有多重要?

在AlphaGo中,其Value Network,Policy Network与Rollout Network都基于棋谱进行了训练。尤其是其强化学习的初始Policy Network也是基于监督学习训练出的SL Policy Network。这种架构意味着AI可以做的比人更好,但是其各种先验概率脱不开人类棋谱的知识,因此其很难进行棋谱外的奇思妙想。

那我们自然会想到,强化学习为什么要从一个基于人类知识的SL policy network开始,而不是由一个random state开始?这便是当前常用的强化学习方法,也就是DeepMind提出AlphaGo不到两年,于2017年10月再度在Nature上发表的Mastering the game of Go without Human Knowledge里提出的方法。这种新方法被称为AlphaGo Zero,是2017年5月击败了柯洁的迭代版本。

AlphaGo Zero 训练、单一神经网络的强化学习

AlphaGo Zero只有一个神经网络模型(使用在计算机视觉中高性能的ResNet架构),其输入输出都比AlphaGo Fan简单很多。输入为现在的棋盘状态以及过去七步落子记录(叠加一个记录黑或白的输入),输出有两个:在各个位置的落子概率p、在当前状态的胜率v。(相当于把AlphaGo的policy network与value network的输出融合进一个网络)

AlphaGo Zero的神经网络采用强化学习架构,但是不同于AlphaGo Fan,其博弈对手不是上一个更新版本的自己,而是观察两个比自己强的对手对弈来产生数据:更强的对手为使用Monte Carlo Tree Search增强神经网络(为什么一定更强?因为MCTS相当于你向前多看了好几步、进行了多次模拟以后得到的落子概率p与胜率v;为什么这样设计?让强化学习的效率更高,获取的训练数据更有意义)

图13:AlphaGo   Zero的训练过程。图a:AlphaGo Zero每一步(每一个state)都是用MCTS增强的神经网络来走子,最后产生终局结果z (reward);图b:一盘棋下完实际上得到了一系列的数据(主要是v,即你下完这一步以后最终是赢了还是输了);图c:损失函数,其意义是让z(实际reward)与v(我们要train的网络给出的胜率判断)尽量接近、让π(MCTS增强算法给出的落子概率)与p(我们要train的网络给出的落子概率)尽量接近

资料来源:DeepMind

AlphaGo Zero 训练结果

强化学习再训练一段时间后,可以获得比监督学习更好的能力(AlphaGo在训练72h后,对阵打败李世石的AlphaGo Lee获得了100:0的成绩)

图14:AlphaGo   Zero的能力随着训练时间增长不断攀升

资料来源:DeepMind

图15:AlphaGo   Zero的学习历程,横轴为训练小时数。图a:AlphaGo Zero学到了一些基本的定式;图b:AlphaGo Zero在右上角倾向的下法随训练时间增加而改变(注意47小时左右出现了著名的点三三);图c:AlphaGo Zero的行棋风格变化,可以看到很明显的战略改进

资料来源:DeepMind

3

对强化学习的讨论

强化学习(RL)是机器学习中前景广阔的技巧之一。算法从一个随机状态(或者基于部分基础知识的预训练模型)开始,通过与对手(Environment,可以是自然环境,也可以是对抗任务中的自己)不断进行“互动——反馈”搜集数据,完成自我强化。这很像人类学习的过程,给个目标(能用来设定reward)就可以学习,甚至有的时候目标都不需要,仅仅需要有反馈(也可以用来设定reward),就可以学会许多任务。

事实上,只要能评价reward,有一个environment能够给予反馈,且数据能够有办法搜集,在算力允许、产生的训练数据足够大情况下,任何任务强化学习都可以完成。RL的难点:1)有的场景数据很难搜集(RL需要海量样本学习才能进步);2)有些任务Reward设定比较艺术,否则很难train出好的模型(这个难题需要人的智慧);3)算力瓶颈。

目前RL看得到的应用:打游戏(RL最初的应用之一,reward清晰,用RL基本上能在所有电子游戏里战胜人类)、科研、AIGC(如NLP领域的GPT使用RL进行finetune成为ChatGPT)、工业自动化(如机器人机器人运动算法)、自动驾驶(主要是决策器)等等。举例来说:工业机器人运动算法的实现难度相对较低,因为environment较简单(自然或模拟仿真环境),数据搜集较简单(无论是在自然环境还是模拟仿真环境中);自动驾驶的实现难度较高,因为很难构建一个environment(模拟仿真环境难构建、真实试验中难以进行多次试错学习)。

图16:GPT使用监督学习与强化学习进行finetune,成为ChatGPT

资料来源:台湾大学

特别注意的是,强化学习与大模型并不冲突。大模型(pre-trained model)是基于神经网络与transformer架构,通过(半)监督学习手段而训练的模型。而强化学习与“监督学习”是并列的,其架构也可以是神经网络或transformer。因此,目前主流的语言大模型都会在半监督学习后,使用强化学习进行微调,这种前沿技术被称为RLHF (reinforcement learning from human feedback)。

图17:目前看到的RL能使用的领域

资料来源:微软

图18:量化投资领域的RL。华泰金工某强化学习策略,回测年超额收益达到了37%

资料来源:浙商证券、华泰证券

4

强化学习需要多少算力

强化学习发展的瓶颈之一同样是算力。OpenAI测算训练AlphaGo Zero所需的算力约为1800 Petaflops/s-day[2],相较而言,训练1750亿参数的GPT-3所需的算力也只要3640 Petaflops/s-day。因此可以说强化学习是被低估的算力消耗者。

强化学习需要算力的原因,是因为在从零开始学习某项任务的过程中,需要采集大量的样本进行海量次数的训练,而且很多样本并不高效。

图19:模型与所需算力发展史(截至2018年)

资料来源:OpenAI

图20:华为测算的Google alpha-rank的Multi-Agent强化学习架构所需要的算力,1 trillion budget是19年世界上所有算力的总和

资料来源:华为

[1] 卷积神经网络可以用来处理分类任务。输入为若干个图像(plane),输出为一个概率向量

[2] 一块A100的实际算力约为0.16 PFLOPS,因此要1个月训练出AlphaGo Zero理论上需要375块A100

财经自媒体联盟更多自媒体作者

新浪首页 语音播报 相关新闻 返回顶部