目录

1 方法的差别

1.1 相同之处

1.2 不同之处

1.3 人工智能与传统软件开发的关系

2 工作中的注意事项

3 如何成为优秀的AI工程师?


笔者一直从事软件工程师和AI工程师相关工作,和大家说说软件工程师与AI工程师的区别,希望能帮助大家。

1 方法的差别

1.1 相同之处

  • 都是为了解决问题
  • 都需要建模,都需要理解数据
  • 都需要基于开发语言编写程序
  • 都可以依赖现有框架开发

1.2 不同之处

软件开发和人工智能模型的不同之处在于执行的方式

AI软件开发团队架构 ai软件开发工程师_AI软件开发团队架构

图片来源:Differences between machine learning and software engineering — Futurice

如上图所示,以人工智能中的机器学习为例,机器学习是以数据和预期结果为输入,通过计算得出一个程序,也就是一个算法模型,也就是找到一个适合数据的程序。而软件开发是针对问题提出一个解决方案,并将其写成计算机可以执行的精确程序,也就是通过写程序实现任务自动化。开发机器学习应用的过程,比做软件开发更具反复性和探索性,存在一定不确定性,也就是需要多次实现,整个过程通俗地被称为“炼丹"。如果你数学基础较好又喜欢探索胜过研究业务逻辑,能乐观对待不确定性,也许做AI工程师更合适。如果你喜欢研究业务逻辑胜过数学理论,喜欢确定性多于不确定性,也许做软件工程师更好。

1.3 人工智能与传统软件开发的关系

从这个角度,可以看到,人工智能软件是无法取代传统的软件开发的,但是人工智能软件可以挖掘规则作为组件补充传统的软件开发,特别是在那些无法用手写规则实现的复杂情况下,人工智能有着非常大的作用。

2 工作中的注意事项

从程序开发的角度来看,AI的代码相对来说比较简单,只要熟悉了所用的框架,如Pytorch,Keras等等,写代码不是一件难事,主要的工作在于通过多次调整模型的超参数得出理想的算法模型,而应用软件的代码通常基于现有框架开发需要考虑各种逻辑,相对来说复杂些。当然要取得优秀的算法模型需要扎实的理论基础和优秀的动手能力。

3 如何成为优秀的AI工程师?

以下是三个层次的要求

初级

  • 了解Python语言,以及Python的环境概念,会建立Python运行环境;
  • 会使用Python notebook和python命令运行Python程序;
  • 熟悉机器学习相关的数学基础,如线性代数、高等数学、概率论与统计学;
  • 了解Pytorch等框架,以及使用框架优化机器学习模型(调参)的方法;
  • 熟悉AI项目的流程。

中级

  • 能读懂使用Pytorch实现机器学习的相关代码;
  • 可使用Python语言完善和调整已有的机器学习相关代码;
  • 掌握选择模型的方法;
  • 熟悉使用Pytorch等框架优化机器学习模型(调参)的方法;
  • 掌握评估模型的方法。

高级

  • 熟悉各种机器学习和深度学习模型的原理,需要看懂各种模型的论文,充分理解论文中的模型原理;
  • 能熟练运用各种模型以及综合利用各种模型解决实际问题。

关于机器学习和人工智能,欢迎阅读我的小文。 

欢迎留言,一起交流软件开发和人工智能学习。

笔者写于上海浦东新区封控区。