看完这篇文章,从事人工智能的我再也不敢装逼了

人工智能 机器学习
机器学习是人工智能技术核心,随着大数据时代各行各业对数据分析需求的持续增加,通过机器学习高效地获取信息,已逐渐成为机器学习技术发展的主要推动力。数据和算法在机器学习中的重要性是显而易见的,学会优化也是必须的。本文详细地介绍了机器学习是如何工作的,同时机器学习是非常枯燥的过程,但是,如果你能够耐得住性子,你能做的事情将会是非常不可思议的。

 机器学习是什么?给你十秒钟,请给出答案。

……

不知道?就这你还想从事人工智能行业?得了吧!

听着:器学习使用数据中的模式来标记事物。

听起来是不是很神奇?

......

好了,就此打住。

[[358690]]

机器学习的核心概念其实非常简单,简单到让人“尴尬”。

这里说的“尴尬”是指,如果有人在你面前“装逼”,让你觉得机器学习很神奇,他们应该感到尴尬。为什么呢?且看这篇“反装逼”指南。

这篇指南的作者是Cassie Kozyrkov,谷歌的首席决策情报工程师,不仅人美,心也善。经常在Hacker Noon上发表一些与人工智能相关的干货文章。

[[358691]]

在这篇指南中,她使用的例子是葡萄酒。她还很贴心地提到,如果你不喜欢喝葡萄酒,也可以把葡萄酒脑补成任何你喜欢喝的饮品,比如茶。

好了,废话不多说,让我们搬起小板凳,进入正题吧~

机器学习到底是如何工作的?

[[358692]]

机器学习并不是魔法,没有数据是不可能学习的,所以想要完成这个类比,必须要喝一些葡萄酒。

数据

为了学习,需要有献身精神。大家可以体会下,一口气喝了50种葡萄酒是种什么感受。关键是喝完酒还不算完,我还要处理这些信息,并把它们可视化,以便在下面观看。

每一种葡萄酒都有相应的年份,品尝完了之后要打个分,然后给出一个判断。这个判断,也就是我们希望人工智能之后能够自己做出的判断:Y代表好喝,N代表不好喝。

相关的数据都记录在了电子表格中(左),但是为了让大家看得舒服,我把所有的数据都可视化了(右)。

算法

接下来,就要进行下一件事情了。把红色区域和蓝色区域分开,你能做到吗?机器学习就是要选择一种算法来完成这个过程,选了哪个算法,就决定了最后会得到哪种模型。

如果你想着划一条线来完成这项工作的话,那恭喜你!你刚刚发明了一种机器学习算法,它的名字叫……感知器(perceptron)。是的,就是这么高大上,它的名字就是这么酷炫。请不要被机器学习中的“行话”吓倒,通常情况下都是大忽悠。

但是,你划的线应该指向哪里呢?我们的目标是把Y和N分开,划一条直线并不是一个非常聪明的解决方案。

我们选择一种机器学习算法的目的,是为了找到最合理的地方划出分界线。这需要通过优化目标函数来完成。

优化

你可以这样想:目标函数就像是棋盘游戏的规则一样,优化就是找到一个能够获得高分的玩法。

[[358693]]

从传统上来说,在机器学习中,我们更喜欢“棍棒”而不是“胡萝卜”。也就是对错误进行计分。这就是为什么机器学习中的目标函数被称为“损失函数”,目的就是要尽量减少损失。

想亲自玩一把吗?回到上面的那张图,用你的手指在屏幕上划线把Y和N分开,直到零失误。感知器同志,感觉到未来触手可及了吗?

也许,你得到的解决方案是这样的:

最左边的这种结果,我没有尝试过。中间的那个也不太合适。我最喜欢的是最右边那个。

算法是具有多样性的,它们之间最不同的一个方面,就是它们怎么去确定分界线。

痴迷于优化的那群人会告诉你,以微小的增量调整分界线是不明智的,还有更好、更快的方法来找到最佳位置。一些研究人员致力于花一辈子的时间找出一种方法,不管数据多复杂,都能最简单地找到最好的分界线位置。

算法的另一个不同的方面是边线的形状。边界线不一定是直的。不同的算法,使用的边界线形状也不同。如下图:

为追赶潮流的人设计的算法

如今,没有一个追赶数据科学浪潮的人会选择用直线来区分。那些看上去很灵活、很弯曲的线在他们之中非常流行。他们会使用其实并没有多少神经的神经网络算法。我更倾向于称它们为“瑜伽网络”或者是“多层数学运算”,但好像没有人喜欢我的这种叫法。

[[358694]]

不同的算法会告诉你,它们会在数据中放置什么形状的边界线。但如果你是一个应用型的机器学习爱好者,记不住它们那种天书般的名字也没关系——在实践中,你只需要尽可能多地将数据输入到算法中,然后重复执行那些看起来很有希望的事情就行了。

模型

一旦边界线划好了,算法也就完成了,你就能从中得到你想要的东西了:一个模型。在下一次我给它“看”一瓶新的葡萄酒的时候,它就能将数据转换成决定。

标签

一旦你把新鲜出炉的模型投入使用,在计算机中输入葡萄酒的年份和评价分数后,你的模型会给它找出对应的区域并输出标签。

那问题来了,我们如何知道它是否有效呢?谁知道这是不是瞎搞?最直接的办法就是对输出进行检查。

通过运行一堆新数据来测试你的模型,并确保它能够一直能够良好的运行。事实上,无论模型是算法想出来的还是程序员想出来,都要这样做。

结语
在我此前的另一篇文章中,我对整个过程进行了一个类比:

诗人与机器学习

如果你看不懂这个类比,也许你会喜欢这个:诗人会选择一种方法(算法),将文字写在纸上。这种方法决定了诗歌的形式(边界线形状)是俳句还是十四行诗?一旦他们以最佳的方式完成了十四行诗,它现在就是一首诗(模型)。

机器学习模型与传统的编程

但是,以这种方式得到的模型,与程序员通过观察问题,并手动制定一些规则来编写的代码没有太大的不同。二者在概念上是相同的。

不要到处说机器学习的“再训练”(retraining)有多厉害了。程序员也可以坐在那里调整代码以响应新的信息。

这就是全部了吗?

是的,差不多了。机器学习工程中最困难的部分就是安装软件包,接着就是处理数据集,然后就能在上面运行一个有限的算法了。

接下来就是“超参数调优”,别被忽悠住了,不过是在生成一个模型之前,没完没了地摆弄代码设置而已。

当你使用新的数据评估这个模型的时候,如果结果不太理想,你还得一遍又一遍地重复,直到能够拿出手。 这就是为什么雇佣一些对失败有耐心的人来做这件事非常重要。如果是个玻璃心,估计撑不了几回合就吐血了吧。

[[358697]]

如果你期待有什么奇迹,我劝你越早失望越好。机器学习是非常枯燥的过程。但是,如果你能够耐得住性子,你能做的事情将会是非常不可思议的。它可以帮你写下你自己都想不到的代码,还让你能够把那些不可言说的代码自动化。

最后,提个醒。不要因为简单而讨厌它。要知道,杠杆也很简单,但它可以撬动整个地球。

 

责任编辑:梁菲 来源: 量子位
相关推荐

2020-12-10 13:46:35

人工智能

2020-05-06 19:47:15

人工智能AI

2021-07-05 10:25:07

人工智能AI

2017-03-16 15:05:45

人工智能机器学习智能手机

2019-05-30 09:32:49

2024-02-26 00:00:00

Docker容器

2017-03-10 21:04:04

Android适配

2021-05-08 07:53:33

面试线程池系统

2017-03-07 15:35:26

Android适配 界面

2019-07-10 15:15:23

JVM虚拟机Java

2021-03-03 12:19:20

原型原型链JavaScript

2021-02-24 07:38:50

Redis

2019-08-01 11:04:10

Linux磁盘I

2019-01-30 13:44:34

JVM内存服务器

2021-04-27 07:59:11

内联汇编 C 语言 asm 关键字

2018-07-31 14:03:09

JVM内存数据

2020-11-17 07:43:24

互联网MVC服务类

2023-10-08 19:06:41

2019-05-31 15:30:00

人工智能机器人互联网

2017-08-09 15:07:08

大数据数据分析户画像
点赞
收藏

51CTO技术栈公众号