机器学习导论
为什么选择机器学习
机器学习背后的概念
训练与推理
数据:训练集、验证集和测试集
结论
在这篇博文中,你将学习机器学习的基本原理。我不会着重讲解具体的机器学习模型类型或复杂的数学公式。相反,这篇博文面向机器学习新手,涵盖监督学习、训练、推理以及机器学习的具体应用等高层次信息。
为什么选择机器学习
如果你经常阅读科技文章,那么你最近很可能经常听到“机器学习”这个词。我自己在硕士论文和工作中都用到了机器学习,因此我决定写这篇文章,分享一些我在此期间积累的基础知识。请注意,本文将为你介绍机器学习的基本概念,但如果你想了解更多深入的信息,建议阅读更高级的文章。
那么,“机器学习”这两个词背后究竟代表什么呢?其实,它正如字面意思:一台能够学习的机器。这是一个非常强大的概念!人类定义了一个能够解决问题的模型,但这个模型包含许多未知的“参数”,需要由机器进行调整。为此,机器需要学习大量的实例,才能最终掌握这项任务。
几年前,机器学习还主要停留在学术层面,但如今情况已大不相同。像谷歌这样的公司已在其众多产品中运用了机器学习 (ML) 的强大功能,例如谷歌地图的语音识别功能。“Ok Google,导航到下一家星巴克”……你就能轻松找到一杯美味的卡布奇诺☕。事实上,谷歌一年前就宣布,他们的研究成果已使Pixel 智能手机能够运行英语语音识别功能,即使离线也能正常工作。谷歌运用机器学习的另一个例子是安卓照片库:用户可以通过“海滩”或“山脉”等关键词搜索照片🏖️⛰️。不仅如此,谷歌还在用户看不到的地方,也就是其数据中心的幕后,运用机器学习技术:通过神经网络,该公司成功地将冷却能耗降低了 40%。
机器学习背后的概念
太好了,机器学习可以解决很多领域的问题,但机器学习的工作原理究竟是什么呢?为了便于讨论,我们先聚焦于机器学习中最突出的领域——监督学习。根据维基百科,
“监督学习是机器学习中的一项任务,它根据示例输入-输出对来学习将输入映射到输出的函数”。
虽然这听起来可能有点抽象,乍一看难以理解,但当我们看一个具体的例子时,一切就变得清晰多了。假设你的目标是自动识别手写数字。同时假设你有很多例子供你的机器学习模型学习:
现在你遇到的情况与之前维基百科引用中描述的情况完全一致:你有输入-输出对,需要一个函数(你的机器学习模型)来映射这两者。你的输入是带有手写数字的图像。你的输出是“真实值”:实际的数字。
要使用机器学习实现这个功能,首先需要选择一个模型。机器学习提供了许多不同类型的模型,假设您选择神经网络。很好,现在您需要选择神经网络的超参数,例如参数数量(通常,任务越复杂,模型所需的参数就越多)。接下来的工作将由机器完成:机器会利用您提供的训练数据学习如何将输入映射到正确的输出。
请注意,如果架构正确,您的网络不会记住训练数据,而是会学习如何大致区分不同的数字。
这个包含手写数字的数据集实际上是一个名为MNIST 的著名机器学习挑战。如果您有兴趣自行解决这个机器学习问题,可以使用TensorFlow轻松实现。有关如何安装 TensorFlow 的更多信息,请查看本系列的第一篇博文。TensorFlow 团队创建了一个非常棒的教程,它指导您完成设置训练数据、创建神经网络、训练神经网络以及在未见过的数据上测试神经网络的所有步骤。
训练与推理
到目前为止,我们已经介绍了训练模型的概念,以便它能够准确地表示从训练数据到实际真实值的映射关系。但请记住:您的最终目标是利用模型的智能来自动化一项具有挑战性的任务。举个例子,假设您拥有一家货运初创公司,人们可以将包裹送到您的门店,然后由您的司机送到正确的地址。假设您有很多包裹要处理,并且希望尽可能缩短每位司机的路线,那么您就需要一个智能算法来选择最佳路线。但首先您需要知道所有地址,而这可以通过自动化来实现:您可以扫描目的地地址,将图像发送到您的神经网络,神经网络会告诉您该包裹需要寄往的邮政编码(从而得出大致地址)。当然,手动完成这项工作也不会花费太多时间,但当您有数百个包裹要处理时,自动化可以避免您为此头疼😉
如您所见,整个过程分为两个主要阶段:首先训练模型,其次使用该模型识别图像。这两个阶段分别称为训练和推理。在训练阶段,首先随机初始化模型参数,然后反复将数据输入模型,将输出与真实值进行比较,并逐步调整参数以更好地匹配期望的输出。持续进行这种所谓的随机梯度下降,直到模型性能不再提升,然后冻结参数。
另一方面,推理是指使用训练好的模型预测未见过的数据。如果您在智能手机等边缘设备上使用模型,还可以压缩模型,以减少资源占用。
提示:有关神经网络训练的更多详细信息,请关注我即将发布的博客文章……
数据:训练集、验证集和测试集
训练机器学习模型时,您通常希望最终了解模型的准确率。但您不希望使用训练过程中使用的数据来测试模型,而是应该使用未见过的数据。为此,您应该使用两个独立的数据集:训练数据用于训练过程,测试数据用于最后阶段对模型进行评分。此外,您还应该在训练过程中监控模型的进展,同样使用未见过的数据。因此,您需要使用第三个数据集,称为验证数据,并定期将其应用于模型。一旦验证数据上的得分不再提高,就说明训练过程已经完成。
或者,有些人使用验证数据来比较不同的模型配置(我的模型应该使用更多参数还是更少参数?我应该使用神经网络、SVM 还是简单的回归就足够了?)。
结论
希望这篇文章能帮助你掌握机器学习的基本原理。如果这篇文章对你有帮助,请记得点赞❤️,如有任何疑问,欢迎留言!
文章来源:https://dev.to/pmgysel/introduction-to-machine-learning-158k

