一句话:提出把多分类 DNN 分解为可复用、可替换的模块,无需重训即可组合出新模型。
深度学习模型通常被当作单体组件:要增删某类识别逻辑或替换部分逻辑,必须修改训练样本并重新训练整个 DNN。本文主张像分解单体软件代码那样把 DNN 分解为 DNN 模块,并提出面向多分类问题的 DNN 分解方法。作者在 MNIST、EMNIST、FMNIST、KMNIST 四个经典任务上评估,表明分解后的模块可用于复用并组合成不同 DNN,也可在无需重新训练的情况下将一个 DNN 模块替换为另一个。由模块组合得到的 DNN 在测试准确率上至少不差于传统单体 DNN。
Deep learning is being incorporated in many modern software systems. Deep learning approaches train a deep neural network (DNN) model using training examples, and then use the DNN model for prediction. While the structure of a DNN model as layers is observable, the model is treated in its entirety as a monolithic component. To change the logic implemented by the model, e.g. to add/remove logic that recognizes inputs belonging to a certain class, or to replace the logic with an alternative, the training examples need to be changed and the DNN needs to be retrained using the new set of examples. We argue that decomposing a DNN into DNN modules— akin to decomposing a monolithic software code into modules—can bring the benefits of modularity to deep learning. In this work, we develop a methodology for decomposing DNNs for multi-class problems into DNN modules. For four canonical problems, namely MNIST, EMNIST, FMNIST, and KMNIST, we demonstrate that such decomposition enables reuse of DNN modules to create different DNNs, enables replacement of one DNN module in a DNN with another without needing to retrain. The DNN models formed by composing DNN modules are at least as good as traditional monolithic DNNs in terms of test accuracy for our problems.