前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实践为王:《人工智能开发实践:云端机器学习导论》阅读攻略

实践为王:《人工智能开发实践:云端机器学习导论》阅读攻略

作者头像
木羊
发布2022-04-11 17:50:30
2640
发布2022-04-11 17:50:30
举报
文章被收录于专栏:睡前机器学习

最近在读一本书,书名叫《人工智能开发实践:云端机器学习导论》。这是一本介绍如何使用云服务资源构造智能算法的技术书,读完后给我的一个感觉就是“实践为王”,重点全部都落在了“实践”二字上面,分享了很多作者对实施细节的经验和思考,读完很有启发。对我来说,实践有一种难以言传的“魔力”,让人往往会作出旁人难以理解的选择。

有句老话叫纸上得来终觉浅,绝知此事要躬行,什么意思呢?这段话我的理解是有两层意思,第一层意思大家应该都知道,很多知识光读书本,会以为烂熟于心了,但真的到了付诸实践,就会发现四面八方涌出无数的细节问题让你抓破头皮,以前觉得毫不起眼的小缝,都可能变成眼下无法逾越的天堑。而第二层意思是,只有当你真的去做一件事的时候,才知道这件事没有旁观者以为的那么简单,你需要做很多取舍,哪怕一些看起来“很好”的东西,最后可能会因为经过多方考虑后选择了放弃,而转为选择看起来没那么好的。这就是实践的“魔力”。

首先引起我兴趣的是书的侧封讲的Netflix公司的一个小故事,这个故事恰好充分体现了实践具有的这种难以言传的神奇,也反映出技术发展在理论研究和应用实践两个方向上存在微妙的不同。玩数据科学的同学应该都听过著名的Kaggle竞赛平台,早在Kaggle还没崛起的2006年,Netflix公司就开始创办价值100万美元的数据科学比赛,这在当时的数据科学界很有名气。Netflix公司大家应该不陌生,美国的流媒体巨头,这场的比赛内容也和它的主营业务有关,就是我们此前介绍过的推荐算法,Netflix公司希望不断提高给用户推荐电影的质量。

内容简介

在Netflix公司曾承办的一次著名推荐算法比赛中,获得冠军的团队因使用了大量模型使得推荐算法的准确率提升了10%,从而获得了百万美元的大奖,但实际上,后期真正付诸实践的却是仅提升了8.43%准确率的另一支团队的改进算法。这一现象背后的原因,阅读完本书,你将获得答案。

务实地解决AI问题需要更多地关注结果而不仅仅是技术。归根结底,花费数月时间为一些永远无法投入生产的任务选择最佳的机器学习算法只是浪费精力和金钱,更高效的方式是使用云提供商提供的现成解决方案进行业务开发。

本书的理念是:不再追求人工智能项目的完美方案,而是在有限的成本、资源、技术条件下,实现能够交付于实际生产的解决方案。

时间来到2009年,这一届的Netflix数据科学比赛出现了一件十分有趣的事,冠军团队以0.867的测试均方根(RMS)力压群雄,性能提升超过10%,效果拔群。这种肉眼可见的性能提升,当然特别适合拿去发论文,我也以为主办方Netflix公司肯定按捺不住心中的欢喜,迫不及待连夜就要把这套算法上线部署了。

结果呢?让人大为不解,Netflix公司最终放弃了这套算法,选择了另一个团队的算法,而这款算法相比就要明显逊色多了,准确率仅提升了8.43%。为什么呢?这就是实践的“魔力”。侧封对这事的介绍就到这结束了,并没有解释原因,而是留了一个悬念,承诺“阅读完本书,你就会找到答案”。我看完了这本书,可以告诉大家的是,承诺所言非虚。

先说说这本书吧,本书共分三个部分,第一个部分是“实用人工智能基础”,第二个部分是“云端人工智能”,第三个部分是“创建实际AI应用程序”,基本按在基础知识、云端工具和应用案例的次序循序渐进,照顾了不同的基础和不同需求,叙述主线还是比较清晰的。三个部分又像是三个知识模块,可以根据不同的需求组合阅读,下面我简单进行介绍。

人工智能的算法也是算法,想要真正发挥作用,同样需要编程实现。当然了,算法本身是没有编程语言限制的,任何一款图灵完备的编程语言只要把算法的逻辑实现了,就能达到效果。不过,编程语言之间的区别不仅在语法上,不同的编程语言通过库和包构建出自己的一套生态系统,生态系统越完善,解决具体问题就越简单,越好用就越多人用,越多人用就越好用,这是一个正向循环。在机器学习方面,目前公认最好用的是Python语言,本书同样选择了Python,在第一部分“使用人工智能基础”进行了介绍了。第一部分共三章,从Python的语法、控制结构等最基础的知识讲起,接着介绍了Python在数据科学方面主要工具,也就是机器学习最常用的Python库的用法,包括IPython、Pandas、NumPy、Jupyter Notebook和Scikit-Learn,应该说,已经把Python在这个领域最常用最热门的都“一网打尽”了。

第一部分的最后一章比较有意思,标题首先就很有意思,叫“斯巴达式AI生命周期”。作者选择将这章放在第一部分,让我有点意外。这章是从软件工程的角度思考人工智能项目的软件构建,强调反馈回路,把关注点始终保持在务实的目标上。内容属于方法论的范畴,一般会放在靠后的部分。作者选择把这一章放在第一部分,应该是认为在实践中,这种思考方式和编程基础同等重要。

那什么叫斯巴达式AI呢?

斯巴达我们不会陌生,可能还经常用它做表情包,但斯巴达式是什么意思呢?务实,非常务实,近乎刻板的务实,在同时代的雅典人热衷于漫无边际第思考哲学问题时,斯巴达人始终把注意力保持在眼前的现实问题上面。对斯巴达式AI生命周期,我的理解同样是务实,通过反馈回路解决问题,关注结果而不是技术,不要把资源浪费在不能投入生产方向,解决问题,而不是把问题上升到哲学层面。人们都希望自己正在解决的问题显得“高大上”,但显得高大上并不利于快速解决问题。这个忠告看似不起眼,不少人也可能持保留意见,但对我来说,已经不止一次在各种项目管理的书中读到,作者选择在第一部分就迫不及待分享出来,应该是作者在反复的实践不断踩坑,最后总结出来的带着血泪的教训。

第二部分是“云端人工智能”,这是本书的核心内容之一。人工智能、机器学习在我们这个时代爆发,除了技术本身的积累,硬件资源的大发展也是决定性的因素之一,特别是搞深度学习,每一个成功的深度学习模型,背后都有数量惊人的GPU在默默地燃烧着算力。但是,要每个公司配置数量庞大的GPU显然成本很高,而且现在已经是云服务时代了,人工智能也就纷纷上云。那如何使用云服务实现人工智能呢?非常简单,本书的这部分共分两章,分别专门介绍了如何通过Google和Amazon的云平台如何开发云端AI,满满的都是技术细节。

介绍完了云端AI的编程基础和编程环境,第三部分自然就是案例应用,也是最能体现出本书“实践为王”特色的部分。本部分共六章,选取的主题都颇有意思,譬如NBA与看似毫无关联的社交媒体之间如何相互影响,知名同性交友平台GitHub的组织给项目管理带来哪些思考,还有就是我们都很关心的房价数据如何处理分析。

这些有趣的主题展开都是一篇很长的文章,不妨读读书里都是怎么写的。这里,我想聊聊第11章,这一章讲的是人工智能算法在用户生产内容,也就是我们常说的UCG中的应用。这章的第一节,标题叫作“Netflix奖未在生产中实施”。对,就是前面提到的侧封故事。

为什么Netflix奖未在生产中实施呢?书里用了一句话作了回答,因为模型太复杂,在生产环境中部署成本太高。寥寥几句,但过分真实,做技术的人,多多少少都会有一种执念,对“最优解”的执念。但成本的投入和性能提升并非线性关系,特别是到了最后阶段,哪怕是小数点后的一点点性能的提升,却需要堆叠大量的手段,边际成本非常高,最终让Netflix选择了放弃这套纸面数据很好看的算法。书里对这件事有很具体的分析,包括对模型的分析和对让Netflix选择的分析。这一节内容其实不长,百来个字,但我仔细阅读了几遍,值得。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 睡前机器学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
项目管理
CODING 项目管理(CODING Project Management,CODING-PM)工具包含迭代管理、需求管理、任务管理、缺陷管理、文件/wiki 等功能,适用于研发团队进行项目管理或敏捷开发实践。结合敏捷研发理念,帮助您对产品进行迭代规划,让每个迭代中的需求、任务、缺陷无障碍沟通流转, 让项目开发过程风险可控,达到可持续性快速迭代。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档