社内勉強会レポート|Standford CS230|GANs(敵対的生成ネットワーク)についてご紹介
こんにちは。
Airitech ビッグデータ・AI活用グループのアウンネイトゥッです。
現在は、Vue.js、JavaScript、TypeScript等を使用して、Web開発を行っています。機械学習に興味があり、社内のML・AI勉強会に参加しました。
本記事では、AiritechのML・AI勉強会「Standford CS230 Deep Learning」の「レクチャー4」で勉強したGANs(敵対的生成ネットワーク)について紹介したいと思います。
これまでの講義
これまでの講義内容、1~3回はこちらからご覧ください。
GANs(敵対的生成ネットワーク)とは
GANsは、Generative Adversarial Networksの略で、畳み込みニューラルネットワークなどの深層学習手法を使用した生成モデリングへのアプローチです。
GANsは生成モデルの一種であり、データから特徴を学習することで実在しないデータを生成したり、存在するデータの特徴に沿って変換したりできます。
正解データを与えることなく特徴を学習する「教師なし学習」の一手法として注目されています。
GANsの動機
動機:
・データを合成する
・データを圧縮して再構築する
・スペース一個一個の間にあるマッピングを見つける。
・絵画のイメージ
アプローチ:
大量のデータを収集し、それを使用してモデルをトレーニングし、スクラッチから同様のデータを生成する
直感:
モデルのパラメーターの数 << データの量
GANsの学習の仕組み
GANモデルのアーキテクチャには、新しい例を生成するためのGeneratorモデルと、生成された例がドメインからの本物か、Generatorモデルによって生成された偽物かを分類するためのDiscriminatorモデルの2つのサブモデルが含まれます。
Generator:問題領域から新しいもっともらしい例を生成するために使用されるモデル
Discriminator: 例を本物(ドメインから)または偽物(生成)として分類するために使用されるモデル
GeneratorとDiscriminatorの2つのモデルは、一緒にトレーニングされます。
Generatorはサンプルのバッチを生成し、これらはドメインからの実際の例とともに、Discriminatorに提供され、本物または偽物として分類されます。
次に、次のラウンドで実際のサンプルと偽のサンプルをより適切に区別できるようにDiscriminatorが更新されます。重要なことに、生成されたサンプルがDiscriminatorをだましているかどうかに基づいてGeneratorが更新されます。
Discriminatorが実際のサンプルと偽のサンプルを正常に識別した場合、モデルパラメーターを変更する必要はありませんが、Generatorはモデルパラメーターを大幅に更新することでペナルティが課せられます。
あるいは、GeneratorがDiscriminatorをだますとき、モデルパラメータを変更する必要はありませんが、Discriminatorにペナルティが課され、そのモデルパラメータが更新されます。
限界では、Generatorは毎回入力ドメインから完全なレプリカを生成し、Discriminatorは違いを判断できず、すべての場合に「不明」を予測します。これは理想的なケースのほんの一例です。
GANsを使っていい結果
3つのランダムなコードをGeneratorに入力して作成した3つのランダムな顔とコード1-コード2+コード3の場合の顔です。
これは、コードの潜在空間での線形操作が画像空間に直接影響を与えることの意味です。
画像から画像への変換(image to image translation)
地図画像から衛星画像を生成したり、オレンジの画像からりんごの画像を生成したりするようなものは、GANsの画像から画像への変換と呼ばれます。
CycleGANのアーキテクチャ
画像を馬からシマウマに、シマウマから馬に変換する問題を考えてみましょう。
対になっていない画像(unpaired images)のコレクションが2つあると考えます。2つのGANのアーキテクチャを開発し、各GANにはDiscriminatorとGeneratorモデルがあります。
つまり、アーキテクチャには合計4つのモデルがあります。
最初のGANは、馬の写真を与えられたシマウマの写真を生成し、2番目のGANは、シマウマの写真を与えられた馬の写真を生成します。
GAN 1:馬の写真をシマウマに翻訳します
GAN 2:シマウマの写真を馬に翻訳します
各GANには、入力画像を指定して画像を合成する条件付きGeneratorモデルがあります。
また、各GANには、生成された画像がターゲット画像からのものである可能性を予測するための弁別モデルがあります。
GANのDiscriminatorモデルと生成モデルは、標準のGANモデルと同様に、通常の敵対的損失の下でトレーニングされます。
GAN1のGeneratorモデルとDiscriminatorモデルを次のように要約できます。
Generatorモデル1:
入力:馬の写真を撮ります(コレクション1)
出力:シマウマの写真を生成します(コレクション2)
Discriminatorモデル1:
入力:コレクション2からゼブラの写真を撮り、Generatorモデル1から出力します
出力:画像の可能性はコレクション2からのものです
同様に、GAN2のGeneratorモデルとDiscriminatorモデルを次のように要約できます。
Generatorモデル2:
入力:シマウマの写真を撮ります(コレクション2)
出力:馬の写真を生成します(コレクション1)
Discriminatorモデル2:
入力:コレクション1から馬の写真を撮り、Generatorモデル2から出力します
出力:画像の可能性はコレクション1からのものです
これまでのところ、モデルはターゲットドメインでもっともらしい画像を生成するのに十分ですが、入力画像の翻訳ではありません。
各GANも、サイクル整合性損失を使用して更新されます。これは、入力画像の翻訳であるターゲットドメインで合成された画像を奨励するように設計されています。
参考
出典:Stanford CS230: Deep Learning | Autumn 2018 | Lecture 4 - Adversarial Attacks / GANs
資料:http://cs230.stanford.edu/fall2020/lecture4.pdf
まとめ
本記事では、GANsの概要、GANsの学習の仕組み、GANsを使っていい結果、CycleGANのアーキテクチャについて社内の勉強会「Standford CS230 Deep Learning」の「レクチャー 4」で勉強したことをまとめました。
最後までお読みいただき、ありがとうございました。
Airitech株式会社について
この記事が気に入ったらサポートをしてみませんか?