理论问题与工程问题的差异在哪里?

理论问题与工程问题的差异有哪些,这是一个高深的问题,博主的见解不一定对,仅供参考。博主在还是硕士时,沉寂于水论文的庸俗之道中,也曾经有过很多惊艳的“创新”想法,结果上网一搜别人早就发了论文。整体来说,博主水论文是一直是围绕着理论问题在开展工作;后来博主面向工作时,则一直面向工程问题开展工作。因此,对理论问题与工程问题颇有思考,故写下这篇浅薄的博文。博主这里讨论的范围仅限于深度学习领域,其他一概不论。

1、理论问题与工程问题的联系

深度学习本就是一个及理论与工程应用的一个体系,其基于反向传播与梯度下降训练模型,为解决各种工程问题在理论上进行创造性突破,解决了行业上的回归(数值预测)、图像分类、目标检测、语义分割等等的工程问题。每解决相应的问题,在深度学习理论基石上都有创新。如从rcnn到faster-rcnn,从全卷积网络到系列语义分割模型、从attention模块到transromer模块。理论的创新为更好的解决工程问题提供了更好的指引。

同样,解决工程问题需要相应的理论基础,只是有的时候一些工程问题过于简单,依赖于一套固定的流水线操作即可解决;而有的工程问题过于复杂,需要算法工程师不断的探索新的流水线操作才能解决问题。

2、理论问题与工程问题的差异

正如上文所述,解决工程问题离不开理论基础的支持,只是有的理论基础过于夯实,所以大部分工程师都是一套流水线操作应用,而对于复杂的工程问题部分才会重构理论问题部分。正常来说,深度学习模型可分为生成式模型和判别式模型,生成式模型用于生成内容,判别式模型用于判断概率。生成式模型由vae、gan等;判别式模型较多设计图像分类、语义分割、实例分割、目标检测等。这种模型都能解决特定的工程问题。

在理论问题上只关心系统的一小部分内容,通过解决对理论进行补充完善深度学习中的某些不足。如全卷积网络提出了仅使用卷积层实现语义分割;resnet网络提出了跳跃连接的概念使训练更深层模型变成了可能;mobilenet提出了一个减少计算量的卷积模块;等等诸如此类。这些单个的理论概念使不用用到复杂工程上的,应用深度学习技术需要完整的理论体系。如使用图像分类模型,如densenet、efficientnet解决图像分类问题;用yolox,yolor、yolov7等解决目标检测问题。这其实也只是能浅显的解决一些工程问题。在实际情况中对理论技术的应用要贴合工程实际需求,理论技术只是为工程实践提供参考选项。

在工程实践中往往比较关心性能和精度,性能是指模型的运行需求和速度,精度一般指模型的acc、iou、recall等评价指标。在工程领域解决性能问题,一方面靠堆硬件,另一方面靠理论优化(如算子折叠、轻量化结构、知识蒸馏、模型量化等);在工程领域解决精度问题,这则是一个更为开放的话题。除了模型选型外,涉及到训练数据采集、数据增强方式、结果增强方式等。

理论问题大都只关注了工程应用中的一小部分,解决工程问题需要完整的系统工程思想,需要应用到多个理论技术

3、如何更好的解决工程问题

研究一切理论问题的本质,都是为了解决工程问题。这使得我们要抛开对理论技术的一些固有偏见,限定技术的使用范围。很多的深度学习算法工程师都是在理论上一知半解,在编程上一窍不通,赶鸭子上阵成了算法工程师(程序员)。对于理论的应用大都停留在表层,对技术的应用停留在表层,认为什么样的模型就只能干什么样的事情。博主工作前也曾被卡在这里,导致无法解决很多工业问题(工业问题对精度要求极高,且要求模型具备文档的泛化能力)。

因为,很多理论问题的研究都是基于特定背景下的,如图像分类技术的研究背景在于imagenet数据分类;语义分割技术的研究在于将图像的前景与背景分隔开;目标检测的研究背景是找出图像中的特定目标。虽然这些技术都貌似有着固定的应用场景,但是在工程实践中其实是可以打破这些场景限制的。因为,有些时候工程上的指标需求可能突破理论极限。比如博主曾做
过几个工业上的缺陷检测项目,顾客对缺陷样本要求的召回率就是99.99%以上。这在理论上基本就是不可能的(博主试过很多个深度学习分类模型,当时的模型没有一个能满足要求的)。

为了实现项目中克扣的精度需求,博主突破了对深度学习技术应用的偏见,将语义分割应用到了图像分类任务中【先分割出目标的特征区域,再对特征区域进行分类训练】。博主也曾将传统的图像处理方法与深度学习方法相结合,每一个方法都确保某一方面不出问题,最终实现精度需求。

经此总结:博主认为解决好工程问题的本质就是要用好理论技术,不要对技术的应用具有偏见。每一项理论技术的应用或许只是解决一小部分的工程问题,但是结合到一起就可以解决复杂的工程问题。

猜你喜欢

转载自blog.csdn.net/a486259/article/details/126102265