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(關系預測/上下文預測)