目录

软件工程1:传统软件系统与基于深度学习的软件系统差异分析

软件工程:1.传统软件系统与基于深度学习的软件系统差异分析

1. 运行机制

运行机制的不同指明了传统软件系统和基于深度学习软件系统的分界

  • 传统软件系统:对于给定问题,进行功能和模块划分,每个子任务通过硬编码的方式实现,并最终组合组成系统。特点是当每个子任务算法确定后,算法本身并不依赖外部数据或环境本身,即可完成目标任务,但是算法与应用场景是强相关的,可迁移性和适应性较弱。
  • 基于深度学习的软件系统:在我看来基于深度学习的软件系统并非完全由深度学习驱动,而是在传统软件的基础上,融入深度学习作为辅助或核心算法,对于每一个子任务的解决,不是根据辑判断的方式进行,而是以数据驱动,学习经验的方式,根据已有数据(即经验)的方式,对目标任务给出预测结果。他们之间的根本差别在于机器学习是以隐式而非直接的方式解决问题,在依赖外部数据的情况下,对任务的处理有较好的泛化性和迁移能力。

2. 系统架构

由于运行机制的不同,与传统软件系统不同,基于深度学习的软件系统高度依赖数据,因此在系统架构中,除了深度学习模型以外,模型的上游需要有服务基础设置、数据获取、特征提取等步骤,模型的下游有数据验证、分析、监控等

3. 软件开发

最后在实际软件开发中,我认为最困难的一点在于,确实一个系统是否真正需要基于深度学习,因为深度学习能够解决的问题是有限的,随着用户的需求不断调整,是否会出现方案的弃用是极其严重的问题。

除此之外,由于深度学习算法对数据的强依赖,因此在开发过程中,如果数据没有就位,工作就会推迟,这种对顺序有很强以来的模型,很难在明确顶层设计和接口后并行开发,这在传统开发中是相对少见的。

并且,模型的训练也是不确定的,对于项目管理者来说,更加难以估计项目的进展情况,再细化产出和目标时,也存在较大的难度。

最后在测试时,如何对隐式解决问题的深度学习算法进行测试,也是充满挑战,覆盖率等指标如何指导深度学习算法的有效性就我个人而言,还没有太清晰的思路。