The performance of convolutional neural networks (CNN) depends heavily on their architectures. Transfer learning performance of a CNN relies quite strongly on selection of its trainable layers. Selecting the most effective update layers for a certain target dataset often requires expert knowledge on CNN architecture which many practitioners do not posses. General users prefer to use an available architecture (e.g. GoogleNet, ResNet, EfficientNet etc.) that is developed by domain experts. With the ever-growing number of layers, it is increasingly becoming quite difficult and cumbersome to handpick the update layers. Therefore, in this paper we explore the application of genetic algorithm to mitigate this problem. The convolutional layers of popular pretrained networks are often grouped into modules that constitute their building blocks. We devise a genetic algorithm to select blocks of layers for updating the parameters. By experimenting with EfficientNetB0 pre-trained on ImageNet and using Food-101, CIFAR-100 and MangoLeafBD as target datasets, we show that our algorithm yields similar or better results than the baseline in terms of accuracy, and requires lower training and evaluation time due to learning less number of parameters. We also devise a metric called block importance to measure efficacy of each block as update block and analyze the importance of the blocks selected by our algorithm.
翻译:进化神经网络(CNN)的性能在很大程度上取决于它们的结构。 CNN的学习性能转移在很大程度上取决于其可训练层次的选择。 为某个目标数据集选择最有效的更新层往往需要有关CNN架构的专家知识,而许多从业者并不拥有这种知识。 普通用户倾向于使用由域专家开发的现有架构(如GoogleNet、ResNet、高效网络等),随着层数不断增加,手选更新层变得日益困难和繁琐。 因此,我们在本文件中探讨应用基因算法来缓解这一问题。 广受欢迎的预先训练网络的进化层往往被分组成构成其基石的模块。 我们设计基因算法来选择用于更新参数的层块。 我们尝试高效的NetB0, 并使用Food-101、CIFAR-100和MangoLeafBD作为目标数据集。 我们通过实验我们的算法在精确度方面产生类似或更好的结果。 我们要求较低的培训和评估时间,因为学习了每个阶段的参数的重要性。 我们还设计了一个测量标准,以便学习每块的大小。</s>