機械学習とかコンピュータビジョンとか

CVやMLに関する勉強のメモ書き。

Realistic Evaluation of Deep Semi-Supervised Learning Algorithmsを実装した

はじめに

半教師ありの勉強を兼ねてRealistic Evaluation of Deep Semi-Supervised Learning AlgorithmsをPyTorchで実装した.コードはgithubに公開してます.

諸々

基本的に著者らが公開している実装を参考にPyTorchで実装したが,まだ一部再現しきれていない. 論文に書かれていることと著者らの実装で異なる部分がいくつかあって,再現するのにちょっと苦労した(している). というかベースラインを揃えるというくらいなら嘘偽りなく論文を書いてほしいところ. やっぱり論文を書いてる研究者や研究機関と論文の質は関係ないなというところ.

論文と実装の大きな違いは,

  • L1/L2正則化がない
  • VATのLossの計算に使われるKLがノイズ計算時のKLと逆

の2点.特に2番目の方は酷い話で,そもそもVATはr_{adv}=\mathrm{argmax}_{r}KL(P(y|x)||P(y|x+r))という定義の下,ノイズr_{adv}を計算しており,ロスもLDS=KL(P(y|x)||P(y|x+r_{adv}))と計算するのが自然,というかVATの論文でも実装でもそうなっている.これに対し,今回の実装ではLDS=KL(P(y|x+r_{adv})||P(y|x))と計算しており,当然githubでissueがたてられていたが,著者の回答は"その方がうまく動いたから"というもの.これに対する質問者の返答は,これはロスをハイパーパラメータとしているのと同じだから良くないというもの.間違いなくその通りで,論文読んだ当初はいい論文だと思ったが,これではちょっと酷いと言わざるを得ない.上記のissueはこちら

また,この論文が出た後にいくつか半教師ありの論文が出ていて,どれもこの論文が提案した実験条件とちゃんと揃えてないのにこの論文から数値を取ってきていたため,正当な評価ができてないと思っていたが,これでは実験の再現ができないから仕方ないとも思ってしまう(とはいえダメなこと).

まとめ

論文の内容には責任を持ってほしいという感想以外なかった.教訓として自分は気をつけようというところ.