1. 程式人生 > 其它 >Temporal Ensembling for Semi-Supervised Learning

Temporal Ensembling for Semi-Supervised Learning

目錄

Laine S. and Aila T. Temporal ensembling for semi-supervised learning. In International Conference on Learning Representations (ICLR), 2017.

本文提出兩種半監督演算法: \(\prod\)-model和temporal emsembling.
前者令統一樣本的不同檢視(通過不同資料增強和dropout得到)的特徵接近,
後者則是通過滑動平均維護這些特徵. 相較於前者, 後者更加穩定.

主要內容

訓練集:

  • 帶標籤資料 \(\{(x_i, y_i)\}_{i=1}^{M}\);
  • 不帶標籤資料 \(\{x_j\}_{j=M + 1}^N\).

\(y \in \{1, 2, \cdots, C\}\).

資料增強: \(g(\cdot)\);
網路: \(f_{\theta}: x \rightarrow z\). (其中 \(z\)概率向量)

*-model

對於所有資料而言, \(x\)經過\(f\circ g\)得到兩個不同的概率向量\(z, \tilde{z}\), 並利用均方損失:

\[\frac{1}{C}\|z - \tilde{z}\|^2 \]

迫使二者靠近.

對於帶有標籤的資料而言, 還有普通的交叉熵損失. 讀者可能會有疑問, 為啥\(z, \tilde{z}\)不用交叉熵損失:

\[-\sum_{k=1}^C \tilde{z}_k \log z_k, \]

作者沒有明說, 只是說均方損失效果更好. 不過, 既然用均方損失, 那會不會用softmax之前的特徵更合適?

Temporal ensembling

與之前不同的是, 目標向量\(\tilde{z}\)不是通過再次推斷\(x\)得到的, 而是通過滑動平均

\[Z \leftarrow \alpha Z + (1 - \alpha) z \]

加上偏置矯正?

\[\tilde{z} \leftarrow Z / (1 - \alpha^t). \]

注意因為\(Z_0 = \tilde{z}\)

初始化為0,
所以(歸納法)

\[Z_t = (1 - \alpha) \sum_{i=1}^t \alpha^{t - i} z_i, \]

\[\sum_{k=1}^C Z_t = (1 - \alpha) \sum_{i=1}^t \alpha^{t - i} \sum_{k=1}^C z_i = (1 - \alpha) \sum_{i=1}^t \alpha^{t - i} = 1 - \alpha^t. \]

所以這個校準可以保證\(\tilde{z}\)滿足概率的性質.

超引數的選擇

作者選擇動量\(\alpha = 0.6\), 在初始的80個epochs內\(w(t)\)\(0\)爬升到\(w_{max} \cdot M/N\), 具體方式為 Gaussian ramp-up:

\[w(t) = \left \{ \begin{array}{l} \exp [-5(1 - t)^2] \cdot (w_{max} \cdot M/ N) & t \in [0, 1] \\ w_{max} \cdot M / N & t > 1. \end{array} \right . \]

注: \(t\)在前80個epoch內是線性增加到1的.