机器学习其实只是“皇帝的新衣”
策划编辑|Debra
作者|Cassie Kozyrkov
译者|小大非
编辑|Debra
出处丨AI 前线
AI 前线导读: 机器学习概念其实很简单,不要被听起来高大上的术语名称唬住了!实际上,ML 工程中最难的部分是安装包,其次是让人感到恐怖的数据集,接下来是永无止境修改代码设置的过程。通过本文,你也许会发现机器学习的概念可能是“皇帝的新衣”,它的本质比你想象得简单很多。
下面我们来看看机器学习是如何工作的:机器学习使用数据中的模式来标记事物。听起来不可思议? 它的核心概念实际上非常简单。我说“非常”是因为如果有人觉得它很神秘,是因为他们应该还没有完全理解它。
核心概念非常简单。
我们将使用标记葡萄酒是否美味来进行标签示例,并用尽可能简单的方式进行这一过程。如果你不喜欢葡萄酒,这里有一个相同文本的非葡萄酒标签示例版本。
它是如何工作的?
ML 不是魔法,没有数据是不可能学会的,所以我得尝点酒。N 标签表示不好喝。我会亲自品尝所有的酒,愿为科学献身。
数据
首先需要学习。假设我品尝了 50 种葡萄酒 (为了科学!),并将它们的信息可视化,以供参考。每种葡萄酒都有年份和评价分数,还有我们想要学习的特征:Y 代表美味,N 代表不那么美味。
在我品尝过葡萄酒并将它们的数据记录在电子表格中 (左图) 后,出于礼貌我以一种更友好的方式展示右图所示信息 。如果你希望获得数据集术语,比如特性和实例,这里是我的指南。
算法
通过选择学习算法,我们可以得到想要的输出类型。你现在要做的就是把红的和蓝的分开。你能做到吗?
机器学习算法的目的是在你的数据中选择一个最合理的位置设置边界。
如果你这时候想到画一条线,那么恭喜你,你刚刚发明了一种机器学习算法:感知器。确实,这么简单的东西居然用了这么科幻的名字!所以,请不要被机器学习中的术语吓倒,它通常没有它的名字那样让人感到震撼。
你怎么能把红的和蓝的区分开呢?
但是你打算怎样画这条线呢?我想,你肯定知道,一条简单的直线不会是最佳的解决方案。我们的目标是把 Y 和 N 分开,而不是为了画线而画。
机器学习算法的目标是选择最合理位置设置边界,它根据数据点的位置来决定。通常来说,我们通过优化目标函数达到这一效果。
优化
我本来想就“优化”单独写一篇博客的,但现在这样想更简单些:目标函数就像计分棋盘游戏的规则,对它进行优化也就是是找出如何玩,能让你获得最高分数的方法。
目标函数 (损失函数) 就像棋盘游戏的计分系统。这张照片表明在大学的时候我还没有学会优化…为什么我要玩亚洲内陆战策略?
传统上在 ML 中,我们更喜欢棍棒而不是萝卜——分数是对错误程度的标识 (把标签贴在错误的一边),游戏目的就是尽可能减少惩罚性分数。这就是为什么 ML 中的目标函数通常被称为“损失函数”,其目标是最小化损失。
损失函数就像计分棋盘游戏的规则,优化它就是找出最佳玩法,以使你能得到最好的分数。
现在我们可以回到最开始的问题了,把你的手指水平地对着屏幕并不断画出直线,直到你得到一个零分的结果 (即没有一点能够逃避你充满力量的、愤怒的手指所画出来的线)。
机器学习中的行话通常不像它的名字那样难以理解和实现。
你想出的解决方案应该是这样的:
在最左边的图中,效果最差,没必要去尝试。中间的那个更好,但它仍然不太合适。最右边的方案最佳。
生活的情趣
如果你喜欢多样性,你会喜欢算法,因为算法太多了。它们的不同之处在于如何尝试不同的位置作为分离边界。
如果你喜欢多样性,你会喜欢算法。算法太多了!
优化专家会告诉你,以微小的增量旋转边界是毫无用处的,有更好的方法可以更快地到达最佳位置。一些研究人员将毕生精力都花在了如何在最少的转变中找到最好的边界位置上,不管数据 (由你的输入决定) 变得多么反常。
另一个多样性的来源是边界的形状。边界线也不一定是直的。不同的算法可以使用不同的边界。
当我们确定边界方案时,我们只是选择了我们在标签之间绘制的边界的形状。我们是想要用一条对角线或许多水平 / 垂直的线,还是灵活的曲线把它们分开? 有很多算法可供选择。
算法达人
如今,没有一名数据科学的达人使用的是一条不起眼的直线。灵活,弯弯曲曲的形状比较受欢迎 (你可能知道这些神经网络,尽管没有太多的神经——他们还是要这么雄心勃勃的命名,而半个多世纪前,没有人接受我的建议,当时我建议重命名为“瑜伽网络”或“多层数学运算”)。
与其哗众取宠地对算法与线条,和神经网络与大脑进行比较,不如从它们的“柔术”能力来考虑。那些其他的方法在数据瑜伽方面就没那么有效果了。然而,没有任何东西是免费的,而且神经网络需要付出高昂的代价 (不久之后会更贵),所以不要相信任何一个告诉你可以提供最优解决方案的人。
神经网络也可以被称为“瑜伽网络”——它们的特殊功能是可以给你一个非常灵活的边界。
那些煞有介事的算法名称只不过是告诉你,你的数据集中将会使用什么形状的边界。如果你是一个应用机器学习的爱好者,不死记硬背也没关系——实际上,你只需要通过尽可能多的算法把你的数据塞进去,然后迭代那些看起来可能有效果的东西。好不好吃还得尝尝才知道,所以开始享用吧。
(学课本的时候,你可能不会在第一次尝试的时候就得到正确的答案。别担心。这不是一个只有一个正确答案的游戏,没有人能在第一次尝试中得到他们的答案。给自己去修补、尝试的机会。对于机器学习这个布丁是否美味的的证明就在于吃它的过程——它适用于新的数据吗? 而“它是如何工作的”这个问题,就留给设计新算法的研究人员吧。你最终可能会熟悉这些算法的名字,就好像,你总是会最终记住那些烂肥皂剧中的角色一样。虽然违背了你的意愿,但时间会让你记住。)
模型
一旦确定了分界线,算法就完成了,你从中得到的你一直想要的:所谓模型,只不过是对结果的一个花哨的表达方式,它实际上就是计算机用来将数据转换成决策的指令。下次我再输入一瓶新酒时,它就可以把数据转换成决策结果。如果数据落在蓝色的位上,就称它为蓝色。落在红色位置上,称它为红色。
标签
一旦你将你的新模型放在生产环境中,你就可以通过给电脑输入年龄和评价分数来使用它。系统查找对应的区域并输出一个标签。
当我买了四瓶新酒时,我只需要将输入数据与菜单上的红蓝区域进行匹配,并相应地贴上标签。
我们如何确认它是否可行?就像你怎么知道不是一群猴子在打字机上写了莎士比亚一样。答案是:检查输出!
布丁好不好吃,吃掉它才知道!
用大量的新数据来测试你的系统,确保你的系统在这些数据上表现良好。实际上,不管这个食谱是算法还有程序员提供给你的,你都应该用大量数据进行检测。
总 结
下面是我在另一篇 文章 中做出的一个简单的总结:
诗人一般的机器学习
如果你对此感到困惑,也许你会更喜欢这个类比: 诗人会选择一种将文字写在纸上的方法 (算法)。这种方法决定了最终的诗歌形式 (边界形状)——是俳句还是十四行诗? 一旦他们完美地完成了他们的十四行诗,就得到了一首诗 (模型)。
ML 模型 vs 传统代码
我想指出的是,这个方法与程序员通过观察问题并手工编写一些规则所编写的代码并没有太大的不同。不要再人格化机器学习了。模型在概念上与常规代码是一样的。
不要再人格化机器学习了。
不要总把再训练挂在嘴边了 (术语,用于重新运行算法,以便在收集新示例时调整边界),这个术语听起来像个生物,而且好像和标准程序员产品本质上有什么不一样似的。实际上,人类程序员也可以坐在那里调整代码,应对新的信息。如果你担心你的机器学习系统现在的更新速度太快了,你可以花更多的时间在测试上,或者干脆好好睡一觉。
这就是关于机器学习的一切吗?
是的,差不多了。ML 工程中最难的部分是安装包,其次是让你感到恐怖的数据集,你需要捋顺数据集这只毛发丛生的怪兽的毛,好在你挑剔的算法上顺利运行。接下来就是不停地修改代码设置 (不要被听起来高大上的“超参数调优”这个名字给骗了),直到最终生成一个模型!当你评估它在新数据上的表现时,你就会发现它根本不管用……然后你就会一遍又一遍地回到绘图板前调试,直到守得云开见月明,你的解决方案终于奏效。这就是为什么让不怕失败的人来做这件事是如此重要。
不要因为简单而忽视它。杠杆也很简单,却可以撬动整个世界。
如果你希望看到魔法般的效果,那么你还是趁早死了这条心。当这些迷信的虚无兴奋退去之时,才是真正炫酷的东西诞生之日。机器学习可能平淡无奇,但你能用它来完成不可思议的事情!它可以帮助你编写自己想不到的代码,让无法描述的过程自动运行。
不要因为简单而忽视它。杠杆也很简单,却可以撬动整个世界。
英文原文:
https://hackernoon.com/machine-learning-is-the-emperor-wearing-clothes-59933d12a3c