0

以麻辣火锅为例,解释机器学习原理(口水流了一地)

 2 years ago
source link: https://oicebot.github.io/2018/12/16/machine-learning-is-like-hot-pot.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

坎德人的小包包

欧剃,游荡的坎德人,在他的旅途中收集了许许多多有趣的东西。

发表日期:2018-12-16  原创  精选文章

以麻辣火锅为例,解释机器学习原理(口水流了一地)

—— 啥,火锅?!对,你没有看错,就是火锅!冬天到了,谁不喜欢暖烘烘、香喷喷的火锅呢?想象一下,当你坐在一家你最喜欢的火锅店里,当服务员给你端上热气腾腾的锅子,...

作者:欧剃


啥,火锅?!对,你没有看错,就是火锅!

冬天到了,谁不喜欢暖烘烘、香喷喷的火锅呢?想象一下,当你坐在一家你最喜欢的火锅店里,当服务员给你端上热气腾腾的锅子,当食材在沸腾的汤汁中翻滚沉浮,那四溢的香气简直要让冰冷的寒冬都退避三舍。

1.webp

但你有没有想过,在这锅美味的背后,到底都有哪些工序呢?我指的可不是流着口水涮羊肉的过程,而是从最初对食材的挑选到服务员把锅端上桌的整个过程!有趣的是,这和机器学习过程中所需的工序并没有什么太大的区别。

骗你是小狗!听我一项一项细细说来~

1. 挑选食材——数据生成

为了打造最丰富的口感和最诱人的芳香,对食材的挑选是我们准备火锅的最初步骤,也是一切准备的基础。所以,我们得在市场里花费许多时间,锁定需要的食材和佐料。

这就像一开始的数据生成过程,就像那些用户操作,或者那些会触发传感器的移动、热源或噪声信号等,在这一步,我们将从所有可能的特征中,选取和最后模型直接相关的那些,并据此定下需要生成、测量、统计哪些数据。

2.webp

2. 购买食材——数据收集

当你在市场上挑选到需要的食材和佐料之后,我们得把它们买下来,这个不难理解吧?

同样,这就对应了数据收集的过程,也就是通过统计程序、浏览器、传感器等,收集到所需的各种实际数据的过程。

3.webp

3. 运输食材——数据准备

在采购结束后,我们得把这一大堆食材运回后厨,放进仓库里备用。这一步,你可能需要对食材进行简单的分类,比如有的食材需要放进冰箱或者冷库。

这就像是把数据整理到数据库或者数据湖之类的仓库里,以便程序读取。同样,在这一步,你可能需要把数据分成用于训练和用于检测等不同的部分。

4.webp

4. 选择厨具和锅型——确定数据预处理方式和算法

对每一种食材,你都需要一个合适的厨具来处理它。如果你需要给土豆削皮,那刮皮刀显然比剪刀好用,如果你需要剁排骨,就得放下那个漏勺,抡起大菜刀。同理,对不同风格的火锅,也有不同类型的炊具(锅子)可供选择。比如老北京火锅,你就得用带烟囱的铜炉,而重庆火锅还是九宫格的有味道。当然为了满足各种不同的客人,你可能还得准备一些比较复杂的鸳鸯锅什么的。

当然,许多情况下,最简单的往往才是最好的——你一般不会见到哪家火锅店专门拿“鸳鸯锅”做招牌吧?——反正我是没见到。

5.webp

同样,在机器学习的过程中,厨具就是你要采用的数据预处理方法,而炊具就是算法,比如线性回归算法或者随机森林算法等等。没错,如果真的有需要,你确实得准备点鸳鸯锅,额,我的意思是深度学习算法。这些不同的选项将是影响你模型效果的超参数。对于简单的锅子算法来说.,这些超参数不多,但对于复杂的算法来说,超参数将会非常非常多。

此外,复杂的算法并不能保证一定会得到更好的结果(如果你不相信,请试试用下面这种锅来煎蛋什么的)。所以,请务必慎重选择你的算法。

8088056881_187384618.jpg
传说中的煎蛋锅。图片来源:阿里巴巴网站

5. 选择配方——选择模型

选定食材和炊具之后,你还需要选定配方,按照配方的要求准备好锅底所需的各种调味料、食材和锅子,这些千变万化的组合,最后形成了豚骨小锅、牛油辣锅、清汤老火锅等等一系列不同风格的产品。

这就是你的模型。不,模型和算法并不是同一个东西。一个模型包含了算法所要求的预处理和后处理过程

6.webp

既然说到了预处理,我们的下一个步骤就是……

6. 处理食材——数据预处理

我打赌,大部分配方的开头,都只写着“把xx切片”或者“把xx去皮”之类的话,而不会告诉你要把食材洗干净。这基本上算是一个默认的前提条件——毕竟没有人喜欢吃脏土豆,对吧?

对数据来说也是一样,没有人喜欢肮脏的数据。你需要进行数据清洗,也就是说,处理那些缺失值和异常值。然后你也要给它们削削皮、切切片——我是指,你要对数据进行预处理——比如将分类特征的值(比如“男/女”等)进行数字化编码(用0、1等数字来代表每种类型)。

大家都不喜欢这一步,不管是数据科学家还是厨师(大概吧)都不喜欢。

7.webp

7. 打造特色——特征工程

有时候,你可以在食材上发挥许多创意,让它们发挥出不一样的特色风味,或是呈现出复杂精致的外观。

比如你可以用香料腌制切成薄片的牛肉,配上芳香的白芝麻;也可以把蔬菜切片摆盘成特殊的形状,再撒上一些清水;还可以用切碎的小米椒搭配香油蒜泥,加上秘制调料配成特色蘸料……

没错,这就是特征工程!这一步很重要,因为如果你干的足够巧妙,它能在很大程度上优化模型的表现。

基本上差不多每个数据科学家都喜欢这一步,我估计厨师们也一样。

8.webp

8. 开始烹饪——训练模型

这一步是一切的重心——没有经过烹饪,锅底就只是那些食材和香料而已。显然,你需要将各种原材料放进炊具里,调整火候,等上一段时间,然后再来看看。

这就是训练模型的过程了。你把数据放进算法里,调整各种超参数,等它训练上一段时间,再来检查一下。

9.webp

9. 品尝调味——微调参数

就算你逐字逐句依照菜谱来做,你也无法保证每一个细节都完全无误,对吧?所以,你要怎么知道有没有弄错什么?当然是尝一尝啦!如果汤底不对头,你可以尝试加一些调料进行调味,也可能要调整一下火候来挽救一下什么的——但你还是要继续煮下去!

某些不幸的时候,你的锅底可能会黏住、烧糊,或者不管你怎么去挽救,汤的味道尝起来都很恐怖。那么,你只能含着热泪把它倒掉,从失败里吸取教训,重新来过。

10.webp

调味就像是评估和微调的过程。你需要检查你的模型,判断它是否按照你设想的那样运行。如果不是,你可能需要加入更多的特征,或者调节超参数,以期对模型产生改变。但你还需要继续训练下去!

同样,在某些运气不好的时候,你的模型完全无法收敛,或者不管你怎么调整它都无法给出满意的预测结果。那么,你也只能含泪丢掉这个模型,吸取教训,从头来过。

只要坚持不懈,在加上一点点运气,你还是很有希望训练出一个高性能的模型啦~

11.webp

10. 端菜上桌——打包部署

到这一步,从厨师的角度来看,ta的工作已经完成了。火锅已经准备好,食材和涮料齐备,搞定。

但我们的客人还是饥肠辘辘,桌面空空如也。如果火锅店没有及时把客人点的东西送上桌,那这个店多半是要倒闭的,厨师也得下岗。

所以,当一切齐备的时候,还需要小心地将火锅端上桌,布置好各种涮菜、小碟,餐具、漏勺,客人们才能开吃。如果上菜的时候把食材洒了,甚至把锅底打翻了,那之前干的活都白做了。

这个过程就像是机器学习模型的部署过程。这时候端给客人的就不是火锅,而是预测函数。就象锅底一样,预测函数也要“装起来”,上线部署变成“数据产品”,让客户可以把“食材”数据放进去,并且得到想要的结果。如果在这过程中流水线(pipeline)出了问题,甚至对预测函数产生了破坏,这之前所有的训练和调整过程也就都“泡了汤”啦。

12.webp

当当当!搞定啦!这就是火锅里的机器学习之道——在这个过程中,许多人共同努力,合作熬出了最后的美味!

几个小贴士:

  1. 如果食材本身不好,做出来的汤肯定不行——没有什么配方能挽救这种问题,也没有什么炊具能改变这个现实。
  2. 如果你是厨师,请别忘了,要是服务员不把锅端上去,那就没有人能享用到这些美味了。
  3. 如果你是餐馆老板,别强迫你的厨师用什么厨具/炊具——你不可能一把菜刀应万变,也不可能永远都用鸳鸯锅——另外,如果你的厨师不得不花上大量时间清洗和处理食材的话,ta一定不会很高兴的。

说了这么多,不知道你的感觉如何,反正我是按耐不住,要去吃一次X底捞了……

欢迎大家留言分享你对“火锅”的看法!

title.webp

参考和图片来源:

(本文已投稿给「优达学城」并发表。 作者:欧剃 转载请保留此信息)

标签:UdacityMachine-Learning

0 comments

Be the first person to leave a comment!

Powered by Jekyll on Github.io
2022 © 欧剃

 


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK