差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン 前のリビジョン
次のリビジョン
前のリビジョン
intro:researches:machine [2023/05/29 17:30] – [クリティカルバッチサイズの推定] Naoki SATOintro:researches:machine [2023/06/02 13:40] (現在) – [収束解析] Naoki SATO
行 103: 行 103:
 ( \sigma_D^2 + M_D^2 )}}_{C_D} ( \sigma_D^2 + M_D^2 )}}_{C_D}
 \end{align} \end{align}
-ただし、$\alpha^G, \alpha^D$はoptimizerの学習率で、Nはステップ数、bはバッチサイズです。その他の定義については論文を参照してください。このことから、ステップ数$N$とバッチサイズ$b$を大きく、学習率$\alpha^G, \alpha^D$は小さくすれば、それぞれの右辺は0に近くなり、局所的ナッシュ均衡を近似できることがわかります。+ただし、$\alpha^G, \alpha^D$はoptimizerの学習率で、Nはステップ数、bはバッチサイズです。その他の定義については[[https://arxiv.org/pdf/2201.11989.pdf|論文]]を参照してください。このことから、ステップ数$N$とバッチサイズ$b$を大きく、学習率$\alpha^G, \alpha^D$は小さくすれば、それぞれの右辺は0に近くなり、局所的ナッシュ均衡を近似できることがわかります。
  
 ==== ステップ数$N$とバッチサイズ$b$の関係 ==== ==== ステップ数$N$とバッチサイズ$b$の関係 ====
行 201: 行 201:
 ここまでのことを踏まえて、『学習が収束するまでに必要なステップ数$N$』を、『十分に低いFIDを達成するまでに必要なステップ数$N$』と読み替えます。 ここまでのことを踏まえて、『学習が収束するまでに必要なステップ数$N$』を、『十分に低いFIDを達成するまでに必要なステップ数$N$』と読み替えます。
 LSUN Bedroomデータセットを使って、DCGANを訓練する場合、FIDの極限は41.8程度です。学習の不安定性を考慮して、今回の実験では、FID=70を十分に低いFIDだとして、FID=70を停止条件にします。\\ LSUN Bedroomデータセットを使って、DCGANを訓練する場合、FIDの極限は41.8程度です。学習の不安定性を考慮して、今回の実験では、FID=70を十分に低いFIDだとして、FID=70を停止条件にします。\\
 +
 +{{ :intro:researches:fid.png?800 |}}
 \\ \\
   3. 学習率\\   3. 学習率\\
行 212: 行 214:
 {{ :intro:researches:hyper.png?800 |}} {{ :intro:researches:hyper.png?800 |}}
  
 +なお、$\beta_1$と$\beta_2$は一般的な値を使用します。\\
 +\\
 +それでは、いよいよバッチサイズを変えて、『FID=70を達成するまでに必要なステップ数』を計測していきましょう。
 +バッチサイズは大きければ大きいほどGPUをたくさん使用するので、計算機の都合上、今回の実験では、$b=[4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096]$の範囲で実験しました。
 +$Nb-b$グラフを作ると、次のようになります。
 +
 +{{ :intro:researches:nbb01.png?600 |}}
 +
 +予想通り、全てのoptimizerで凸関数になっています。このグラフの最小値をとるような$b$が、それぞれのクリティカルバッチサイズです。これで、Adamのクリティカルバッチサイズの測定値は$2^5=32$であることが分かりました。これを使って、未知数$\sigma_G^2 / \epsilon_G^3$を逆算しましょう。Adamの推定式をもう一度掲載します。
 +\begin{align}
 +b_G^\star \geq 
 +\frac{\sigma_G^2}{\epsilon_G^3}\frac{\alpha^G}{(1-\beta_1^G)^3 \sqrt{\frac{\Theta}{1-\beta_2^G} \frac{1}{|S|^2}}}
 +\end{align}
 +これを未知数$\sigma_G^2 / \epsilon_G^3$について書き直して、既知のパラメータに使用した値を代入すると、
 +\begin{align}
 +\frac{\sigma_G^2}{\epsilon_G^3} \leq 788.7
 +\end{align}
 +とできます。これを使えば、AdaBeliefとRMSPropの推定値を計算できます。推定値は四角で、測定値は丸でマーキングしてあります。
 +さらに、生成器のモデルにDCGAN architectureを採用している場合は、この比$\sigma_G^2 / \epsilon_G^3$を適用できるので、別のGANでDCGAN architectureを採用している場合にもこの推定式は有効です。実際、WGAN-GPでCelebAデータセットを訓練する場合にも、推定値と測定値は近くなります。
 +
 +{{ :intro:researches:estimated.png?600 |}}
  
 +DCGANがSection4.1で、WGAN-GPがSection4.2に当たります。RMSProp以外では完全に推定に成功していることが分かります。RMSPropで推定が上手くいかない原因は、RMSPropのクリティカルバッチサイズの推定式に$\beta_1$と$\beta_2$が含まれていないことであると考えられます。
  
 Naoki Sato, Hideaki Iiduka: Existence and Estimation of Critical Batch Size for Training Generative Adversarial Networks with Two Time-Scale Update Rule, Proceedings of The 40th International Conference on Machine Learning, PMLR 202: ??–?? (2023) Naoki Sato, Hideaki Iiduka: Existence and Estimation of Critical Batch Size for Training Generative Adversarial Networks with Two Time-Scale Update Rule, Proceedings of The 40th International Conference on Machine Learning, PMLR 202: ??–?? (2023)
  • intro/researches/machine.1685349013.txt.gz
  • 最終更新: 2023/05/29 17:30
  • by Naoki SATO