当前位置: 首页 > 科技观察

吴恩达:机器学习的六大核心算法

时间:2023-03-14 23:30:46 科技观察

本文转载自雷锋网。如需转载,请在雷锋网官网申请授权。近日,吴恩达在他的人工智能周刊《The Batch》更新了一篇博文,总结了机器学习领域多种基础算法的历史渊源。文章开头,吴恩达回忆自己在研究过程中有一个决定:多年前,在一个项目中,在选择算法时,他不得不在神经网络和决策树学习算法之间做出选择。考虑到计算预算,他最终选择了神经网络,放弃了很久的增强型决策树。这是一个错误的决定,“幸运的是,我的团队很快修改了我的选择,项目成功了。”吴恩达说道。他感叹,不断学习和更新基础知识非常重要。与其他技术领域一样,机器学习领域也在不断发展,研究人员越来越多,研究成果越来越多。但是一些基础算法和核心思想的贡献是经得起时间考验的:算法:线性和逻辑回归,决策树等概念:正则化,优化损失函数,偏差/方差等。很多机器的核心思想学习模型,包括房价预测器、文本图像生成器(如DALL·E)等。在最新的文章中,吴恩达和他的团队调查了六种基本算法的来源、用途和演变,并提供了一个更详细解释。这六种算法分别是:线性回归、逻辑回归、梯度下降、神经网络、决策树和k均值聚类算法。1LinearRegression:Straight&NarrowLinearRegression是机器学习中一个关键的统计方法,但不是不战而胜。它是由两位杰出的数学家提出的,但200年后,这个问题仍未得到解决。长期存在的争议不仅证明了该算法的出色实用性,还证明了其基本的简单性。那么线性回归是谁的算法呢?1805年,法国数学家阿德里安-玛丽·勒让德在试图预测彗星位置时发表了将一条线拟合到一组点的方法(天文导航是当时全球商业中最有价值的科学方向,就像人工智能一样今天一样聪明)。说明:在阿德里安-玛丽·勒让德画出素描肖像四年后,24岁的德国神童卡尔·弗里德里希·高斯坚称他从1795年就开始使用它,但认为这太微不足道了,无法写下来。高斯的断言促使勒让德发表了一篇匿名文章,称“一位非常杰出的几何学家毫不犹豫地采用了这种方法”。当之间的关系遵循一条直线时,线性回归很有用。例如,汽车的油耗与其重量成线性关系。汽车的油耗y与其重量x之间的关系取决于直线的斜率w(油耗随重量增加多少)和偏置项b(零重量时的油耗):y=w*x+b。在训练期间,给定汽车的重量,算法会预测预期的油耗。它比较预期和实际油耗。然后它最小化平方差,通常通过普通的最小二乘技术,磨练w和b的值。考虑汽车的阻力可以产生更准确的预测。其他变体将直线延伸到平面。通过这种方式,线性回归可以容纳任意数量的变量/维度。普及的两个步骤:该算法立即帮助航海家追踪星星,后来的生物学家(尤其是查尔斯·达尔文的表弟弗朗西斯·高尔顿)确定了植物和动物的遗传特征。这两个深刻的发展释放了线性回归的广泛潜力。1922年,英国统计学家RonaldFisher和KarlPearson展示了线性回归如何适用于相关性和分布的一般统计框架,使其在所有科学中都有用。而且,将近一个世纪后,计算机的出现提供了数据和处理能力,可以更大程度地利用它。处理歧义:当然,数据永远不会被完美地衡量,有些变量比其他变量更重要。这些生活事实激发了更复杂的变异。例如,带正则化的线性回归(也称为“岭回归”)鼓励线性回归模型不要过多地依赖任何一个变量,或者更确切地说,均匀地依赖最重要的变量。如果为了简单起见,另一种形式的正则化(L1而不是L2)产生套索(压缩估计),鼓励尽可能多的系数为零。换句话说,它学会选择具有高预测能力的变量并忽略其余变量。弹性网结合了两种类型的正则化。当数据稀疏或特征似乎相关时,它很有用。在每个神经元中:现在,简单版本仍然非常有用。神经网络中最常见的神经元类型是线性回归模型,其次是非线性激活函数,这使得线性回归成为深度学习的基础部分。2逻辑回归:遵循曲线曾几何时,逻辑回归只用于分类一件事:如果你喝了一瓶毒药,你可能被标记为“活着”还是“死了”?时代变了,今天,调用紧急服务不仅是这个问题的更好答案,而且逻辑回归是深度学习的核心。毒物控制:逻辑函数可以追溯到1830年代,当时比利时统计学家P.F.Verhulst发明它是为了描述人口动态:随着时间的推移,随着可用资源的耗尽,指数增长的初始爆炸趋于平缓,从而形成特征逻辑曲线。一个多世纪后,美国统计学家E.B.Wilson和他的学生JaneWorcester设计了逻辑回归来计算给定的有害物质中有多少是致命的。图例:P.F.Verhulst拟合函数:逻辑回归将逻辑函数拟合到数据集,以预测特定事件(例如,士的宁摄入)发生特定结果(例如,过早死亡)的概率。训练水平调整曲线的中心,垂直调整曲线的中间,以最小化函数输出与数据之间的误差。将中心向右或向左调整意味着杀死普通人需要或多或少的毒药。斜坡的陡峭意味着确定性:在中点之前,大多数人都幸免于难;一半以上,“只是说再见”(意思是死亡)。缓坡更宽容:在曲线中间以下,一半以上存活;再往上,不到一半存活下来。在一个结果和另一个结果之间设置一个阈值,比如0.5,曲线就变成了分类器。只需在模型中输入剂量,您就会知道您应该计划举办派对还是葬礼。更多结果:Verhulst的工作发现了二元结果的概率,忽略了进一步的可能性,例如中毒受害者可能会在来世的哪一侧结束。他的继任者扩展了该算法:在1960年代后期,英国统计学家大卫考克斯和荷兰统计学家亨利泰尔独立工作,对具有两种以上可能结果的情况进行逻辑回归。进一步的工作产生了序数逻辑回归,其中结果是一个序数值。为了处理稀疏或高维数据,逻辑回归可以使用与线性回归相同的正则化技术。图例:DavidCox多功能曲线:逻辑函数以相当准确的方式描述了广泛的现象,因此逻辑回归在许多情况下提供了有用的基线预测。在医学上,它估计死亡率和疾病风险。在政治学中,它预测选举的赢家和输家。在经济学中,它预测商业前景。更重要的是,它驱动各种神经网络中的神经元子集(其中非线性是sigmoid函数)。3梯度下降:一切都是下坡想象一下,黄昏后爬上一座山,发现脚下什么都看不见。而且您的手机电池没电了,因此您无法使用GPS应用程序找到回家的路。您可能会找到梯度下降的最快路径。小心不要走下悬崖。阳光和地毯:梯度下降比通过陡峭地形下降更有利。1847年,法国数学家奥古斯丁-路易斯柯西发明了一种算法来近似恒星的轨道。六十年后,他的同胞雅克阿达玛独立开发了它来描述地毯等薄而柔韧的物体的变形,这可能使跪下徒步旅行更容易。然而,在机器学习中,它最常见的用途是找到学习算法损失函数的最低点。图例:Augustin-LouisCauchy爬下:训练有素的神经网络提供了一个函数,可以在给定输入的情况下计算所需的输出。训练网络的一种方法是通过迭代计算实际输出与期望输出之间的差异,然后改变网络的参数值来减少差异,从而最大限度地减少输出中的损失或错误。梯度下降缩小了差异,最小化了计算损失的函数。网络的参数值相当于地形上的一个位置,loss为当前高度。当你往下走时,你可以增加网络计算更接近所需输出的能力。可见性是有限的,因为在典型的监督学习情况下,算法仅依赖于网络的参数值和损失函数的梯度或斜率——也就是说,你在山上的位置和你所在的斜率脚。基本方法是朝地形下降最陡的方向移动。诀窍是校准你的步幅。步子太小,需要很长的时间才能进步;太大,你就会跳入未知领域,可能是上坡而不是下坡。给定当前位置,算法通过计算损失函数的梯度来估计最快下降的方向。如果梯度指向上坡,则算法将通过减去梯度的一小部分而朝相反的方向前进。称为学习率的分数α决定了再次测量梯度之前的步长。重复这几个步骤,希望你会到达一个山谷。恭喜!困在山谷里:可惜你的手机没电了,因为算法可能没有把你推到凸山的底部。你可能会陷入由多个山谷(局部最小值)、山峰(局部最大值)、鞍点(saddlepoints)和高原组成的非凸景观。事实上,图像识别、文本生成和语音识别等任务都是非凸的,并且出现了许多梯度下降的变体来处理这种情况。例如,该算法可能有动力帮助它放大小的起伏,使其更有可能触底。研究人员设计了如此多的变体,以至于优化器的数量似乎与局部最小值一样多。幸运的是,局部最小值和全局最小值往往大致相等。最佳优化器:梯度下降是寻找任何函数最小值的明确选择。在可以直接计算精确解的情况下——例如,在具有大量变量的线性回归任务中——它可以逼近一个值,通常速度更快,成本更低。但它确实在复杂的非线性任务中发挥作用。有了梯度下降和冒险精神,你也许能及时出山吃晚饭。4神经网络:寻找功能让我们先把这个问题弄清楚:大脑不是图形处理单元的集合,如果是的话,它运行的软件要比典型的人工神经网络复杂得多。另一方面,神经网络受到大脑结构的启发:相互连接的神经元层,每个神经元根据其邻居的状态计算自己的输出,由此产生的级联活动形成一个想法或识别一个想法一张猫的照片。从生物到人工:大脑通过神经元之间的相互作用进行学习的想法可以追溯到1873年,但直到1943年美国神经科学家WarrenMcCulloch和WalterPitts才使用简单的数学规则对生物神经网络进行建模。1958年,美国心理学家FrankRosenblatt开发了传感器——一种在登录机器上实现的单层视觉网络——旨在为美国海军打造一个硬件版本。图注:FrankRosenblattThebiggerthebetter:罗森布拉特的发明只能识别单行分类。后来,乌克兰数学家AlexeyIvakhnenko和ValentinLapa通过在任意层数中堆叠神经元网络克服了这一限制。1985年,法国计算机科学家YannLeCun、DavidParker和美国心理学家DavidRumelhart及其同事独立工作,描述了使用反向传播来有效地训练此类网络。在新千年的第一个十年,包括KumarChellapilla、DaveSteinkraus和RajatRaina在内的研究人员(与AndrewNg合作)通过使用图形处理单元进一步推动了神经网络的发展,这使得越来越大的神经网络可以从互联网产生的海量数据。适合每项任务:神经网络背后的原理很简单:对于任何任务,都有一个函数可以执行它。神经网络通过组合多个简单函数形成可训练函数,每个函数由单个神经元执行。神经元的功能由称为“权重”的可调参数决定。给定这些权重和输入示例以及它们所需输出的随机值,可以迭代更改权重,直到可训练函数完成手头的任务。神经元接受各种输入(例如,代表像素或单词的数字,或前一层的输出),将它们与权重相乘,相加乘积,并导出非线性函数或由开发人员选择的函数和激活。期间应该认为是线性回归,加上激活函数。训练修改权重。对于每个示例输入,网络计算输出并将其与预期输出进行比较。反向传播可以通过梯度下降来改变权重,以减少实际输出与预期输出之间的差异。当此过程以足够(好的)示例重复足够多次时,网络可以学习执行任务。黑匣子:虽然幸运的是一个训练有素的网络可以完成它的工作,但你最终会读到一个函数,它通常非常复杂——有数千个变量和嵌套的激活函数——以至于解释网络如何成功完成它的任务也很困难难的。此外,训练有素的网络与其从中学习的数据一样好。例如,如果数据集有偏差,那么网络的输出也会有偏差。如果它只包含猫的高分辨率图像,那么它对低分辨率图像的反应将是未知的。常识:《纽约时报》在1958年报道罗森布拉特的传感器发明时开创了人工智能炒作的先河,指出“美国海军期望拥有一台可以行走、说话、看、写、自我复制的机器和一台初级电子计算机意识到自己的存在。”虽然当时的传感器还不够完善,但它产生了许多令人印象深刻的模型:图像的卷积神经网络;文本循环神经网络;用于图像、文本、语音、视频、蛋白质结构等的转换器。它们已经做出了惊人的事情,例如在围棋方面超越了人类水平的表现,并且在诊断X射线图像等实际任务中接近人类水平的表现。然而,他们仍然在与常识和逻辑推理作斗争。5决策树:亚里士多德从根到叶是什么“野兽”?哲学家波菲利(Porphyry)的一位追随者在3世纪居住在叙利亚,他想出了一个合乎逻辑的方法来回答这个问题。他将亚里士多德提出的“存在的范畴”从一般到具体进行了归类,依次将亚里士多德置于每一类之中:亚里士多德的存在是物质的,而不是概念的或精神的;他的身体是有生命的而不是无生命的;他的头脑是理性的,而不是非理性的。因此,他的分类是人类。中世纪的逻辑老师将这个序列画成垂直流程图:早期的决策树。数字差异:快进到1963年,当时密歇根大学社会学家JohnSonquist和经济学家JamesMorgan在对调查对象进行分组时首次在计算机中实施了决策树。随着自动训练算法的软件的出现,这项工作变得很普遍,决策树现在被各种机器学习库使用,包括scikit-learn等。该代码由斯坦福大学和加州大学伯克利分校的四位统计学家历时10年开发而成。时至今日,从零开始写决策树已经成为《机器学习 101》的作业。扎根于空中:决策树可以执行分类或回归。它从根部向下生长到冠层,将一个输入示例的决策层次分为两个(或更多)。想想德国医学家和人类学家JohannBlumenbach的课题:在他于1776年左右首先将猴子与猿类(人类除外)区分开来之前,猴子和猿类被归为一类。这种分类基于各种标准,例如它们是否有尾巴,狭窄或宽阔的胸部,直立或蹲伏,以及他们的智力水平。使用经过训练的决策树来标记此类动物,每个标准都被一个一个地考虑,最终将两组动物分开。这棵树从一个根节点开始,可以将其视为包含所有案例的生物数据库——黑猩猩、大猩猩和猩猩,以及卷尾猴、狒狒和狨猴。根在两个子节点之间提供了一个选择,即是否展示特定特征,从而导致两个子节点包含具有和不具有该特征的示例。以此类推,该过程以任意数量的叶节点结束,每个叶节点包含一个类别的大部分或全部。为了成长,树必须找到根决策。要做出选择,请考虑所有特征及其值——后附肢、桶状胸等——并选择能最大化分割纯度的特征。“最佳纯度”定义为一个类的100%实例转到特定子节点而不转到另一个节点。叉子很少在一次决定后就达到100%纯净,而且很可能永远不会。随着这个过程的继续,一层一层的子节点产生,直到考虑到更多的特征,纯度没有增加多少。此时,树已完全训练。在推理时,一个新的例子从上到下遍历决策树,完成每一层不同决策的评估。它将获取其叶节点中包含的数据标签。进入前10名:鉴于Blumenbach的结论(后来被查尔斯·达尔文推翻),即人类与类人猿的区别在于宽大的骨盆、手和咬紧的牙齿,如果我们想扩展决策树以不仅对类人猿和猴子进行分类,而且对什么进行分类关于人类分类?澳大利亚计算机科学家JohnRossQuinlan于1986年使用ID3使这成为可能,它扩展了决策树以支持非二元结果。2008年,在IEEE国际数据挖掘大会规划的十大数据挖掘算法名单中,一种名为C4.5的扩展求精算法名列前茅。在一个创新猖獗的世界里,这就是持久力。削减叶子:决策树确实有一些缺点。他们可以通过添加多层层次结构轻松地过度拟合数据,这样叶节点只包含一个示例。更糟糕的是,它们容易产生蝴蝶效应:替换一个实例,生成的树将大不相同。进入森林:美国统计学家LeoBreiman和新西兰统计学家AdeleCutler将这一特性转化为他们的优势,在2001年开发了随机森林——决策树的集合,每个决策树都会处理不同的、重叠的示例选择,并对最终结果进行投票.随机森林及其同类XGBoost不太容易过度拟合,这有助于使它们成为最流行的机器学习算法之一。这就像让亚里士多德、波菲里、布卢门巴赫、达尔文、简·古道尔、黛安·福西和其他1,000名动物学家一起坐在房间里,并确保您的分类学是最好的。6K-MeansClustering:Groupthink如果你在聚会上与其他人站得很近,很可能你们有一些共同点。这就是使用k-means聚类对数据点进行分组的思想。无论是通过人类代理还是其他力量形成的群体,算法都会找到它们。从爆炸声到拨号音:美国物理学家StuartLloyd,贝尔实验室标志性创新工厂和发明原子弹的曼哈顿计划的校友,于1957年首次提出k-means聚类,以数字信号的形式分发信息,但这项工作并未发表至1982年:论文地址:https://cs.nyu.edu/~roweis/csc2515-2006/readings/lloyd57.pdf与此同时,美国统计学家EdwardForgy描述了一种类似的方法,导致了它的替代名称“Lloyd-Forgy算法”。寻找中心:考虑将集群划分为志同道合的工作组。给定参与者在房间中的位置和要形成的组数,k均值聚类可以将参与者分成大致相等大小的组,每个组围绕一个中心点或质心聚集。在训练期间,该算法最初通过随机选择k个人来分配k个质心。(K必须手动选择,找到最佳值有时非常重要。)然后它通过将每个人与最近的质心相关联来增长k个聚类。对于每个集群,它计算分配给该组的所有人的平均位置,并将该平均位置分配为新的质心。每个新的质心可能不会被一个人占据,但那又怎样?人们倾向于聚集在巧克力和奶酪火锅周围。在计算出新的质心后,该算法将个体重新分配到离他们最近的质心。然后它计算新的质心,调整集群等,直到质心(和它们周围的组)不再移动。之后,很容易将新成员分配到正确的集群。将它们放在房间的适当位置并寻找最近的质心。预先警告:考虑到最初的随机质心分配,您最终可能不会与您希望与之共处的可爱的以数据为中心的AI专家属于同一组。该算法做得很好,但不能保证找到最佳解决方案。距离不同:当然,聚类对象之间的距离不需要很大。两个向量之间的任何度量都可以。例如,k-均值聚类不是根据物理距离对参加聚会的人进行分组,而是可以根据他们的着装、职业或其他属性对他们进行细分。在线商店使用它根据客户的喜好或行为对客户进行细分,天文学家可以将同一类型的星星分组。数据点的力量:这个想法产生了一些显着的变化:K-medoids使用实际数据点作为质心,而不是给定集群中的平均位置。中心点是到簇中所有点的距离可以最小化的点。这种变化更容易解释,因为质心始终是数据点。模糊C均值聚类使数据点能够不同程度地参与多个聚类。它使用聚类的度而不是基于与质心的距离的硬聚类分配。N维狂欢节:尽管如此,该算法的原始形式仍然具有广泛的用途——特别是因为作为一种无监督算法,它不需要收集昂贵的标记数据。它的使用速度也越来越快。例如,包括scikit-learn在内的机器学习库受益于2002年加入的kd-trees,它可以非常快速地对高维数据进行分区。