中国的IT行业存在着诸多的误区,有些误区导致了当前的某些问题,有些误区则是为未来挖了坑。当然了,有的误区也催生了一些行业。本文主要介绍行业内对于“算法研发工程师”岗位的理解误区,分析了岗位的内涵,对与之容易混淆的岗位进行了辨别。

1. 算法研发工程师

(1)误区描述

“算法研发工程师”又称“算法工程师”,随便在网上一搜,就能看到成千上万的招聘信息,然而,绝大部分的招聘要求中都写着“熟练掌握Python”、“精通Linux开发”、“有手机平台APP开发经验”等等。

(2)岗位分析

从工作职能上来说,“算法工程师”的工作是“算法研发”,其工作成果是“算法”,这点毋庸置疑。然而,“算法”是代码吗?显然不是。就目前人工智能领域的机器学习类算法而言,算法是一系列数学公式的集合,在工程中,这些算法表现为一篇包含这些数学公式的文档,所以,“算法研发”的成果是文档,跟代码、编程语言、开发平台毫无关系。其它类的算法可能不是数学公式的集合,但本质上“算法研发”的成果仍然是文档,例如:搜索算法等。

价值上来说,“算法研发”的成果是发明专利和论文,即文档的更加正规的表现形式。这些知识产权才是科技研发的重要价值,在知识产权法逐步完善和知识产权保护逐步推行的情况下,这些才是研发机构的重要资产和主要收入来源。通常,成果中还会包含一份研发过程中使用的测试代码,这份代码仅仅表达了算法的本质,在代码稳定性、运行效率、扩展性等方面不会做考虑,所以,这份代码不能直接应用在软件中,仅供算法应用工程师参考。

工作重心上来说,“算法工程师”的工作主要集中于分析问题、分析数据、分析已有算法、设计新算法、推导论证数学公式、测试和分析结果等,而不是将大量的时间和精力花费在用各种编程语言在各种开发平台上编写代码、不是保障代码的稳定性和运行速度等。

(3)误区辨别

“算法研发工程师”需要和多个相近的岗位进行区别,下述为几个典型的示例。

“算法应用工程师”又称“算法开发工程师”,是指基于“算法研发工程师”研发出的算法(文档)进行编码、转码、调用、训练等来实现某项功能。譬如说,在手机上使用算法实现身份认证功能。这些人的工作是选择合适的算法、用编程语言实现算法、对实现的算法进行调用等,他们不会改变算法本身,所以,算法存在的不足无法依靠他们来解决,否者最终只能失望。他们的成果和价值在于软件,最多再加上软件著作权之类的软件产权,不具有发明专利之类的知识产权。

“算法调参工程师”又称“模型调参工程师”或“调参工程师”,是指基于“算法开发工程师”实现的算法、利用不同的参数进行训练和调用,以达到预期的性能指标,其主要工作就是修改各种参数并找到满足功能和性能的最优参数组合,并用之训练出想要的模型。算法本身存在的缺陷和算法代码中的问题都不能依靠他们来解决。他们的成果和价值在于模型,没有发明专利之类的知识产权,也没有软件著作权之类的软件产权。

“算法优化工程师”通常是基于一份已有的算法代码,利用硬件和指令的并行性,对算法运行速度、占用内存资源等方面进行优化,他们不会改变算法本身。他们的成果是在某种特定平台上的一种算法代码,更换平台、硬件环境等都可能需要重新优化。例如,一般的C语言代码可以运行于各种电脑、手机、嵌入式设备等诸多环境,但“算法优化工程师”在Android平台上优化之后的代码,放在电脑上可能就无法工作或无法达到预期的效果,需要在电脑上重新优化。

(4)误区催生的产业

假设误区中要求算法工程师需要“熟练掌握Python”,于是就催生了“Python培训”这类的编程培训行业。同理,对于算法工程师的其它误区也会催生出相应的行业,例如,Linux开发培训等。

(5)示例

以“神经网络连子棋”为例,“确定性神经网络”算法的研发属于“算法研发工程师”的工作,“神经网络连子棋”游戏中的AI对弈功能的开发属于“算法应用工程师”的工作,连子棋模型的优化等属于“算法优化工程师”和“模型优化工程师”的工作。在“确定性神经网络”中不涉及手动调参的部分,所有参数均自动改变,所以其中不含有“调参工程师”的工作,但是,在“五子棋等级考试版”中的大脑思维深度评估、专注度评估等部分涉及调参的工作,只是不属于“确定性神经网络”的参数。具体效果可通过官网(www.gnxxkj.com)、github、gitlab、gitee等平台下载软件、SDK或模型进行测试对比。