作者:张相於,现任 Growing IO 机器学习总监,毕业于中国人民大学,曾担任多家著名电商公司推荐系统和机器学习系统技术负责人,在机器学习和推荐系统相关领域有丰富经验和深厚积累。
引言成为一名合格的开发工程师不是一件简单的事情,需要掌握从开发到调试优化等一系列能力,而掌握这些能力中的任一项,都需要付出足够的努力,以及足够多的经验。要成为一名合格的机器学习算法工程师(以下简称算法工程师)更是难上加难。
因为,在掌握工程师的通用技能之外,还需掌握一张不算小的机器学习算法知识网络。下面我们就将这些技能进行拆分,一起来看究竟要掌握什么才能成为一名合格的算法工程师。
基础开发能力
所谓算法工程师,前提得是一名工程师。那么,开发工程师会的技能你都要掌握。有些同学对于这点存在误解,认为所谓算法工程师就只需要思考和设计算法,不用在乎算法怎样实现,况且,还会有人帮你来实现你提出的算法方案。这种思想是错误的,在大多数企业的大多数职位中,算法工程师需要负责从算法设计——实现——上线的整个流程工作。
我曾经见过一些企业实行设计与实现相分离的组织架构,在这种架构下,说不清楚谁应该为算法效果负责,设计者和开发者都有一肚子的苦水。所以大家要记住,基础开发是所有算法工程师都要掌握的技能。我建议所有打算从事该行业的同学,对于基础开发能力和算法知识要给予同等的重视程度,这样能让你走得更稳,更远。
去年谷歌发布的 Rule of ML 中也提到过,机器学习应用中的问题很大一部分是工程问题,所以没有足够扎实的工程基础,是啃不动真正的硬骨头的。除了一些硬性代码技能,一些代码软技能也是不可或缺,推荐《代码整洁之道》(Clean Code)这本书给大家。
基础开发所涉及到的技能非常的多,这里挑选两个比较重要的点来做阐述。
一、单元测试在企业应用中,一个问题的完整解决方案通常包括很多的流程,这其中每个环节都需要反复的迭代优化调试。如何能够将复杂任务进行模块划分,并且保证整体流程的正