使用半监督学习从研究到产品化的3个教训( 三 )


需要注意的是 , Noisy Student方法是一个任务无关的框架 , 可以被广泛应用:图像分类 , 目标检测 , 情感分析 , 等等 。 **对我们来说 , Noisy Student方法是我们尝试的所有技术中用于目标检测最成功的 。 **我们在后面会讨论为什么FixMatch的物体检测版本(STAC)和其他方法可能对我们无效 , 但是我们坚信 , 与其他方法相比 , Noisy Student的简单性和灵活性是我们在产品模型中看到改进的原因 。
为什么这么简单?现有的训练超参数和设置几乎没有改变 。 以下是整个管道所需要做的:

  1. 把我们现有的生产模型当作教师模型 。
  2. 编写一些脚本 , 与教师模型一起推断和改进未标记数据上的伪标签(关于伪标签改进的更多信息 , 请参阅lesson #2) 。
  3. 训练“学生”模型 , 增加噪音(增强等) 。
  4. 按照图中显示的框架重复这个过程 。
其他的一些想法和要点:
  • 我们惊讶地发现 , 在使用Noisy Student方法时 , 未标记数据比标记数据少的情况下 , 我们的一些模型得到了改进 。 更多关于这个的内容 , 请参见lesson #2 。 一般来说 , 未标记数据越多越好 。
  • 我们发现 , 在没有进行增强 , 比如dropout、随机深度或软伪标签的情况下 , 使用普通的自我训练 , 我们的学生模型的表现得到了改善 。 一旦增加了这些 , 就有可能进一步提高我们的性能 , 就像在ImageNet上那样 。 、
  • 使用较大的学生模型的结果是有好有差的 , 对我们来说 , 这意味着在我们的检测模型中使用从ResNet-50到ResNet-101的主干 。
总的来说 , 在图像分类或目标检测方面 , 简单性是第一位的 。 FixMatch明显比MixMatch更容易适应我们的自定义图像分类数据集 , 而Noisy Student只需要对我们现有的物体检测管道进行很少的改变就可以看到改进的性能 。
Lesson #2: 启发式伪标签优化可以非常有效果伪标签 , 也被称为 self-training , 是在SSL中出现的一个范式 , 早在20世纪60年代和70年代 , 因为它的简单而被坚持了下来 。 引入伪标签的深度SSL展示了使用有标签数据的时候 , 这个想法是如此的简单而强大 。 使用该模型在未标记数据上推断标签(现在叫伪标签) , 然后用标签数据和伪标签数据再进行训练 。 许多现在的SSL技术都在使用某种形式的伪标签 , 包括FixMatch和使用Noisy Student的Self-Training 。
然而 , 这些伪标签常常是有噪声的 , 需要某种形式的提纯才能使用 。 在FixMatch和Noisy Student中 , 这意味着对推断出的伪标签应用一个临界值(比如0.7或0.9) , 只取那些softmax confidence得分高于临界值的预测 。 我们发现这对于获得高质量的伪标签是一个有用的启发式方法 , 也发现对伪标签应用与其他领域特定的启发式方法在Noisy Student中有显著的效果 。
我们在讨论什么样的启发式?例如 , 你正在为一家房地产公司构建一个物体检测分类器 , 该模型需要为home中的不同物体提供边框 。 你注意到(教师)模型的预测通常是好的 , 然而 , 分类器倾向于对未标记的集合产生几个不正确的、高可信度的预测 , 其中一些梳妆台实际上是厨房岛 。
使用半监督学习从研究到产品化的3个教训文章插图
这里有一些启发式的例子 , 我们可以选择优化这个标签:
  • 如果厨房岛和床的预测出现在同一图像中 , 将厨房岛标签转换为梳妆台 。
  • 如果梳妆台和厨房岛的预测出现在同一幅图像中 , 把厨房岛标签转换为梳妆台 。
  • 如果厨房岛 , 床 , 和梳妆台的预测出现在同一图像 , 将厨房岛标签转换为梳妆台 。
以上哪一种启发式最有意义?这将取决于你的数据集以及最常见的错误类型 。 如果模型在检测床方面做得很好 , 也许像第一个或第三个那样的启发式可能会有用 , 因为我们不希望床和厨房岛出现在同一幅图像中 。