「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る([[ニューラルネットワーク]]、[[画像処理とコンピュータビジョン(AI)]]) --一般的なフツーの[[ニューラルネットワーク]] ---[[順伝播型ニューラルネットワーク(FNN)>ニューラルネットワーク#mcd402f7]] ---[[ディープニューラルネットワーク(DNN)>ニューラルネットワーク#ge448516]] ---[[畳み込みニューラルネットワーク(CNN)]] --[[再帰型ニューラルネットワーク(RNN)]] ---[[長短期記憶ニューラルネットワーク(LSTM)]] ---[[RNN Encoder-Decoder(Sequence-to-Sequence)]] --[[生成モデル>機械学習の理論#p3f4e303]]系の[[ニューラルネットワーク]] ---[[自己符号化器(AE:オートエンコーダ)]] ---[[テキスト生成系(Transformer系)]] ---敵対的生成ネットワーク(GAN) *目次 [#r9bf8f41] #contents *概要 [#peeb9f3e] (Generative Adversarial Network: GAN) **特徴 [#v7b9dbd2] 本物データと見分けのつかない贋作データを出力する。 -教師なし学習で使用される人工知能アルゴリズムの一種 -ゼロサムゲームフレームワークで互いに競合する~ 2つの[[ニューラルネットワーク]]のシステムによって実装される。 --イアン・J・グッドフェローによって提案された --2つの[[ニューラルネットワーク]]を競わせながら学習させるアーキテクチャで、~ [[生成モデル側(Generator)と識別モデル側(Discriminator)>機械学習(machine learning)#ibaa375a]]が学習する。 ---[[Generator>#wcea8e15]] ---[[Discriminator>#s4424266]] **できること [#l1aa9511] -データの特徴を抽出して学習し、実在しないデータを生成できる(生成モデル)。 -[[変分オートエンコーダ>自己符号化器(AE:オートエンコーダ)#scfd6dd7]]や[[ボルツマンマシン>ニューラルネットワーク#s93fc300]]など~ 以前からある生成モデルと比べてより鮮明な贋作データの生成が可能。 *詳細 [#xa71b043] **システム [#sf32179c] #ref(GAN.png,left,nowrap,イメージ,30%) ttps://cvml-expertguide.net/wp-content/uploads/2021/09/GAN_Adversarial-Training.png ***Generator(生成器) [#wcea8e15] 生成側は識別側を欺こうと学習 -入力にランダムなノイズ・ベクトルzを受け取る。 -ランダムなノイズ・ベクトルzから贋作データを生成する。 -[[Discriminator>#s4424266]]が贋作データを本物データと識別するように学習する。 -学習が進むにつれどんどん精度の高い贋作データを生成できるようになる。 -学習が終わるとGeneratorのみでデータ生成タスクを実行できる。 ***Discriminator(識別器) [#s4424266] 識別側はより正確に識別しようと学習 -本物データと[[Generator>#wcea8e15]]の生成した贋作データを受け取る。 -入力が本物データである確率を出力する。 --本物データの場合1に近い値を返す。 --贋作データの場合0に近い値を返す。 -データの真贋を正しく識別するように学習する。 -学習が終わるとデータ生成タスクには不要になる。 ***順伝播と逆伝播 [#xa552975] -[[Generator>#wcea8e15]]と[[Discriminator>#s4424266]]が影響し合って学習を進める。 -[[Generator>#t0eb9882]] → [[Discriminator>#f7223279]]と繋げて順伝播するので、 -[[Discriminator>#f7223279]] → [[Generator>#t0eb9882]]と繋げて逆伝播するらしい。 --[[Generator>#t0eb9882]]が学習する際、[[Discriminator>#f7223279]]のパラメタ更新は行わないらしい。 --[[Discriminator>#f7223279]]が学習する際、[[Generator>#t0eb9882]]のパラメタ更新は行わないらしい。 ***損失関数 [#b100981d] -2つのネットワーク([[Generator>#wcea8e15]]と[[Discriminator>#s4424266]])は損失関数を共有することで、学習が効果的に進む。 -通常の[[ニューラルネットワーク]]とは違うバイナリ交差エントロピー関数を用いる。 ***価値関数 [#oc7f12be] #ref(1.png,left,nowrap,1,80%) **DCGAN [#u66476cf] (Deep Convolutional GAN) -[[CNN>畳み込みニューラルネットワーク(CNN)]]をGANに取り入れることで画像の生成性能を上昇させたモデル。 -数多くのGANのアーキテクチャにはDCGANが基礎として導入されている(?)。 **CGAN [#o50135b8] (Conditional GAN) -日本語に訳すと条件付き敵対的生成ネットワーク -GANとの相違点は[[Generator>#wcea8e15]]と[[Discriminator>#s4424266]]の入力に条件ベクトルyが追加される点 -条件ベクトルyはクラス・ラベルだけでなくどんな様式のデータでも良い。 #ref(CGAN.png,left,nowrap,イメージ,80%) https://benrishi-ai.com/pix2pix02/ ***価値関数 [#sdb5a2c3] 下記を除いて[[同じ。>#oc7f12be]] -D(x)→D(x|y) -D(G(z))→D(G(z|y)) ***学習 [#j99c393a] -[[Generator>#wcea8e15]]:zとyのベクトル連結 -[[Discriminator>#s4424266]]:yのベクトルではなく、クラス数分の画像(ラベルに対応する画像が白、ソレ以外の画像は黒)。 **ソフトウェア、サービス [#sb3c4923] ***pix2pix [#e5f3da9b] -CVPR2017で発表された論文で提案されたGANベースのスタイル変換モデル --画像とそれを変換した画像を学習して変換を学習する。 --以下のようなタスクを処理する。 ---線画の着色 ---グレースケール画像のRGB画像化 ---航空写真の地図画像化 -内部でU-Netを使用している。 --[[CGAN>#o50135b8]]の応用で条件ベクトルを与える代わりにスタイル変換前の画像を与える。 --[[Generator>#wcea8e15]]のネットワークには[[Semantic Segmentationで利用されるU-Net>画像処理とコンピュータビジョン(領域検出)#s2fe3ffb]]を用いる[[DCGAN>#u66476cf]]。 --Encoder-decoderでは共通の特徴量が欠損し、U-Netを用いることで写真の基本構造を維持できる。 -[[Discriminator>#s4424266]]ではPatchGANというアイデアが取り込まれている。 --判定で画像1枚全体を本物・偽物で識別するのではなく画像全体を複数のパッチに分割して --パッチ単位で本物・偽物を識別し各パッチの真偽値の平均がDiscriminatorの出力とする。 -輪郭がぴったりペアになっている教師画像を大量に使用 #ref(pix2pix.png,left,nowrap,イメージ,80%) https://benrishi-ai.com/pix2pix02/ -出力の例 #ref(pix2pix2.png,left,nowrap,イメージ,80%) -L1 / cGAN / L1+cGANの比較ですL1+cGANが一番上手く生成できる(L1はL1正則化を、cGANはU-Netを用いる場合)。 #ref(pix2pix3.png,left,nowrap,イメージ,80%) ***CycleGAN [#i7fd6809] -GANベースのスタイル変換モデル -教師画像の輪郭(形状・位置)はバラバラで良い。 *参考 [#yec65d9b] -深層学習についてのレポート(画像系、CNN画像認識以外)~ https://www.osscons.jp/joy1y64w3-537/#_537 -YouTube --[[AI教室 AIRS-Lab>深層学習(deep learning)#o49c1a2e]] ---AIによる画像生成を学ぼう! 【VAE、GAN】~ https://www.youtube.com/playlist?list=PLcd5jOpoEDGBDqiRMS4eqkfBwl28ixRYc