Teaching Machine Learning to Software Engineers
本文通过定义结构化主题清单、通过课程映射识别覆盖范围差距,并调查教师以得出将高优先级机器学习概念整合进现有课程的循证指南,旨在解决本科软件工程课程中关于人工智能/机器学习系统的空白。
原始论文采用 CC BY 4.0 许可(http://creativecommons.org/licenses/by/4.0/)。 这是对下方论文的AI生成解释。它不是由作者撰写或认可的。如需技术准确性,请参阅原始论文。 阅读完整免责声明
想象一下你正在盖一座房子。几十年来,培养一名软件工程师的蓝图非常清晰:教他们如何砌砖、搭建框架和安装水管。他们学习构建像钟表一样精准运行的系统——如果你按下按钮,特定的灯就会亮起。
但今天,建筑业已经发生了变化。我们不再仅仅是建造静态的房屋,我们正在建造会“学习”的“智能家居”。这些房屋拥有 AI 大脑,可以预测你何时到达、调节温度,甚至在漏水发生前就发现问题。
这篇论文就像是一份来自一群建筑监工(大学教授)的报告,他们意识到了一件令人担忧的事:我们仍在教未来的工程师如何建造旧式的房子,但他们被雇佣去建造的是智能化的房子。
以下是该论文研究结果的详细拆中,使用了简单的类比:
1. 问题所在:“工具箱”的不匹配
作者(Nafiseh Kahani 和 Jason Jaskolka)研究了大学提供给软件工程专业学生的标准“工具箱”。他们将此与新的“智能家居”蓝图(机器学习系统)进行了对比。
他们发现了一个差距。虽然学生们擅长基础知识(如砌砖),但他们往往缺乏处理房屋中“学习”部分的特定工具。
- 旧方式: “如果门开了,就开灯。”(确定性逻辑)。
- 新方式: “门可能会开,但系统需要从成千上万次过去的开门记录中学习,以判断是人在开门还是宠物在开门,并据此做出决定。”(概率性逻辑)。
2. 库存清单:缺失了什么?
研究人员创建了一个包含 36 种不同“技能”的庞大清单,用于构建这些智能系统。他们将这些技能分为五个类别:
- 数学基础(物理学): 学生们掌握基础数学,但缺少理解 AI 如何学习所需的“高级物理学”(例如如何微调学习过程或处理复杂的概率问题)。
- 数据结构(存储): 他们知道如何存储文件,但不知道如何存储 AI 需要“吞噬”的海量、杂乱的数据湖。
- 平台与计算(电网): 他们知道如何插上台灯,但不知道如何布设支撑训练这些 AI 大脑所需的大规模、高速电网(如 GPU 和云集群)。
- 模型运维(维护): 这是最大的差距。在常规软件中,一旦建成,它就能永久工作。但在 AI 中,“大脑”可能会随着时间的推移变得“生病”或遗忘事物。学生们并未被教授如何监控 AI、在它产生困惑时修复它,或如何安全地更新它。
- 工程中的 AI(智能工具): 他们没有被教授如何利用 AI 来辅助构建软件(例如使用 AI 来寻找 Bug 或编写代码)。
3. 调查:询问老师们
研究人员并非凭空猜测;他们询问了来自全球(北美、欧洲、亚洲、澳大利亚)的 36 位软件工程教授两个问题:
- “您目前是否在教授这些课题?”
- “如果您没有教授,您是否认为您应该教授?”
结果如下:
- 基础知识没问题: 大多数教授都会教授基础数学和编程。
- “智能”部分缺失: 几乎没有人教授高级维护、监控和“AI 运维”(MLOps)。
- 老师们想要教授这些内容: 当被问及缺失的主题时,教授们压倒性地表示:“是的,我们的学生需要了解这些!”
- “为什么不教?”的理由清单: 老师们给出了三个主要原因,解释了为什么他们无法在明天就增加这些课程:
- 专业知识差距: “我是软件老师,不是 AI 专家。我了解得不够多,无法教授它。”
- 书包已超重: “课程表已经满了。如果我们加入 AI,就必须删减其他内容。”
- 官僚程序: “更改课程设置需要多年的文书工作和会议。”
4. 解决方案:“模块化”方法
论文建议我们不需要拆掉整座房子重新建造。相反,我们应该使用模块化集成。
把它想象成装修厨房。你不需要重建整个房子来添加一台智能冰箱。你只需要将智能冰箱嵌入现有的橱柜空间即可。
- 建议: 不要为每个人都创建一个全新的“AI 专业”。相反,将现有的软件工程课程(如“测试”或“项目管理”)与 AI 案例相结合。
- 示例: 在教授“测试”时,展示如何测试一个识别面部的 AI,而不仅仅是一个计算器。
- 示例: 在教授“维护”时,展示如何监控一个在天气变化时开始出错的 AI 模型。
总结
这篇论文是一个警钟。大学正在毕业一批优秀的软件工程师,他们擅长构建静态工具,但却让他们在面对未来那些“活生生的”、具有学习能力的软件系统时显得准备不足。老师们知道这一点并希望解决问题,但他们需要帮助来更新自己的知识,并找到将这些新技能融入拥挤课表而不破坏现有课程的方法。
目标并不是要把每个软件工程师都变成数据科学家;而是要赋予他们足够的“AI 素养”,使他们能够构建、修复和管理正在成为常态的智能系统。
您所在领域的论文太多了?
获取与您研究关键词匹配的最新论文每日摘要——附技术摘要,使用您的语言。