> 文档中心 > 软件工程师:机器学习也需要学习?

软件工程师:机器学习也需要学习?


整理 | 郭露
出品 | CSDN(ID:CSDNnews)

对于软件工程师而言,机器学习(ML)的前提在于需要数据要足够真实。但事实上即使数据来源真实,软件工程师仍会面临许多问题,例如机器学习的门槛高、软件操作的难度大、系统维护困难等等,下面详细介绍了工程师在开发过程中所面临的问题。
在这里插入图片描述

(图源自ICphoto)

机器学习也需要学习?

机器学习作为人工智能的一大分支,指的是机器通过分析大量数据进行学习。目前机器学期依旧处于研究阶段,并且人们可能需要花大量的时间了解如何通过机器学习完成最基本的事情。

例如在图像分类中,必须:

  • 了解张量、损失函数、迁移学习、逻辑回归、网络微调、超参数搜索、过拟合、主动学习、正则化和量化等概念;
  • 熟悉一个及以上ML库,例如PyTorch、Tensorflow、FastAI或是scikit-learn等等。学习ML库比学习编程库要难得多,因为ML的概念与程序员的认知非常不同;
  • 了解最先进的SOTA深度神经网络模型; 确保深度网络在适当的数据语料库中进行了预训练。

学习软件是必备项?

对于软件工程师来说,只有通过数据探索和管理的软件才能可视化数据、对数据进行详细的分析、查找数据样本并调试数据等。除此之外,软件工程师还需要使用软件才能跟踪实现并生成模型,而主动学习和发现标记错误等过程需要与ML模型进行交互。因此即使了解了机器学习也依旧需要掌握各种不同的软件才能处理数据,这无疑增加了使用机器学习的成本。

基础架构和MLOps可以做什么?

除了ML的概念和软件的使用,软件工程师依旧需要学习云基础架构相关知识,以便:

  • 评估并选择各种硬件,以权衡训练和推断的成本性能;
  • 建立一个快速、有弹性且节约成本的培训通道。为了在主动学习期间进行培训和再培训时提供交互式和响应式体验,加快或减慢基础设施的速度非常重要;
  • 在设置数据相关的低延迟、弹性、可用以及高效的推断。 监控云系统和软件的性能、可用​​性和利用率。

系统维护非常重要?

软件工程师需要负责系统维护,并且对系统进行调整,维护由多个部分拼接在一起的大型系统。维护不仅适用于软件和基础架构,还适用于需要迭代最新技术的ML。

机器学习、软件、基础架构和系统维护四个部分成为了开发ML功能的巨大障碍。而软件的意义在于是降低障碍,开发人员则需要解决以前甚至没有考虑过的问题。只有克服这些障碍才能更好地通过ML进行软件开发。

【参考资料】
https://www.nyckel.com/blog/ml-too-hard-for-software-developers/