PDF 物理页索引 3220
文件中的第 3221 页 · 印刷页码:未识别
前几章中学习算法都由“即时满足”这一原则引导:每个行为,无论是标记垃圾邮件,还是购买股票,都会从“老师”那里得到即时奖励(或者处罚)。有一个机器学习的子域致力于这样的算法:进行主动探索,偶然得到奖励,然后弄清楚将来怎样才能再得到奖励。这很像婴儿到处爬和把东西放到嘴里。
这个过程称为“强化学习”,你的第一个家用机器人可能会经常用到这种方法。如果你刚打开罗比的包装,并启动它,就让它来为你煎鸡蛋和培根,它可能需要点时间。然而,在你工作的时候,它会自己探索厨房,注意各类东西的位置,以及你用哪种炉子。你回来的时候,饭菜已经做好了。
强化学习的一个重要先驱是跳棋游戏程序,这是IBM的研究员阿瑟·塞缪尔于20世纪50年代编写的。棋盘游戏是强化学习问题的典范:你得走好多步棋,却得不到任何反馈,奖励或惩罚都在最后一刻揭晓,其形式也就是赢和输。塞缪尔的程序可以自学下棋,而且下得和大多数人一样好。它不会直接学棋盘上每步棋该怎么走,因为这太困难;相反,它会学习如何评价每个棋的位置(从该位置出发,赢的概率有多大),然后选择走能到达最佳棋位的那一步。起初,它知道如何进行评价的唯一位置就是最后的结果:赢、平局或是输。一旦它知道某个特定位置能赢,也就知道哪些位置有利于让它达到这个位置。IBM前总裁小托马斯·沃森就预测,该程序被证实之后,IBM的股票会上涨15个点。最后,它被证实了。这个教训并没有被IBM忽略,后来IBM制造了一个国际象棋冠军和一个《危险边缘》冠军。
强化学习的首要思想是:并不是所有的状态都有奖励(正面或者负面),但每种状态都会有价值。在棋类游戏中,唯独最后的位置才有奖励(比如1、0、–1,分别代表赢、平局或者输)。虽然其他位置没有即时奖励,但有价值,因为通过这些位置可以得到最后的奖励。因为某个位置在某步棋时可起到“将死”(棋类术语)的作用,从实践角度看,这相当于赢一盘棋,所以有较高的价值。我们可以将这种推理方式传播至好的与坏的开场走法中,即使在那个距离内连接完全不明显。在视频游戏中,奖励通常是分数,而一种状态的价值就是从该状态开始你能积累的分数。在现实生活中,即时奖励要好于未来奖励,投资也一样,未来奖励的回报率可能会打折扣。当然,奖励取决于你选择什么行为,强化学习的目标往往是采取那个能获得最丰厚奖励的行为。你该不该打电话约你的朋友出来约会?这可能会是一段美好关系的开始,或者你只会得到一个痛苦的回绝。即使你的朋友答应约会,这个约会的结果可能好也可能坏。从某种程度上说,你得概括所有未来可能会走的道路,然后现在做决定。强化学习通过估算每种状态的价值来做到这一点,从该状态开始你所期望得到的全部奖励,然后选择能将奖励最大化的行为。
PDF 物理页索引 3221
文件中的第 3222 页 · 印刷页码:未识别
假设你在一条隧道中行走,像印第安纳·琼斯那样,然后你到了一个三岔口。地图显示左边的隧道通往宝藏,右边的则通往蛇洞。你所站位置的价值(就在三岔口前)也就是宝藏的价值,因为你会选择往左走。如果你总是选择最佳可能的行为,那么某个状态的价值与成功状态的价值的差异,仅仅在于你因实施该行为而获得的即时奖励(如果有)。如果我们知道每种状态的即时奖励,就可以利用这个观察来更新相邻状态的价值,以此类推,直到所有状态都会有一致的价值。宝藏的价值会沿着隧道反向传播,直到到达岔路口或者超过这个地方。你一旦知道每种状态的价值,就可以知道在每种状态中该采取什么行动(能够将即时奖励和最终状态价值最大化的行动)。这很大程度是由控制论理论家理查德·贝尔曼解决的,但强化学习中真正的问题会在你没有某区域的地图时出现。你唯一可做的就是探索并发现奖励在哪里。你可能发现宝藏,也可能陷入蛇洞。每当你要采取行动时,就会注意即时奖励和最终状态,这很大限度上可以由监督式学习来实现。但你还是得更新你采取行动后的状态的价值,使其与刚刚观察的价值一致,也就是说,你获得的奖励加上所处新状态的价值。当然,这个价值可能并不准确,但如果你已经花了足够长的时间来边徘徊边做这件事,那么最终会停在所有状态的正确价值以及对应行动上。简言之,这就是强化学习。
PDF 物理页索引 3222
文件中的第 3223 页 · 印刷页码:未识别
请注意强化学习算法如何面对我们在第五章遇到的利用—探索困境:为了使奖励最大化,你很自然地想选择能达到高价值状态的行动,但这可能会阻止你发现其他价值更高的奖励。强化学习算法解决这个问题的方法是时而选择最佳行动,时而随机选择(为此,大脑甚至似乎有一台“噪声发生器”)。早些时候有很多可以学习的东西,进行大量探索就会很有意义。一旦你发现了某个区域,最好集中精力来使用它,这就是人一生要做的事:儿童会去探索,成年人想着如何使用(除了科学家,因为他们是永远的孩子)。儿童的游戏比表面看起来要严肃。如果进化过程产生一个没有用的生物,并在出生后的几年给其父母带来沉重负担,那么付出这么大的成本一定是为了更丰厚的利益。实际上,强化学习就是一种加速进化过程——尝试、丢弃,然后在单个生命的一生而不是几代中改进行动——有了这个标准,它的效率就会很高。
对于强化学习的研究自20世纪80年代早期才正式开始,马萨诸塞大学的里奇·萨顿和安迪·巴尔托参与了研究工作。他们认为学习取决于与环境的互动,这一点很关键,但监督算法并没有发现这一点;而且他们在动物习得心理学领域找到灵感。萨顿成为强化学习的主要倡导者。另一个关键进展发生在1989年,当时剑桥大学的克里斯·沃特金斯在儿童学习实验发现的推动下,实现了强化学习的现代形式,即在未知环境中进行最优控制。
然而,到目前为止,我们看到的强化学习算法还不是很现实,因为它们在某个状态中不知道该做什么,除非它们之前进入过那种状态,而在现实世界中,并没有哪两个情形是完全相似的。我们需要对之前所处的状态到新状态进行概括。幸运的是,我们已经知道该如何做到这一点:用强化学习来将之前见过的一个监督式学习算法(例如,多层感知器)包括进来。这时神经网络的工作就是预测状态的价值,而反向传播的误差信号就是预测价值与所观察到的价值之间的差别。还存在一个问题:在监督式学习中,某个状态的目标价值总是一样的;但在强化学习中,它会不断变化(这是达到附近状态的结果)。因此,带有归纳性的强化学习往往无法确定稳定的解决方法,除非内部学习算法很简单,就像线性函数那样。虽然如此,带有神经网络的强化学习已经取得一些显著成就。早期的成就包括制造出具备人类水平的西洋双陆棋选手。最近的一种强化学习算法,来自DeepMind(伦敦的一家创业公司),在电视体育游戏及其他简单的大型电玩中打败了一位专家级的人类选手。它利用深层网络来从控制台屏幕低像素的动作中预测其价值。有了端对端的视野、学习和控制,该系统与人工大脑至少有一点相似之处。这可以解释为什么DeepMind是一家没有产品和利润,员工也寥寥无几的公司,但谷歌却向它投了5亿美元。
PDF 物理页索引 3223
文件中的第 3224 页 · 印刷页码:未识别
除了游戏,研究人员还可以利用强化学习来平衡极点、控制简笔画的体操运动员、使汽车倒车入位、驾驶直升机颠倒飞行、管理自动电话对话、分配手机网络中的频道、调度电梯、安排航天飞机货运装载等。强化学习也对心理学和神经科学产生了影响。大脑利用神经递质多巴胺来传播期望奖励与实际奖励之间的区别。强化学习解释了巴甫洛夫条件反射作用,但不像行为主义,它允许动物有内部心理状态。觅食的蜜蜂会利用它,在迷宫中找到奶酪的老鼠也是如此。你的日常生活由一连串你很少注意到的、由强化学习形成的奇迹组成。你起床、穿衣服、吃早餐,然后开车去上班,这些过程中你一直在思考别的事情。实际上,强化学习会不断精心安排和调整这个奇妙的动作交响曲。强化学习片段(为习惯)组成大多数你做的事。当你觉得饿了时,会走到冰箱前,拿一点零食。正如查尔斯·杜希格在《习惯的力量》一书中表明的那样,理解并控制由线索、日常、奖励组成的循环关系是成功的关键,不仅对个人,而且对企业甚至整个社会来说都是这样。
PDF 物理页索引 3224
文件中的第 3225 页 · 印刷页码:未识别
作为强化学习的创始人,里奇·萨顿是最具有热情的。对于他来说,强化学习就是终极算法,而且解决了这个问题就相当于解决了人工智能问题。但克里斯·沃特金斯却并不满意。他看到许多儿童能做但强化学习算法做不了的事:解决问题,经过几次尝试之后能更好地解决问题,制订计划,获取逐渐抽象的知识。幸运的是,对于这些较高水平的能力,我们也有相应的学习算法,其中最重要的就是组块算法。
熟能生巧
学习的目的就是为了更好地实践。你现在可能记不得学着系鞋带有多难了。一开始,你完全学不会,虽然当时你已经5岁了。接着,你的鞋带松开的速度比你系的速度还要快。慢慢地,你学会更快、更好地系鞋带了,直到你不自觉地系鞋带。很多其他事情也是同样的道理,比如爬、走、跑、骑单车、开车、阅读、写作、算术、演奏乐器、进行体育活动、做饭和使用计算机等。讽刺的是,人在最痛苦时学到的东西往往最多。在早期,每一步都很艰难,你不断失败,即便你成功了,结果也并不会有多好。当你掌握高尔夫挥杆动作或者网球发球之后,可能会花几年完善这些技能,但这些年你取得的进步会比开始学时的前几周少很多。通过练习你会做得更好,但不会以恒定的速度进步:一开始你进步很快,接下来就没那么快了,最后变得很慢。无论是玩游戏还是弹吉他,技能提高时间曲线图(你做某事的表现或者做某事所花费的时间)有一个非常特殊的形式(见图8–5)。
PDF 物理页索引 3225
文件中的第 3226 页 · 印刷页码:未识别
PDF 物理页索引 3226
文件中的第 3227 页 · 印刷页码:未识别
这种类型的曲线被称为“幂法则”(a power law),因为随着时间达到某负幂时,表现会出现变化。例如,在图8–5中,完成所需的时间与尝试的次数的负二次方成正比(或者相当于1除以尝试次数的平方)。几乎每项人类技能都会遵循幂法则,不同的幂会对应不同的技能(相反,Windows系统则不会随着实践次数的增多而变快——这是微软该解决的问题。)
1979年,艾伦·纽厄尔和保罗·罗森布鲁姆开始探索这个所谓的“幂法则”实践存在的原因。纽厄尔是人工智能的创始人之一,也是主要的认知心理学家,而罗森布鲁姆则是他在卡内基–梅隆大学的研究生之一。当时,没有哪个实践模式可以解释幂法则,纽厄尔和罗森布鲁姆怀疑这可能与组块有关。组块是一个来自感知与记忆心理学的概念。我们以组块的形式来感知并记住东西,而在任意给定的时间内(根据乔治·米勒的经典论文的结论为7±2),我们只能通过短暂记忆来记住这么多组块。关键是将信息聚集成组块可以让我们处理得更多,否则我们处理不了那么多信息。这就是电话号码有连字符的原因:1–723–458–3897比17234583897要好记得多。赫伯特·西蒙(纽厄尔的长期合作伙伴以及人工智能的共同创始人)早期已经发现,新棋手和专业棋手的主要区别在于,新棋手一次记一个象棋位置,而专业棋手则看到涉及多个位置、更大的模式。要提高国际象棋技能主要涉及获取更多、更大这样的组块。纽厄尔和罗森布鲁姆假设,在掌握所有技能而不仅仅是下棋技能中,类似的过程在起作用。
在感知和记忆中,组块仅仅是一种符号,代表了其他符号的模式,就像AI代表人工智能。纽厄尔和罗森布鲁姆将这个思想运用到纽厄尔和西蒙早期创建的问题解决理论中。纽厄尔和西蒙让实验对象解决问题,例如,在黑板上利用一个数学公式推导出另外一个数学公式,同时大声描述他们如何得到这个公式。他们发现,人类解决问题的方式是将问题分解为小问题,再将小问题再分解为更小的问题,然后系统地减少初始状态(比如第一个公式)与目标状态(第二个公式)之间的差异。然而,这样做需要找到能起作用的行动顺序,这需要时间。纽厄尔和罗森布鲁姆的假设是,每次当我们解决一个小问题时,会形成一个组块,这样我们就可以直接从解决问题前的状态进入解决问题后的状态。这种意义下的组块有两个部分:刺激(你从外部世界或者短暂记忆中识别出的模式)和反馈(你因此而执行的行动顺序)。一旦掌握一个组块,你就会将其储存在长期记忆中,下次你解决同样的小问题时,就可以直接应用该组块,会节省寻找的时间。这个过程在所有水平层面都会发生,直到你找到一个能解决所有问题的组块,并且能够自行解决这些问题。为了系好你的鞋带,先打结,然后用一端栓个套,用这个套绕住另一端,然后将其从中间的洞穿过。对于5岁的孩子来说,这些并不简单,可一旦你掌握相应的组块,就差不多学会了。
PDF 物理页索引 3227
文件中的第 3228 页 · 印刷页码:未识别
纽厄尔和罗森布鲁姆将他们的组块程序应用于解决一系列问题,测量它在每次尝试中花费的时间,这就弹出一系列幂法则曲线。但这仅仅是开始,接下来他们将组块并入“猛增”(Soar)理论中,这是纽厄尔和另一个学生约翰·莱尔德一起创建的一般认知理论。“猛增”程序不仅为某个预设了等级的目标而努力,当每次遇到障碍时,还都可以定义并解决新的子问题。一旦它形成新的组块,“猛增”程序就会对其进行一般化,以应用到相似的问题中,这与逆向演绎的方式类似。除了幂法则实践,“猛增”中的组块最后成为许多学习现象的良好模型。通过对数据和类推法进行组块,它甚至可以应用到掌握新知识中。于是纽厄尔、罗森布鲁姆、莱尔德做出这样的假设——组块是学习所需的“唯一”机制,换句话说,就是终极算法。
作为典型的人工智能类型,纽厄尔、西蒙及其学生和拥护者都非常相信问题解决的重要地位。如果问题解决者很强大,那么学习算法就会依赖其能力而变得简单。的确,学习只是另外一种问题的解决方式。纽厄尔和同伴共同努力,将所有学习简化为组块,将所有认知简化为“猛增”程序,最后他们失败了。其中一个问题是,尝试这些步骤的成本变得很高,程序变得越来越慢。从某种程度上说,人类要避免这一点的发生,但到目前为止,该领域的研究人员还找不到解决方法。最重要的是,尝试将强化学习、监督式学习,以及别的一切简化成组块,基本上会制造更多的问题,而不会解决问题。最终,“猛增”的研究人员承认失败,然后将那些其他类型的学习作为分离机制并入“猛增”。虽然如此,组块还是学习算法的典型例子,受到心理学的启发,还是真正的终极算法。无论它最后变成什么,肯定会分享其通过实践得到提升的能力。
PDF 物理页索引 3228
文件中的第 3229 页 · 印刷页码:未识别
组块和强化学习在商业中的应用不如在监督式学习、聚类或者维数简约中广泛,但是通过与环境互动进行的相似学习类型是掌握行动(或相应行动)的效果。如果现在你的电子商务网站主页的背景是蓝色的,你在想让它变成红色会不会提高销量,那么可以将红色网页用在10万个随机挑选的用户身上试试看,然后将结果与常规网站进行比较。这种手法称为A/B测试,起初主要用在药物试验中,之后运用到许多领域。在这些领域中,数据可以根据需要集中起来,从营销到对外援助。它还可以概括成一次性尝试许多变化组合,而不会忽略什么样的改变会带来什么(或者失去什么)。诸如亚马逊、谷歌之类的公司对此深信不疑,你可能已经不知不觉参与了几千项A/B测试。A/B测试证明常听到的批评言论的错误:大数据只对寻找相关关系有好处,对寻找因果关系则没用。除了哲学要点,掌握因果关系就是掌握行动的效果,而任何有数据流并能影响数据流的人都能做到这一点——从一岁孩子在浴缸中戏水到总统再次参加竞选。
学会关联
如果我们赋予罗比机器人在本书中提到的所有学习能力,它会变得很智能,但还会有点孤僻。它会把世界看成一群独立的物体,可以对其进行识别、操纵甚至预测,但它不理解世界是一张相互联系的网络。罗比医生会很擅长根据病人的症状来诊断其患有感冒,但无法猜想这个病人患的是猪流感,因为它和感染该疾病的人有过接触。在谷歌出现之前,搜索引擎会通过看它的内容来决定某网页是否与你的搜索相关——还有别的吗?布林和佩奇的观点是,与该网页相关的最明显标志在于,相关的网页会与它有链接。同样的道理,如果你想预测某个青少年是否有开始吸烟的危险,到目前为止,你能做得最有效的事就是调查他的好朋友是否吸烟。一种酶的形状与其分子形状的关系,就像锁与钥匙的关系一样不可分割。捕食者与猎物有缠绕很紧的属性,每种属性会进化出打败对方的属性。在所有这些例子中,了解一个实体的最佳方法——无论它是人、动物、网页还是分子——就是了解它如何与其他实体进行连接。这就需要一种新的学习方式:不会将数据当作不相关物体的随机样本,而是对复杂网络的一瞥。网络中的节点会互相作用;你对这个节点做了什么,会影响到其他节点,最后还会返回来对你进行影响。关联学习算法,正如它们的名字那样,也许不太有社交智能,但它们将是最好的东西。在传统统计学习中,每个人都是一座岛,与世隔绝;在关联学习中,每个人都是一块陆地,是主要大陆的一部分。人类是关联学习者,被相互连接起来,我们如果想让罗比成长为一个有知觉、擅长社交的机器人,就需要对它进行布线,然后连接。
PDF 物理页索引 3229
文件中的第 3230 页 · 印刷页码:未识别
我们面临的第一个困难就是,当数据变成整个大网络时,似乎就没有许多例子来学习了,只剩一个,而且这不够。朴素贝叶斯算法通过数发烧流感病人的数量来知道发烧是感冒的一种症状。如果它只能看到一位病人,可能会得出结论:流感总会引起发烧,或者不会引起发烧。这两个结论都是错的。我们想确认流感是传染性疾病,方法就是通过观察在社交网络中的感染模式——感染的人群在这边,没有感染的人群在那边——但我们只能看到一个模式,即使它处于70亿人的网络中,因此如何概括尚不清晰。关键在于要注意到,嵌入该网络中,我们有许多对人的实例。如果熟人与未曾相见的人相比,更有可能患流感,那么认识流感病人也会让你成为流感病人的可能性增大。