迁移学习作为机器学习领域的重要分支,其核心目标是利用源域(source domain)的知识来提升目标域(target domain)的学习性能。在实际应用中,我们常常遇到这样的情况:源域拥有大量标注数据,而目标域数据稀缺或完全无标注。数据分布自适应方法正是为了解决源域和目标域之间分布差异这一关键问题而提出的。
数据分布自适应主要分为两类:边缘分布自适应(Marginal Distribution Adaptation)和条件分布自适应(Conditional Distribution Adaptation)。边缘分布自适应关注的是输入特征空间的整体分布对齐,而条件分布自适应则更进一步,致力于对齐给定输入特征后输出标签的条件分布。简单来说,前者调整的是"整体轮廓",后者调整的是"细节特征"。
在实际项目中,我们发现条件分布自适应往往能取得更好的效果,因为它考虑了类别信息,避免了不同类别样本被强行对齐导致的负迁移(negative transfer)问题。
设源域为Dₛ = {(xₛⁱ, yₛⁱ)},目标域为Dₜ = {xₜʲ},其中i=1,...,nₛ,j=1,...,nₜ。条件分布自适应的目标是最小化以下分布差异:
D(P(yₛ|xₛ), P(yₜ|xₜ))
这个距离度量了两个领域中,给定相同特征时标签分布的差异。理想情况下,当这个距离为0时,源域上训练的模型可以直接应用于目标域。
最大均值差异(Maximum Mean Discrepancy, MMD)是衡量分布差异的常用方法。对于条件分布,类别的MMD距离可以表示为:
MMD_c² = ||1/nₛⁱ Σφ(xₛⁱ) - 1/nₜⁱ Σφ(xₜⁱ)||²_H
其中φ(·)是将数据映射到再生核希尔伯特空间(RKHS)的特征映射,H表示RKHS空间,nₛⁱ和nₜⁱ分别表示源域和目标域中类别i的样本数量。
STL(Stratified Transfer Learning)方法的创新点在于提出了"类内迁移"的概念。与传统全局迁移方法不同,STL在以下三个方面进行了改进:
这种方法特别适合行为识别等任务,因为同一行为在不同场景下(如不同人的行走方式)虽然整体特征可能差异较大,但类内特征往往保持相似。
STL采用集成学习的思想生成伪标签:
这种方法比单一分类器更可靠,能有效减少初始伪标签的噪声。
对于每个类别c,计算其类内MMD距离:
MMD_c² = ||1/nₛⁱ Σφ(xₛⁱ) - 1/nₜⁱ Σφ(xₜⁱ)||²_H
其中nₛⁱ和nₜⁱ需要根据伪标签动态调整。实际操作中,我们会设置一个置信度阈值,只使用高置信度的伪标签样本参与计算。
在RKHS空间中进行两步操作:
这个过程可以形象地理解为:先将每个类别的"特征云"压缩到其主要方向上,然后将这些"云朵"的位置和形状调整到一致。
基于我们的项目经验,STL在行为识别中的典型实施流程如下:
数据预处理阶段:
模型训练阶段:
迁移学习阶段:
迭代优化阶段:
根据我们在多个项目中的实践经验,关键参数设置建议如下:
| 参数 | 推荐值 | 调整建议 |
|---|---|---|
| 基础分类器数量 | 3-5个 | 确保分类器多样性 |
| 伪标签置信度阈值 | 0.8 | 数据质量高可降低至0.7 |
| RKHS降维保留能量 | 85% | 复杂场景可提高至90% |
| 最大迭代次数 | 3 | 通常2轮后改善有限 |
| 核函数带宽 | 中位数启发式 | 自动计算样本距离中位数 |
特别注意:伪标签质量是STL成功的关键。我们发现在第一轮迭代中设置较高的置信度阈值(如0.9),虽然会减少可用样本量,但能显著提高最终性能。
问题表现:迁移后性能反而比直接使用源域模型更差
可能原因:
解决方案:
问题表现:迭代过程中性能波动大或不收敛
可能原因:
解决方案:
问题表现:处理大规模数据时速度过慢
优化建议:
STL方法不仅限于行为识别,我们在以下领域也取得了成功应用:
当前研究前沿主要集中在以下几个方向:
在实际项目中,我们发现将STL与深度特征提取结合(如先用CNN提取特征,再进行STL迁移),往往能取得最佳效果。这种混合方法既利用了深度网络的强大表示能力,又保持了STL在分布对齐上的理论保证。