Temporal Ensembling for Semi-Supervised Learning
阿新 • • 發佈:2022-04-11
目錄
初始化為0,
所以(歸納法) \[Z_t = (1 - \alpha) \sum_{i=1}^t \alpha^{t - i} z_i, \]
概
本文提出兩種半監督演算法: \(\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}\)
所以(歸納法) \[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的.