网络前置任务(Pretext task)和下游任务(downstream tasks)

  Pretext task 可以理解为是一种为达到特定训练任务而设计的间接任务。
  比如,要训练一个网络来对 ImageNet 分类,可以表达为 $f_{\theta}(x): x \rightarrow y$ ,目的是获得具有语义特征提取/推理能力的 $\theta$ 。假设有另外一个任务 (Pretext task ),可以近似获得 $\theta$。 比如, $Auto-encoder$ ($\mathrm{AE}$) , 表示为: $g_{\theta}(x): x \rightarrow x$ 。为什么 $AE$ 可以近似 $\theta$ 呢? 因为 AE 要重建 $x$ 就必须学习 $x$ 中的内在关系,而这种内在关系的学习又是有利于我们学习 $ f_{\theta}(x)$ 的。这种方式也叫做预训练,为了在目标任务上获得更好的泛化能力,一般还需要进行 $fine-tuning$ 等操作。
  因此,Pretex task 的好处就是简化了原任务的求解,在深度学习里就是避免了人工标记样本,实现无监督的语义提取。
  Pretext任务可以进一步理解为:对目标任务有帮助的辅助任务。这种任务目前更多用于 Self-Supervised learning,即一种更加宽泛的无监督学习。以往训练深度学习需要大量的人工标注的样本,这是费时耗力的,而自监督的提出就是为了打破这种人工标注样本的限制,目的是在没有人工标注的条件下也能高效的训练网络,自监督的核心问题是如何产生伪标签(Pseudo label),而这种伪标签的产生是不涉及人工的,比如上述的 AE 的伪标签就是自身。这里举几个在视觉任务里常用的 pretext task 伪标签的产生方式:

  Rotation(图片旋转)

   

  Colorization(图片上色)

  

   Inpainting(图片补全)

  

   Jigsaw Puzzle/Context Prediction(关系预测/上下文预测)

  

 

 

 

posted @ 2021-07-17 12:28  图神经网络  阅读(6195)  评论(0编辑  收藏  举报
Live2D