MetzGoogle背景GANはGeneratorとDiscriminatorの2つの関数から構成される、データの分類と生成を行うニューラルネットワークである。GANは非常に精巧なな分布を生成できる一方で、解決されていない課題も多い。学習の安定性については非常に難しく、学習が正常に機能しないことが多々発生してしまい、正確にハイパーパラメータを設定することが求められる。この問題には、GeneratorとDiscriminatorの学習のバランスが非常に重要になる。一般に、学習の初期はDiscriminatorが早く学習され先に精度が高くなる。collapseと呼ばれる、Generatorが単一の画像しか生成できなくなる現象が起こってしまう。Networks)を提案する。提案手法BEGANの設計の概念図を下記に示す。特徴を下記に列挙する。samplingは近傍点を取得することで実現するEncoderとDecoderの境界では、全結合層によってデータの受け渡しを行うものとする通常のlossとは異なり、ワッサースタイン計量から算出したlossを使用するBEGANのlossの算出式は以下の様になる。128最大のモデルでGPUを使用して学習に2日半、小さめのモデルで数時間学習させた。収束の測定GANの学習が収束したことを判断することは、GeneratorとDiscriminatorのlossが相反するため、非常に難しいとされている。Collapseに陥ったことを判定するために、下記の指標を用いる。補足ネットワーク全体の構成図は下のようになる。エンコーダとデコーダを使用した画像分類器を使用したものをDiscriminatorとして使用している。GAN)https://arxiv.org/abs/1609.03126評価EBGAN(比較対象)で生成した画像とBEGANで生成した画像の比較を下記に示す。安定した学習がされていることが確認できる。画像変換を実行した結果を下記に示す。比較対象と遜色ない精度で画像が生成できていることが確認できる。lossと生成される画像を下記に示す。早い段階で高い精度の画像が生成できていることが確認でき、継続的にlossが減少していることが確認された。現状の未解決問題は多々ある。入力のノイズはどの程度が最適か、オートエンコーダは他のモデルを使用した方がよいのかなど、問題は山積みである。本論文では、オートエンコーダをDiscriminatorとして使用することで、GeneratorとDiscriminatorが安定するアーキテクチャを提案した。この手法によって、重みの動的制御が可能になり、他分野への応用にも貢献できると考えられる。提案手法では、学習率の調整をしながら画像の解像度は落とさず、GANの課題に対する一つの解決策となっている。実装それっぽく書いてあります。細かいところ違っていたらごめんなさい。論文で使用しているデータセットselebaは、画像サイズを整えるのがめんどくさかったので、今回はCIFAR-10を使用しました。コードそのまんまはこちら。0始めはこんなもんです。20まだなんもわかりません。40このへんでとりあえずバラバラな画像が生成されていることが確認できたので一安心。60なんか後ろにいるのは確認できますが、何がなんだかはわかりません。80段々輪郭がはっきりしてきましたが、まだ何が写っているかわかりません。100ピントがあってない感じですね。120惜しいとこまできてるんですがもう少ししないと何が写ってるか判別が難しいです。240最終型50epoch回してこれなんで、もうノートPCじゃ無理っす。手応え的には、もうあと20epochくらいいけば判別はつくレベルになるかもしれないですね。書いてみてから気づいたんですが、tensorboardとかでlossを比較して見てみないと、学習がどう良くなったか判断できないですね。なんかツールのバーションが噛み合って無くてtensorboardがうまく起動しないので、覚えてたらそのうちやります。(1)月別アーカイブはてなブログをはじめよう!nogawanogawaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。