当有这么多现成的API可供使用时,您为什么要从头开始实现机器学习算法?
这是一个很好的问题。在您编写第一行代码之前必须考虑的一个问题。
在这篇文章中,您将发现许多关于这个问题的有趣甚至发人深省的答案。
本文中的答案总结自Quora上的提问 “当有像TensorFlow这样许多高级API时,为什么需要手动实现机器学习算法?“。
通过我的新书《从头开始实现机器学习算法》,您可以快速启动您的项目,书中包含分步教程和所有示例的Python源代码文件。

为什么要从头开始实现机器学习算法
照片由psyberartist拍摄,保留部分权利。
重新实现算法的两个主要原因
我认为所有答案都可以分为两类
- 自学,即算法作为学习练习而实现。
- 运营需求,即算法的实现是为了满足生产系统的需求。
为自学实现算法
Charles Gee 从自学角度给出了一个很好的答案。他评论说:
……假设我们谈论的不是机器学习算法,而是排序算法。当然,许多数据结构都有一个几乎不需要编码的sort函数,但您真的会雇佣一个不会冒泡排序?选择排序?插入排序?归并排序?快速排序?二叉搜索树的程序员吗?
Charles描述了4种不同的用例,在这些用例中,从头开始实现机器学习算法可能非常可取
- 作为机器学习领域的初学者。
- 作为机器学习领域的研究者。
- 作为机器学习领域的教师。
- 作为这些机器学习算法的使用者。
为运营需求实现算法
Xavier Amatriain 在他的回答中重点关注了这一点。他评论说:
首先我想说,我相信任何团队都应该默认重用现有实现。……然而,也有很多原因可以解释为什么公司可能会决定实现自己版本的机器学习算法。
Xavier列出了实现机器学习算法的5个原因,如下所示:
- 性能。开源实现可能过于通用,对于特定用例效率不够高。
- 正确性。特定用例(例如更大规模的数据集)的开源实现可能存在bug或限制。
- 编程语言。实现可能仅限于特定的编程语言。
- 集成。可能需要将算法实现集成到现有生产系统的基础设施中。
- 许可。选择的开源许可证可能会施加限制。
总结
在这篇文章中,您了解到从头开始实现算法的两个主要原因。
- 为了解算法的工作原理以供自学。
- 为了定制算法的实现以用于生产系统。
进一步阅读
我曾多次撰文讨论从头开始实现机器学习算法的好处。
关于这个主题的一些进一步阅读包括:
暂无评论。