深度神经网络的应用显著改善了各种数据挖掘和计算机视觉算法的性能,因此广泛应用于各类机器学习场景中。然而,深度神经网络方法依赖于大量的标记数据来训练深度学习模型,在实际应用中,获取足够的标记数据往往既昂贵又耗时。因此,一个自然的想法是利用现有数据集(即源域)中丰富的标记样本,辅助在要学习的数据集(即目标域)中的学习。解决这类跨领域学习问题的一种有效方法就是迁移学习:首先在一个大的标记源数据集(如 ImageNet)上训练模型,然后在目标数据集上进行模型调整更新,从而实现将已训练好的模型参数迁移到新的模型来帮助新模型训练。
基于深度神经网络的迁移学习主要有三种方式:一是迁移学习(Transfer Learning),重新训练全连接层,其他预训练模型的卷积层不变;二是特征向量提取(Feature Vector Extraction),利用预训练模型的卷积层提取源和目标数据集的特征向量,之后训练目标域中的全连接网络;三是微调(Fine-tune),重新学习分类层的参数,而其余网络层参数则沿用预训练模型的初始化值。
研究人员发现,仅靠改进迁移学习的方式(如上述三种迁移学习方式)并不能进一步降低目标域中模型的损失值,而选择改进用作模型预训练的源数据集的丰富程度则是一种有效的方法。源数据集的丰富程度并不仅由数据集中数据量的大小决定,而同时取决于用于预训练的数据集是否能够有效捕获到与目标域中数据集相似的差异性特征(因素)。前期的方法主要是通过不同的度量方法找到源数据集与目标数据集中的相似样本数据,例如 [1] 使用滤波器组响应中的特征来选择源数据集中的最近邻样本,与使用整个源数据集相比,该方法具备更好的性能。[2] 利用土方运距(Earth Mover』s Distance,EMD)对源数据集和目标数据集之间的区域相似性进行量化计算,之后利用一个简单的贪婪子集生成选择准则提高目标测试集的性能。然而上述方法只是找到相似的样本数据,无法有效捕获目标数据集中的变化判别因素,因此迁移学习的效果改进有限。这种微调相当于对迁移学习的前两种步骤的改进,进一步提升了迁移学习的性能,因此本文探讨的是改善微调方式的迁移学习。
Ngiam et al. 提出了一种利用权值捕获源域和目标域中相似信息从而有效调整数据分布的方法,即基于目标数据集的重要权值域自适应迁移学习方法(Domain Adaptive Transfer Learning,DATL)[1]。DATL 利用概率形态识别源数据集中能够有效捕获目标数据集中变化判别因素的样本数据,使用 JFT 和 ImageNet 数据集作为源训练数据,并考虑一系列用于微调的目标数据集。在微调过程中,对网络中的分类层进行随机初始化训练。在这项工作的基础上,Zhu et al. 提出了共享权值的概念,即对源和目标任务模型之间共享权值联合优化的学习框架(Learning to Transfer Learn,L2TL)[2],其中关于共享权值的计算是利用基于目标数据集的性能度量矩阵的强化学习模块(RL)实现的,从而保证自适应输出每个源数据集中类别的权值。L2TL 基于目标数据集中的测试性能自适应的推断域相似度。本文对 DATL 和 L2TL 进行详细的分析,目的是探讨在迁移学习中利用权值调整数据分布的有效性,以及计算权值的不同方式对迁移学习效果、计算成本等的影响。
1、Domain Adaptive Transfer Learning with Specialist Models
原文地址:https://arxiv.org/pdf/1811.07056.pdf
方法分析
DATL 使用 JFT 和 ImageNet 数据集作为源预训练数据,不在源数据集和目标数据集之间执行任何标签对齐处理。而是利用数据集之间的标签产生的权值进行调整。在微调过程中,对神经网络中的分类层进行随机初始化训练。首先考虑一个简化的设置,即源数据集和目标数据集位于相同的像素 x 和标签 y 值集上。预训练阶段,在源域中优化参数θ以最小化损失函数:
(1)
其中 Ds 表示源数据集,L(f_θ(x),y) 为模型 f_θ(y) 的预测与标签真值 y 之间的交叉熵损失函数。源数据集 Ds 中的数据分布与目标数据集 Dt 中的分布可能不同,通过加大与目标数据集最相关的样本的权值来解决这种问题。目标数据集 Dt 中的损失函数为:
(2)
其中 Ps、Pt 分别表示源和目标数据集的概率分布。结合以上两个公式,重新计算(2)包含源数据集 Ds 的损失函数如下:
(3)
接下来,假设 Ps(x|y) 约等于 Pt(x|y),即在源数据集中给定特定标签的样本分布与目标数据集的近似分布是相同的,(3)可简化为:
其中 Pt(y)/Ps(y) 为我们需要的权值。
为了使 DATL 在实践中适用,需要对简化设置(即源数据集和目标数据集共享相同的标签空间)进行放松假设,放松假设的处理过程具体为:「在真实的应用场景中,源数据集和目标数据集一般具有不同的标签集,解决方案是 Pt(y) 和 Ps(y) 的估计都在源域中进行,而不再基于目标域估计 Pt(y)。通过将标签出现的次数除以源数据集的样本总数计算分母 Ps(y)。为了估计 Pt(y),则使用一个分类器来计算来自源数据集的标签在来自目标数据集的样本上的概率。」
完整的 DATL 方法示例见图 1。为了计算重要性权值 Pt(y)/Ps(y),首先使用在整个 JFT 数据集上预训练的图像模型来评估来自目标数据集的图像。对于每一幅图像,能够得到其对 JFT 中 18291 个类的预测。对这些预测进行平均化处理后得到 Pt(y)。通过将标签在源预训练数据集中出现的次数除以源预训练数据集中的样本总数,直接从源预训练数据集中估计 Ps(y)。因此,权值 Pt(y)/Ps(y) 表示源预训练数据集中给定标签的重要程度。使用这些重要性权值在整个 JFT 数据集上训练生成预训练模型,然后在目标数据集上进行微调。
图 1. DATL 方法完整过程