本文介绍了吴恩达在其创办的人工智能周讯《The Batch》上的一篇博文,总结了机器学习领域多个基础算法的历史溯源。
文章一开头,吴恩达回忆了自己在研究过程中做出的一个决定:
很多年前,在一个项目中,他在选择算法的时候,要在神经网络和决策树学习算法之间做出选择,考虑到计算预算,他最终选择了神经网络,放弃了很久以来的增强决策树。
这是一个错误的决定,“幸好我的团队很快改变了我的选择,项目成功了。”吴恩达说。
他感叹,不断学习和更新基础知识非常重要。与其他技术领域一样,机器学习领域也在随着研究人员的增多和研究成果的增长而发展。但一些基本算法和核心思想仍然没有被完全理解。以下贡献经得起时间的考验:
在吴恩达看来,这些算法和概念是很多机器学习模型的核心思想,包括房价预测器、文本-图像生成器(如 DALL E)等。
在这篇最新文章中,吴恩达和他的团队探讨了六种基本算法的起源、用途和演变,并给出了相对详细的解释。
这六种算法分别是:线性回归、逻辑回归、梯度下降、神经网络、决策树和K均值聚类算法。
线性回归:直线和狭义
线性回归是机器学习中的关键统计方法,但它并非不战而胜。它由两位才华横溢的数学家提出,但 200 年后,这个问题仍然没有得到解决。长期的争议不仅证明了该算法具有非凡的实用性,也证明了其本质上极其简单。
那么线性回归是谁的算法?
1805 年,法国数学家阿德里安-马里·勒让德 (Adrien-Marie Legendre) 在试图预测彗星位置时,发表了一种将一条线拟合到一组点的方法(天文导航是当时全球商业中最有价值的科学方向,就像今天的人工智能一样)。
图片说明:阿德里安-马里·勒让德的素描
四年后,24 岁的德国神童卡尔·弗里德里希·高斯坚称他自 1795 年以来一直在使用这种方法,但认为它太微不足道,不值得写出来。高斯的说法促使勒让德发表了一篇匿名文章,称“一位非常著名的几何学家毫不犹豫地采用了这种方法。”
卡尔·弗里德里希·高斯
斜率和偏差:当结果和影响结果的变量之间的关系呈直线时,线性回归很有用。例如,汽车的油耗与其重量呈线性相关。
迈向通用性的两步:该算法立即帮助航海家追踪星象,后来的生物学家(尤其是查尔斯·达尔文的表弟弗朗西斯·高尔顿)识别动植物的遗传特征。这两项进一步的发展释放了线性回归的广泛潜力。1922 年,英国统计学家罗纳德·费舍尔和卡尔·皮尔逊展示了线性回归如何适应相关性和分布的一般统计框架,使其在所有科学中都很有用。而近一个世纪后,计算机物联网的出现提供了数据和处理能力,可以更大程度地利用它。
处理模糊性:当然,数据永远无法完美测量,有些变量比其他变量更重要。这些现实生活事实促使人们采用更复杂的变体。例如,带正则化的线性回归(也称为岭回归,ridge return)鼓励线性回归模型不要过分依赖任何一个变量,或者更准确地说,均匀地依赖最重要的变量。
如果为了简单起见,另一种形式的正则化(L1 而不是 L2)会产生一个套索(压缩估计器),鼓励尽可能多的系数为零。换句话说,它学会选择具有高预测能力的变量并忽略其余变量。弹性网络结合了两种类型的正则化。当数据稀疏或特征看起来相关时,它很有用。
在每个神经元中:现在,简单的版本仍然非常有用。神经网络中最常见的神经元类型是线性回归模型,后跟非线性激活函数,这使得线性回归成为深度学习的基本构建块。
逻辑回归:遵循曲线
曾经有一段时间,逻辑回归仅用于对一件事进行分类:如果你喝了一瓶毒药,你会被贴上“活着”还是“死亡”的标签?时代已经改变,今天,不仅呼叫紧急服务为这个问题提供了更好的答案,而且逻辑回归成为了深度学习的核心。
毒物控制:
逻辑函数可以追溯到 19 世纪 30 年代,当时比利时统计学家 PF Verhulst 发明了它来描述人口动态:随着时间的推移,最初的指数增长爆发会随着可用资源的消耗而趋于平缓,从而产生典型的逻辑曲线。一个多世纪后,美国统计学家 EB Wilson 和他的学生 Jane Worcester 设计了逻辑回归来计算某种有害物质致死的可能性。
图片说明:PF Verhulst
拟合函数:逻辑回归将逻辑函数拟合到数据集,以预测在给定事件(例如,摄入士的宁)的情况下发生特定结果(例如,过早死亡)的概率。
更多结果:Verhulst 的工作发现了二元结果的概率,忽略了其他可能性,例如中毒受害者可能进入来世的哪一边。他的继任者扩展了算法:
图片说明:David Cox
多功能曲线:逻辑函数以相当高的精度描述了广泛的现象,因此逻辑回归在许多情况下提供了有用的基线预测。在医学中,它可以估计死亡率和疾病风险。在政治学中,它预测选举中的赢家和输家。在经济学中,它预测商业前景。更重要的是,它驱动各种神经网络中的一组神经元(其中非线性是 S 型函数)。
梯度下降:一切都走下坡路
想象一下黄昏后在山中徒步旅行,发现自己看不到下方的任何东西。而且手机电池没电了,所以你无法使用 GPS 应用找到回家的路。你也许可以通过梯度下降找到最快的路径。小心不要掉下悬崖。
阳光与地毯:梯度下降比通过陡峭的地形下降更有优势。1847 年,法国数学家奥古斯丁-路易·柯西发明了一种算法来近似恒星的轨道。60 年后,他的同胞雅克·阿达玛独立发展了它来描述薄而柔韧的物体(如地毯)的变形,这可能使跪地徒步变得更容易。然而,在机器学习中,它最常见的用途是寻找学习算法损失函数中的最小值点。
图片说明:奥古斯丁-路易·柯西
爬坡式下降:经过训练的神经网络提供了一个函数,该函数在给定输入的情况下计算期望的输出。训练网络的一种方法是迭代计算实际输出与期望输出之间的差异,然后改变网络的参数值以减少差异,从而最小化输出中的损失或误差。梯度下降会减少差异并最小化计算损失的函数。
网络的参数值相当于地形上的一个位置,而损失的是当前的高度。随着下降,网络计算接近期望输出的能力得到改善。可见性是有限的,因为在典型的监督学习情况下,算法仅依赖于网络的参数值和损失函数的梯度或斜率——即你在山上的位置和你下面的斜坡。
陷在山谷中:很遗憾你的手机死机了,因为算法可能没有把你推到凸山的底部。你可能会被困在一个由多个山谷(局部最小值)、山峰(局部最大值)组成的山谷中,事实上,图像识别、文本生成和语音识别等任务都是非凸的,已经开发出许多梯度下降的变体来处理这种情况。
例如,算法可能具有动量,有助于放大小幅波动,使其更有可能触底。研究人员设计了如此多的变体,以至于优化器的数量似乎与局部最小值的数量一样多。幸运的是,局部最小值和全局最小值往往大致相等。
最佳优化器:梯度下降是寻找任何函数最小值的明确选择。在可以直接计算精确解的情况下(例如,在具有大量变量的线性回归任务中),它可以近似一个值,并且通常更快、更便宜。但它在复杂的非线性任务中真正发挥了作用。有了梯度下降和冒险精神,您也许能够及时走出山区吃晚餐。
神经网络:寻找函数
让我们先把这个问题搞清楚:大脑不是一组图形处理单元。如果是的话,它运行的软件将比典型的人工神经网络复杂得多。神经网络的灵感来自大脑的结构:一层层相互连接的神经元,每个神经元都根据其邻居的状态计算自己的输出,由此产生的一系列活动形成了一种想法——或者对一张猫的照片的识别。
从生物到人工智能:大脑通过神经元之间的相互作用进行学习的想法可以追溯到 1873 年,但直到 1943 年,美国神经科学家沃伦·麦卡洛克和沃尔特·皮茨才利用简单的数学规则建立了生物神经网络模型。1996 年,美国心理学家弗兰克·罗森布拉特开发了该传感器,这是一种在打孔机上实现的单层视觉网络,目的是为美国海军打造硬件版本。
图片说明:弗兰克·罗森布拉特
越大越好:罗森布拉特的发明只能识别单线分类。后来,乌克兰数学家 Alexey Ivakhnenko 和 Valentin Lapa 通过将神经网络堆叠成任意数量的层来克服这一限制。1985 年,法国计算机科学家 Yann LeCun、David Parker 和美国心理学家 David Rumelhart 及其同事描述了使用反向传播来有效训练此类网络的方法。
在新千年的第一个十年,包括 Kumar Chellapilla、Dave Steinkraus 和 Rajat Raina(与 Andrew Ng 合作)在内的研究人员通过使用图形处理单元进一步推动了神经网络的发展,这使得越来越大的神经网络可以从互联网产生的海量数据中学习。
适用于每项任务:神经网络背后的原理很简单:对于任何任务,都有一个可以执行它的函数。神经网络是由多个简单函数组成的可训练函数,每个函数由单个神经元执行。神经元的功能由称为“权重”的可调参数决定。给定输入示例及其期望输出的这些权重和随机值,可以反复更改权重,直到可训练函数完成手头的任务。
黑匣子:虽然训练有素的网络可以幸运地完成其工作,但最终你读到的函数往往非常复杂——包含数千个变量和嵌套的激活函数——以至于很难解释网络。如何成功完成它的使命也非常困难。
此外,训练有素的网络的好坏取决于它所学习的数据。例如,如果数据集有偏差,那么网络的输出也会有偏差。如果它只包含猫的高分辨率图片,那么它将无法准确预测低分辨率图片。对高分辨率图像的响应是未知的。
一个常识:1958年,《纽约时报》在报道罗森布拉特发明传感器时,为人工智能的炒作开辟了道路,称“美国海军期望拥有一台可以走路、说话、看、写和自我复制的机器,以及一个意识到自己存在的电子计算机原型。”
虽然当时的传感器还达不到这个要求,但它也产生了许多令人印象深刻的模型:用于图像的卷积神经网络;用于文本的循环神经网络;以及用于图像、文本、语音、视频、蛋白质等的神经网络。基于机器学习的 Transformer 已经取得了惊人的成就,比如在下围棋方面超越了人类的表现,在诊断 X 射线图像等实际任务中接近人类的表现。然而计算油耗软件,它们对常识和逻辑推理的理解有限。这个问题仍然很难解决。
决策树:从根到叶
亚里士多德到底是怎样的“野兽”?这位哲学家的追随者,生活在公元三世纪的叙利亚的波菲利,想出了一个合乎逻辑的方法来回答这个问题。
他将亚里士多德的“存在范畴”从一般到具体地组合起来,并依次将亚里士多德置于每个范畴中:亚里士多德的存在是物质的,而不是概念的或精神的;他的身体是有生命的,而不是无生命的;他的思想是理性的,而不是非理性的。因此,他的分类是人类的。中世纪的逻辑教师把这个序列画成一个垂直流程图:早期的决策树。
数字差异:时间快进到 1963 年,密歇根大学社会学家 John Sonquist 和经济学家 James Morgan 在对调查受访者进行分组时首次在计算机中实现了决策树。随着自动训练算法的软件的出现,这种工作变得如此普遍,以至于决策树现在被用于包括 scikit-learn 在内的各种机器学习库中。
该代码由斯坦福大学和加州大学伯克利分校的四位统计学家历时 10 年开发而成,如今,从头开始编写决策树已成为机器学习 101 课程的一项家庭作业。
空中的根:决策树可以执行分类或回归。它从根部向下生长到树冠,将输入示例分类为两个(或更多)决策层次。想想德国医生和人类学家约翰·布鲁门巴赫主题:大约在 1776 年,他首次将猴子与猿类(不包括人类)区分开来,而此前人们一直将两者混为一谈。
这种分类取决于各种标准,例如动物是否有尾巴、胸部是窄还是宽、是直立还是蹲伏、以及智力如何。标准最终将动物分为两组。
进入前 10 名:鉴于布鲁门巴赫的结论(后来被查尔斯·达尔文推翻),即人类通过宽阔的骨盆、手和紧咬的牙关与猿类区分开来,如果我们想扩展决策树以不仅对猿类和猴子进行分类,而且还对人类进行分类会发生什么?
1986 年,澳大利亚计算机科学家 John Ross Quinlan 用 ID3 实现了这一目标,该算法扩展了决策树以支持非二元结果。2008 年,ID3 被选为 IEEE 国际数据挖掘会议十大数据挖掘算法之一。名为 C4.5 的扩展细化算法名列前茅。在创新猖獗的世界里,这就是持久力。
剥去树叶:决策树确实有一些缺点。它们很容易通过添加多个层次结构来过度拟合数据,从而使叶节点仅包含一个示例。更糟糕的是,它们容易产生蝴蝶效应:替换一个示例,长出的树会大不相同。
进入森林:美国统计学家 Leo Breiman 和新西兰统计学家 Adele Cutler 利用这一特性,于 2001 年开发了随机森林 - 一组决策树,每棵树都有独特的不同,对重叠的示例选择进行处理,并对最终结果进行投票。
随机森林及其同类算法 XGBoost 不太容易过度拟合,这有助于使其成为最受欢迎的机器学习算法之一。这就像询问亚里士多德、波菲利、布鲁门巴赫、达尔文、简·古德尔、黛安·弗西和其他 1,000 名动物学家,确保您的分类尽可能准确。
K 均值聚类:群体思维
如果你在聚会上与其他人站得很近,那么你们很有可能有共同点。这就是使用 k 均值聚类对数据点进行分组的理念。无论这些群体是通过人为因素还是其他力量形成的,该算法都会找到它们。
从爆炸到拨号音:美国物理学家斯图尔特·劳埃德 (Stuart Lloyd) 是贝尔实验室标志性创新工厂和发明原子弹的曼哈顿计划的校友,他于 1957 年首次提出使用 k 均值聚类来分发数字信号中的信息。这项工作直到 1982 年才发表:
论文地址:~roweis/csc2515-2006/readings/lloyd57.pdf
与此同时,美国统计学家爱德华·福吉(Edward Forgy)于 1965 年描述了一种类似的方法,并因此得名“Lloyd-Forgy 算法”。
寻找中心:考虑聚类成志同道合的工作组。给定房间中参与者的位置和要形成的组数,k 均值聚类可以将参与者分成大小大致相等的组,每个组都聚集在中心点或质心周围。
距离不同:当然,聚类对象之间的距离不必很大。两个向量之间的任何度量都可以。例如,k 均值聚类可以根据人们的衣着、职业或其他属性来划分人群。在线商店不是根据物理距离对聚会参与者进行分组,而是根据他们的喜好或行为对顾客进行细分,天文学家可以将同一类型的星星归为一类。
数据点的力量:这个想法产生了一些显著的变化:
N 维狂欢:尽管如此计算油耗软件,原始形式的算法仍然具有广泛的用途——尤其是因为作为无监督算法,它不需要收集昂贵的标记数据。它也越来越被使用。例如,scikit-learn 等机器学习库受益于 2002 年添加的 kd-trees,它可以非常快速地对高维数据进行分区。
点击上方“机器人全球资讯”,关注后了解更多有意思的知识!
欢迎把本公众号推荐给您的同道中人!
(麻烦读者小伙伴加个星标,不加星标经常看不到新文章。)