BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

手动编写机器学习算法的若干理由

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年12月31日. 估计阅读时间: 4 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

随着开源思想的逐渐兴起,很多机器学习领域的算法都已经实现为开源的库、包或代码。如何在这些已有资源的基础上进行高效开发,是最近几年热议的话题。那么,是不是公司或个人就不需要再对这些算法进行手动实现了呢?近日,Quora网站发起了对于以下问题的讨论:为什么有这么多API还要手动编写机器学习算法呢?

首先,Quora的工程副总裁Xavier Amatriain从公司的角度回答了该问题。Xavier表示,作为一个公司,选择自己开发机器学习算法的原因可以归结为以下几点:

  1. 性能。很多公开的算法实现的效率并不高。如果项目对于该算法的执行效率有一定的要求,自己进行重新实现不失为一个好的选择。
  2. 正确性。很多开源的算法实现是存在功能缺陷的。它们很多只是针对简单的测试集进行了部分验证,并不能保证很多边界情况或者大规模测试的正确性。事实上,很多算法包/库并没有进行很好的单元测试和功能测试。因此,算法本身存在bug也不足为奇。公司也可以选择在此基础上进行完善,然后再反馈给社区。但是,在多数情况下,重新实现算法的代价更低一些。
  3. 编程语言。以Libsvm为例,它只存在C++和Java的开源版本。如果希望用Python或其他语言实现,公司只能自行开发。
  4. 系统集成。更多情况下,算法只是整个系统的一部分。系统需要集成很多的库和资源。如果这些库或资源分别来自scikit-learn、Tensorflow、Theano以及Ranklib等不同的地方,系统集成势必要花费大量的时间和精力。相比而言,自己开发这些算法可能要高效很多。
  5. 版权。对于公司而言,即使采用开源算法,也可能存在版权问题。因此,自己开发要安全很多,可以有效避免版权纠纷。

接下来,Charles Gee则站在个人的角度上,分析了手动实现机器学习算法的好处。

  • 作为一个初学者,自己实现算法有助于帮助理解算法的工作原理及其实现细节。直接使用现成的包的确有助于加速产品研发,但却阻碍了工程师对其内部的理解。
  • 作为一个研究人员,自己实现算法可以掌握和修改所有的细节。在研究过程中,工程师难免需要修改算法的一些内部实现细节,或者输入接口。现成的库或包未必能够满足这些需求。
  • 作为一名老师,自己实现算法有利于教学任务的深入浅出。老师可以将算法的具体运行过程呈现给学生,便于学生一步步慢慢理解。
  • 作为用户,自己实现算法可以方便调试或完善功能。

Simon Maby表示,一般需要自己实现算法的情况包括:
特殊的性能需求、Q-learning和定制化的代价与功能、特殊的应用领域等。此外,Chomba Bupe将原因归结为创新、不同的项目目标、代码安全、兼容性以及深度理解五个方面。Shehroz Khan则主要从理解和掌控代码的角度出发,认为手动实现算法有助于进一步删减或扩展部分功能以及开发新的相关算法。最后,多年从事有限元分析(Finite Element Analysis,FEA)Debiprasad Ghosh预测,机器学习社区未来会出现与FEA社区类似的分化:绝大部分成员要么为用户,要么为专家。用户主要了解商用软件和产品;而专家主要关心不同的开源代码和FEA的内部细节,用于进一步的研发。因此,机器学习领域也需要一批掌握算法细节的专家,来指导算法未来的发展。


感谢杜小芳对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者(已满),InfoQ读者交流群(#2)InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT