日記(7/23)

時刻 行動
6:00 起床
9:45 大学着
10:30 グラフィック表現論期末試験
11:25 昼食
13:00 非線形工学期末試験
14:45 電気機器システム期末試験
17:00 帰宅
19:00 日課(Youtube)
22:00 日課(Twitter)

期末考査

想定以上に簡単だった気がする.特に非線形工学で履修した事柄はなんか他のことにも役立てそうではある.

実際にSpectral Norm GANでも行列のL_2ノルムを操作し,Lipschitz制約を満たすようにDiscriminatorの重みを変更している.

どうやらL_2ノルムは行列を作用素と見たときに自然に定義されるノルムらしく(詳しくはわからない),重みを逐一||W||_2で割ってやることでDiscriminator全体が1-Lipschitzを満たすことができるようだ.

こう考えるとスペクトルノルムの導入はなかなか自然な感じがする.

実装

前に殴り書きした論文のまとめです.

hackmd.io

Kerasではいまいち動的にレイヤのパラメータ自体を操作させる方法が分からなかったので,どうにか調べていたらPytorchでの実装を発見した.

github.com

PytorchはChainer(この論文を書いたPFNが開発している!)同様,Define-by-Runが特徴のNNライブラリらしい.(というよりChainer経験者なら4時間くらいで凡そ理解できそうなくらい似てると思う)

今回は上のソースをほぼ写経したうえ,128\times12888860枚のアニメの顔画像をバッチサイズ32,潜在次元数256で学習を実行させた.

1エポックに大体5時間半掛かり,5エポック終わらせるのにおおよそ1日要した.

その結果,以下のようになった.なお潜在変数は固定した.その方がなんか学習してる感が出やすいと思ったので.

youtu.be

しかしこれだと既存のGANと比べてどうすごいのかいまいちわかんないなあ.

夏休みに入ったら学習結果の評価手法とかの論文も読み漁ってみたい所存