“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

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

  • 2015-12-30
  • 本文字数:1389 字

    阅读完需:约 5 分钟

随着开源思想的逐渐兴起,很多机器学习领域的算法都已经实现为开源的库、包或代码。如何在这些已有资源的基础上进行高效开发,是最近几年热议的话题。那么,是不是公司或个人就不需要再对这些算法进行手动实现了呢?近日,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 读者交流群(#2))。

公众号推荐:

2024 年 1 月,InfoQ 研究中心重磅发布《大语言模型综合能力测评报告 2024》,揭示了 10 个大模型在语义理解、文学创作、知识问答等领域的卓越表现。ChatGPT-4、文心一言等领先模型在编程、逻辑推理等方面展现出惊人的进步,预示着大模型将在 2024 年迎来更广泛的应用和创新。关注公众号「AI 前线」,回复「大模型报告」免费获取电子版研究报告。

AI 前线公众号
2015-12-30 18:002410
用户头像

发布了 268 篇内容, 共 117.6 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

利益相关者问题排序

Geek_ce1551

创业失败启示录|8分钟,50万,欢乐收场

阿萌

28天写作 创业失败启示录 2月春节不断更

week11 安全稳定

杨斌

week12 数据应用(一)

杨斌

第三章作业

Kalman

产品经理 产品经理训练营

第三周总结

Jove

第三次作业及总结

青葵

学习

产品经理第 0 期训练营第三周作业提交-krystal

Krystal

产品经理训练营第三周作业

克比

利益相关者问题挖掘

王一凡

产品经理训练营

【LeetCode】BFS解决二叉树的最小深度

Albert

算法 LeetCode 2月春节不断更

图解Mysql索引的数据结构!看不懂你来找我

Java鱼仔

Java MySQL 数据库

新浪微博利益相关方分析(相关方问题)

🙈🙈🙈

极客大学产品经理训练营

第三章学习总结

Kalman

产品经理 产品经理训练营

产品经理训练营第三周作业

铭白

免费开源的代码审计工具Gosec入门使用

BigYoung

代码扫描 28天写作 2月春节不断更 代码审计 Go 语言

week10 模块分解 作业和学习总结

杨斌

产品中利益相关者面对的问题并排序

踏凌霄

OpenCV入门--读图,展示,保存

IT蜗壳-Tango

Python OpenCV 七日更 2月春节不断更

第三周作业

苏格图德

产品经理训练营

第三周作业

正午看星星

产品经理训练营第三次作业

Jobs

作业3

YING꯭YING

第三次作业

z

利益相关者排序

赵志广

产品经理训练营 网络安全产品经理

解决方案的设计与积累

王一凡

产品经理训练营

第三周作业-利益相关者的问题及排序

隋泽

产品经理训练

最新Wordpress个人博客搭建教程:免费精美主题搭建个人博客

大佬sam

Wordpress 博客部署 2月春节不断更

第二章:产品思维和产品意识(下) - 作业 - 为云 g

Weiyung

第三周

Jove

《未来科技趋势白皮书》概述解读

李忠良

28天写作

手动编写机器学习算法的若干理由_语言 & 开发_张天雷_InfoQ精选文章