挂机宝可以做网站,网站建设和实现,开发公司与子公司合作协议,网页qq邮箱打不开吴恩达#xff1a;机器学习的六个核心算法 数据派THU 2022-08-03 17:00 发表于北京 图片 来源#xff1a;AI科技评论 本文约7200字#xff0c;建议阅读15分钟 本文介绍了吴恩达在其创办的人工智能周讯《The Batch》上更新了一篇博文#xff0c;总结了机器学习领域多个基础算…吴恩达机器学习的六个核心算法 数据派THU 2022-08-03 17:00 发表于北京 图片 来源AI科技评论 本文约7200字建议阅读15分钟 本文介绍了吴恩达在其创办的人工智能周讯《The Batch》上更新了一篇博文总结了机器学习领域多个基础算法的历史溯源。
文章开头吴恩达回忆他的研究历程中曾有一次抉择
多年前在一次项目中选择算法时他不得不在神经网络与决策树学习算法之间做选择。考虑到计算预算他最终选择了神经网络在很长的一段时间内弃用增强决策树。
这是一个错误的决定「幸好我的团队很快修改了我的选择项目才成功。」吴恩达谈道。
他由此感叹不断学习与更新基础知识是十分重要的。与其他技术领域一样随着研究人员的增加、研究成果数量的增长机器学习领域也在不断发展。但有些基础算法与核心思想的贡献是经得起时间考验的
算法线性和逻辑回归、决策树等 概念正则化、优化损失函数、偏差/方差等
在吴恩达看来这些算法与概念是许多机器学习模型的核心思想包括房价预测器、文本-图像生成器如DALL·E等。
在最新的这篇文章中吴恩达与团队调研了六种基础算法的来源、用途、演变等并提供了较为详细的讲解。
这六种算法分别是线性回归、逻辑回归、梯度下降、神经网络、决策树与k均值聚类算法。
图片
线性回归直的窄的
线性回归是机器学习中的一个关键的统计方法但它并非不战而胜。它由两位杰出的数学家提出但200 年过去了这个问题仍未解决。长期存在的争议不仅证明了该算法具有出色的实用性还证明了它的本质十分简单。
那么线性回归到底是谁的算法呢
1805 年法国数学家 Adrien-Marie Legendre 发表了将一条线拟合到一组点的方法同时试图预测彗星的位置天体导航是当时全球商业中最有价值的科学方向就像今天的人工智能一样。
图片 图注Adrien-Marie Legendre 的素描画像
四年后24 岁的德国神童 Carl Friedrich Gauss 高斯坚称他自 1795 年以来一直在使用它但认为它太琐碎了无法写。高斯的主张促使Legendre匿名发表了一份文章称“一位非常著名的几何学家毫不犹豫地采用了这种方法。”
图片 图注Carl Friedrich Gauss
斜率和偏差当结果与影响它的变量之间的关系遵循直线时线性回归很有用。例如汽车的油耗与其重量成线性关系。
汽车的油耗 y 与其重量 x 之间的关系取决于直线的斜率 w油耗随重量上升的幅度和偏置项 b零重量时的油耗yw*xb。 在训练期间给定汽车的重量算法会预测预期的油耗。它比较了预期和实际的油耗。然后它将平方差最小化通常通过普通最小二乘技术磨练 w 和 b 的值。 考虑汽车的阻力可以生成更精确的预测。附加变量将线延伸到平面。通过这种方式线性回归可以容纳任意数量的变量/维度。
普及的两个步骤该算法立即帮助航海者追踪星星以及帮助后来的生物学家尤其是查尔斯·达尔文的堂兄Francis Galton识别植物和动物的可遗传特征。这两项深入发展释放了线性回归的广泛潜力。1922 年英国统计学家 Ronald Fisher 和 Karl Pearson 展示了线性回归如何适应相关性和分布的一般统计框架使其在所有科学中都有用。而且近一个世纪后计算机的出现提供了数据和处理能力可以更大程度地利用它。
应对歧义当然数据永远不会被完美地衡量有些变量比其他变量更重要。这些生活事实激发了更复杂的变体。例如带有正则化的线性回归也称为「岭回归」ridge regression鼓励线性回归模型不要过多地依赖于任何一个变量或者更确切地说均匀地依赖于最重要的变量。
如果为了简单起见另一种形式的正则化L1 而不是 L2会产生 lasso压缩估计鼓励尽可能多的系数为零。换句话说它学会选择具有高预测能力的变量并忽略其余的。弹性网络结合了这两种类型的正则化。当数据稀疏或特征看起来相关时它很有用。
在每个神经元中现在简单的版本仍然非常有用。神经网络中最常见的神经元类型是线性回归模型随后是非线性激活函数使线性回归成为深度学习的基本组成部分。
逻辑回归跟随曲线
曾经有一段时间逻辑回归只用于对一件事进行分类如果你喝了一瓶毒药你可能会被贴上的标签是“活着”还是“死去”呢时代变了今天不仅呼叫紧急服务为这个问题提供了更好的答案而且逻辑回归也成为了深度学习的核心。
毒物控制
逻辑函数可以追溯到 1830 年代当时比利时统计学家 P.F. Verhulst 发明它来描述人口动态随着时间的推移指数增长的初始爆炸随着它消耗可用资源而趋于平缓从而产生特征逻辑曲线。一个多世纪过去后美国统计学家 E. B. Wilson 和他的学生 Jane Worcester 又设计了逻辑回归来计算给定有害物质有多少是致命的。
图片 图注P.F. Verhulst
拟合函数逻辑回归将逻辑函数拟合到数据集以便预测给定事件例如摄入士的宁发生特定结果例如过早死亡的概率。
训练水平调整曲线的中心位置垂直调整曲线的中间位置以最大限度地减少函数输出与数据之间的误差。 将中心调整到右侧或左侧意味着杀死普通人需要或多或少的毒药。陡峭的坡度意味着确定性在中途点之前大多数人幸存下来超过一半「就只能说再见了」死亡的意思。缓坡更宽容低于曲线中部一半以上幸存再往上只有不到一半的人会幸存。 在一个结果和另一个结果之间设置一个阈值比如 0.5曲线就变成了一个分类器。只需在模型中输入剂量您就会知道您应该计划聚会还是葬礼。
更多结果Verhulst 的工作发现了二元结果的概率忽略了进一步的可能性例如中毒受害者可能会进入来世的哪一边。他的继任者扩展了算法
在 1960 年代后期英国统计学家 David Cox 和荷兰统计学家 Henri Theil 独立工作对具有两种以上可能结果的情况进行了逻辑回归。 进一步的工作产生了有序逻辑回归其中结果是有序值。 为了处理稀疏或高维数据逻辑回归可以利用与线性回归相同的正则化技术。
图片 图注David Cox
多功能曲线逻辑函数以相当准确的方式描述了广泛的现象因此逻辑回归在许多情况下提供了有用的基线预测。在医学上它可以估计死亡率和疾病风险。在政治学中它预测选举的赢家和输家。在经济学中它预测商业前景。更重要的是它在各种各样的神经网络中驱动一部分神经元其中非线性是 Sigmoid 函数。
梯度下降一切都在下坡
想象一下黄昏后在山上徒步旅行发现脚下什么都看不到。而且您的手机电池没电了因此您无法使用 GPS 应用程序找到回家的路。您可能会通过梯度下降找到最快的路径。小心不要从悬崖上走。
太阳和地毯 梯度下降比通过陡峭的地形下降更有利。1847年法国数学家Augustin-Louis Cauchy发明了近似恒星轨道的算法。60 年后他的同胞 Jacques Hadamard 独立开发了它来描述薄而灵活的物体如地毯的变形这可能会使膝盖向下徒步更容易。然而在机器学习中它最常见的用途是找到学习算法损失函数的最低点。
图片 图注Augustin-Louis Cauchy
向下爬经过训练的神经网络提供了一个函数该函数在给定输入的情况下计算所需的输出。训练网络的一种方法是通过迭代计算实际输出与期望输出之间的差异然后更改网络的参数值以缩小差异从而将输出中的损失或误差最小化。梯度下降缩小了差异将计算损失的函数最小化。
网络的参数值相当于地形上的一个位置损失的是当前高度。随着你的下降你可以提高网络计算接近所需输出的能力。可见性是有限的因为在典型的监督学习情况下该算法仅依赖于网络的参数值和损失函数的梯度或斜率——即你在山上的位置和你脚下的斜率。
基本方法是向地形下降最陡的方向移动。诀窍是校准你的步幅。步幅太小就需要很长时间才能取得进展步幅太大你就会跳入未知的领域可能是上坡而不是下坡。 给定当前位置算法通过计算损失函数的梯度来估计最快下降的方向。梯度指向上坡那么该算法就是通过减去梯度的一小部分来以相反的方向前进。称为学习率的分数 α 决定了再次测量梯度之前的步长。 反复做这几个步骤希望你能到达一个山谷。恭喜
卡在山谷里太糟糕了你的手机没电了因为算法可能没有把你推到凸山的底部。你可能会陷入由多个山谷局部最小值、山峰局部最大值、鞍点鞍点和高原组成的非凸面景观中。事实上图像识别、文本生成和语音识别等任务都是非凸的并且已经出现了梯度下降的许多变体来处理这种情况。
例如该算法可能具有帮助它放大小幅上涨和下跌的动量从而使其更有可能到达底部。研究人员设计了如此多的变体以至于看起来优化器的数量与局部最小值一样多。幸运的是局部最小值和全局最小值往往大致相等。
最优优化器梯度下降是寻找任一函数的最小值的明确选择。在可以直接计算精确解的情况下——例如具有大量变量的线性回归任务中——它可以逼近一个值而且通常速度更快、成本更低。但它确实在复杂的非线性任务中发挥了作用。凭借梯度下降和冒险精神你可能可以及时赶出山区吃晚饭。
神经网络寻找函数
让我们先把这个问题弄清楚大脑不是一个图形处理单元集如果它是的话那它运行的软件要比典型的人工神经网络复杂得多。而神经网络的灵感来自大脑的结构一层层相互连接的神经元每个神经元根据其相邻状态来计算自己的输出由此产生的一连串活动形成了一个想法——或识别出一张猫的照片。
从生物到人工大脑通过神经元之间相互作用来学习的想法可以追溯到 1873 年但直到 1943 年美国神经科学家 Warren McCulloch 和 Walter Pitts 才利用简单的数学规则建立了生物神经网络模型。1958 年美国心理学家Frank Rosenblatt开发出感测器——这是一种在打卡机上实现的单层视觉网络旨在为美国海军建立一个硬件版本。
图片 图注Frank Rosenblatt
越大越好Rosenblatt 的发明只能识别单线分类。之后乌克兰数学家 Alexey Ivakhnenko 和 Valentin Lapa 通过在任意层数中堆叠神经元网络克服了这一限制。1985 年独立工作的法国计算机科学家 Yann LeCun、David Parker 和美国心理学家 David Rumelhart 及其同事描述了使用反向传播来有效训练此类网络。
在新千年的第一个十年中包括 Kumar Chellapilla、Dave Steinkraus 和 Rajat Raina与吴恩达合作在内的研究人员通过使用图形处理单元进一步推动了神经网络的发展这使得越来越大的神经网络能从互联网生成的海量数据中得到学习。
适合每项任务神经网络背后的原理很简单对于任何任务都有一个可执行它的函数。一个神经网络通过组合多个简单函数构成可训练函数每个函数由单个神经元执行。一个神经元的功能由称为「权重」的可调参数决定。给定这些权重和输入示例及其所需输出的随机值就可以反复更改权重直到可训练的函数能完成手头的任务。
一个神经元可接受各种输入例如代表像素或单词的数字或前一层的输出将它们与权重相乘乘积相加并得出由开发人员选择的非线性函数或激活函数的总和。期间要考虑到它是线性回归、加上一个激活函数。 训练修改权重。对于每个示例输入网络会计算一个输出并将其与预期输出进行比较。反向传播可通过梯度下降来改变权重以减少实际输出和预期输出间的差异。当有足够多好的例子重复这个过程足够多次网络就能学会执行这个任务。
黑匣子虽然运气好的话一个训练有素的网络可以完成它的任务但最终你要阅读一个函数往往会非常复杂——包含数千个变量和嵌套的激活函数——以至于解释网络是如何成功完成其任务也是非常困难的。
此外 一个训练有素的网络只和它所学的数据一样好。例如如果数据集有偏差那么网络的输出也会出现偏差。如果它只包含猫的高分辨率图片那它对低分辨率图片的反应就不得而知了。
一个常识 在报道 Rosenblatt 于1958年发明的感测器时《纽约时报》开辟了人工智能炒作的道路报道中提到“美国海军期望拥有一台会走路、说话、看、写、自我复制和意识到自己存在的电子计算机雏形。”
虽然当时的感测器没有达到这个要求但它产生了许多令人印象深刻的模型用于图像的卷积神经网络文本的循环神经网络以及用于图像、文本、语音、视频、蛋白质结构等的transformers。它们已经做出了令人惊叹的事情像下围棋时的表现超过了人类水平在诊断X射线图像等实际任务中也接近人类水平。然而它们在常识和逻辑推理方面的问题仍然较难应对。
决策树从根到叶
亚里士多德是一个什么样的「野兽」这位哲学家的追随者、第三世纪期间生活在叙利亚的 Porphyry 想出了一个合乎逻辑的方法来回答这个问题。
他将亚里士多德提出的“存在类别”从一般到具体组合起来将亚里士多德依次归入到每个分类中亚里士多德的存在是物质的而不是概念或精神他的身体是有生命的而不是无生命的他的思想是理性的而不是非理性的。因此他的分类是人类。中世纪的逻辑教师将这个序列绘制为垂直流程图一个早期的决策树。
数字差异快进到 1963 年密歇根大学社会学家John Sonquist和经济学家James Morgan在将调查的受访者分组时首次在计算机中实行了决策树。随着自动训练算法软件的出现这种工作变得很普遍如今包括 scikit-learn 等在内的各种机器学习库也已经使用决策树。
这套代码是由斯坦福大学和加州大学伯克利分校的四位统计学家花费了10 年时间开发的。到今天从头开始编写决策树已经成为了《机器学习 101》中的一项家庭作业。
空中的根决策树可以执行分类或回归。它向下生长从根部到树冠将一个决策层次结构的输入示例分类为两个或更多。想到德国医学家和人类学家Johann Blumenbach的课题大约在 1776 年他首先将猴子与猿撇开人类除外区分开来在此之前猴子和猿是被归为一类的。
这种分类取决于各种标准例如是否有尾巴、胸部狭窄或宽阔、是直立还是蹲伏、还有智力的高低。使用经训练的决策树来为这类动物贴上标签逐一考虑每个标准最终将这两组动物分开。
这棵树从一个可视为包含了所有案例的生物数据库的根节点出发——黑猩猩、大猩猩和红毛猩猩以及卷尾猴、狒狒和狨猴。根会在两个子节点间提供选择是否表现出某种特定特征导致两个子节点包含具有和不具有该特征的示例。以此类推这个过程中以任意数量的叶节点结束每个叶节点都包含大部分或全部属于一个类别。 为了成长树必须找到根决策。要做选择则得考虑所有的特征及其价值——后附肢、桶状胸等——并选择能够最大限度提高分割纯度的那个特征。「最佳纯度」被定义为一个类别示例会 100% 进入一个特定的子节点、而不进入另一个节点。分叉很少在只做了一个决定之后就百分之百纯粹、且很可能永远也达不到。随着这个过程继续进行产生一个又一个层次的子节点直至纯度不会因为考虑更多的特征而增加多少。此时这棵树树已经完全训练好了。 在推理时一个新的示例从上到下经历过决策树完成每个级别不同决策的评估。它会得到它所在叶节点所包含的数据标签。
进入前 10 名鉴于 Blumenbach 的结论后来被Charles Darwin推翻即人类与猿的区别在于宽阔的骨盆、手和紧牙的牙齿如果我们想扩展决策树以不仅分类猿和猴子而是对人类进行分类那会怎么样呢
澳大利亚计算机科学家 John Ross Quinlan 在 1986 年通过 ID3 实现了这一可能它扩展了决策树以支持非二元结果。2008 年 在IEEE国际数据挖掘会议策划的数据挖掘十大算法名单中一项命名为 C4.5 的扩展细化算法名列前茅。在一个创新猖獗的世界里这就是持久力。
扒开树叶 决策树确实有一些缺点。它们很容易通过增加多级别层次来过度拟合数据以至于叶节点只包括一个例子。更糟糕的是它们很容易出现蝴蝶效应更换一个例子长出来的树就大不相同。
走进森林 美国统计学家 Leo Breiman 和新西兰统计学家 Adele Cutler 将这一特征转化为优势于 2001 年开发了随机森林random forest——这是一个决策树的集合每个决策树会处理不同的、重叠的示例选择并对最终结果进行投票。
随机森林和它的表亲XGBoost不太容易过度拟合这有助于使它们成为最受欢迎的机器学习算法之一。这就像让亚里士多德、Porphyry、Blumenbach、Darwin、 Jane Goodall、Dian Fossey和其他 1000 位动物学家一起在房间里确保你的分类是最好的。
K均值聚类群体思维
如果你在聚会上与其他人站得很近那么你们很可能有一些共同点。这就是使用 k 均值聚类将数据点分组的想法。无论是通过人类机构还是其他力量形成的群体这个算法都会找到它们。
从爆炸到拨号音美国物理学家 Stuart Lloyd 是贝尔实验室标志性创新工厂和发明原子弹的曼哈顿计划的校友他于 1957 年首次提出 k-means 聚类以在数字信号中分配信息但直到 1982 年才发表这个工作
图片
论文地址https://cs.nyu.edu/~roweis/csc2515-2006/readings/lloyd57.pdf
与此同时美国统计学家 Edward Forgy 在 1965 年描述了一种类似的方法导致了它的替代名称为「Lloyd-Forgy 算法」。
寻找中心考虑将聚类分成志同道合的工作组。给定房间中参与者的位置和要形成的组数k-means 聚类可以将参与者分成大小大致相等的组每个组都聚集在一个中心点或质心周围。
在训练期间算法最初通过随机选择 k 人来指定 k 个质心。K 必须手动选择找到一个最优值有时非常重要。然后它通过将每个人与最近的质心相关联来增长 k 个集群。 对于每个集群它计算分配到该组的所有人的平均位置并将该平均位置指定为新的质心。每个新的质心可能都没有被一个人占据但那又如何呢人们倾向于聚集在巧克力和火锅周围。 计算出新的质心后算法将个体重新分配到离他们最近的质心。然后它计算新的质心调整集群等等直到质心以及它们周围的组不再移动。之后将新成员分配到正确的集群就很容易。让他们在房间里就位并寻找最近的质心。 预先警告鉴于最初的随机质心分配你可能最终不会与你希望与之相处的以数据为中心的可爱 AI 专家在同一组中。该算法做得很好但不能保证找到最佳解决方案。
不同的距离当然聚类对象之间的距离不需要很大。两个向量之间的任何度量都可以。例如k-means 聚类可以根据他们的服装、职业或其他属性来划分他们而不是根据物理距离对参加派对的人进行分组。在线商店使用它根据客户的喜好或行为来划分客户天文学家也可以将相同类型的星星分在一组。
数据点的力量这个想法产生了一些显着的变化
K-medoids 使用实际数据点作为质心而不是给定集群中的平均位置。中心点是可以将到集群中所有点的距离最小化的点。这种变化更容易解释因为质心始终是数据点。 Fuzzy C-Means Clustering 使数据点能够不同程度地参与多个集群。它根据与质心的距离用集群的度来代替硬簇分配。
n 维狂欢尽管如此原始形式的算法仍然广泛有用——特别是因为作为一种无监督算法它不需要收集昂贵的标记数据。它的使用速度也越来越快。例如包括 scikit-learn 在内的机器学习库受益于 2002 年添加的 kd-trees这些 kd-trees 可以非常快速地划分高维数据。