1. 定義と概要
DCGAN(Deep Convolutional GAN)とは、GAN(敵対的生成ネットワーク)の代表的な派生モデルです。生成ネットワーク(Generator)と識別ネットワーク(Discriminator)の両方に、畳み込みニューラルネットワーク(CNN)を導入した点が特徴です。
土台となるGANは、ランダムな数値の並びから画像などのデータを新しく作り出すGenerator側と、入力されたデータが本物か生成された偽物かを見分けるDiscriminator側という、2つのネットワークを競わせて学習する仕組みを指します。畳み込みニューラルネットワーク(CNN)は、画像を小さな範囲ごとに区切って特徴を読み取る仕組みを持つニューラルネットワークです。この2つを組み合わせたものがDCGANにあたります。
DCGANは2015年にA. Radford氏らが発表しました。その論文タイトルは「Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks」です。この論文はICLR 2016に採択されています。GANにCNNを組み合わせることで学習が安定し、より鮮明な画像を生成できるようになりました。
従来のGANは、2014年にIan Goodfellow氏らが提案した際、全結合層を中心とした構造を採っていました。そのため生成される画像がぼやけやすく、学習も不安定になりやすいという課題を抱えていました。
DCGANは、Generator側とDiscriminator側の内部構造を、畳み込み層や転置畳み込み(小さな特徴マップを大きな画像へ引き伸ばす、畳み込みとは逆方向の処理)を行う層に置き換えました。プーリング層(画像の情報を間引いて縮小し、大事な特徴だけを残す処理を行う層)や全結合の隠れ層を排除するといったアーキテクチャ上の指針も導入しています。この工夫により、学習の安定化と生成画像の鮮明化を実現した、という流れで登場したモデルです。
2. 試験対策ポイント
DCGANという名称の「Deep Convolutional」が示すとおり、Generator側とDiscriminator側の両方にCNNを用いる点が、通常のGANとの構造上の違いとして重要な論点です。
アーキテクチャ上の工夫は、3点セットで整理されます。プーリング層を使わず、Discriminator側ではストライド畳み込み(フィルタを飛び飛びに動かしながら画像を縮小していく畳み込みの処理)で画像を縮小しながら特徴を抽出します。Generator側では転置畳み込みで特徴マップを画像へ拡大します。全結合の隠れ層を排除し、学習を安定させるバッチ正規化(学習中に各層へ入るデータのばらつきを整えて、学習を安定させる工夫)を導入している点も押さえておきたいポイントです。
活性化関数(ネットワークの出力に変化をつける関数の総称で、ReLU関数やtanh関数などの種類があります)の配置も試験対策の論点です。どこにどの関数を置くかは、次のように整理できます。
| ネットワーク | 層 | 使う活性化関数 |
|---|---|---|
| Generator | 出力層 | tanh関数 |
| Generator | 出力層以外の層 | ReLU関数 |
| Discriminator | すべての層 | Leaky ReLU関数 |
Generator側とDiscriminator側で使う関数が違ううえ、Generator側は出力層だけ扱いが変わります。この二段構えが、取り違えやすい箇所です。
学習後の潜在ベクトル(画像を生成するもとになるランダムな数値の並びで、値が近いと似た画像が生成されます)には、意味的な演算ができるという特性があります。「眼鏡をかけた男性」のベクトルから「男性」を引き「女性」を足すと、「眼鏡をかけた女性」の画像に近づくといったベクトル演算の例が知られています。
また、DCGANはCNNベースの生成器・識別器設計を確立した派生モデルとして、後続の画像変換系モデルの基盤の一つに位置づけられます。
3. 関連概念との比較・相違点
比較の対象になりやすい派生モデルとの関係は、次のように整理できます。
| モデル | 生成・変換のもとになる入力 | 学習で目指すこと |
|---|---|---|
| DCGAN | ランダムな潜在ベクトル | 教師データなしで新しい画像を生成する |
| GAN(原型) | ランダムな潜在ベクトル | 新しい画像を生成する(全結合層が中心の構造) |
| CycleGAN | 対になっていない画像データ | ドメイン間の変換方法を学習する |
| pix2pix | 対になった入力画像と出力画像 | 画像から画像への変換を学習する |
GANとの最大の違いは、ネットワーク内部の構造にあります。GANは全結合層が中心で生成画像がぼやけやすく学習が不安定になりやすいのに対し、DCGANは畳み込み層・転置畳み込み層とバッチ正規化により学習を安定させ、鮮明な画像を生成します。
DCGANとCycleGAN(ペアになっていない画像同士でも変換の仕方を学習できるGANの派生モデル)との違いは、生成の入力と目的にあります。前者がランダムな潜在ベクトルから画像を新規に生成するのに対し、後者は対になっていない画像データ同士でドメイン間の変換方法を学習します。
pix2pix(対になった2枚の画像を使って画像から画像への変換を学習するGANの派生モデル)との違いは、教師データの形式にあります。DCGANはノイズからの教師なしの画像生成であるのに対し、pix2pixは入力画像と出力画像がペアになった教師データを使って画像変換を学習します。
4. ビジネス・実務での活用シナリオ
エンタメ・クリエイティブの分野では、潜在ベクトルの補間や演算によってキャラクターデザインやアートワークのバリエーションを生成し、デザイン案のたたき台づくりに活用されています。ゼロから案を描き起こすより先に多数の方向性を可視化できるため、企画初期の検討材料を短時間で揃えられる点が実務上の利点です。
製造業・研究開発の分野では、実データが少ない外観検査などの場面で、DCGANにより疑似的な画像データを生成し、データ拡張(オーグメンテーション。手持ちのデータを加工・生成して学習データを水増しする手法)に用いられています。不良品サンプルが希少で十分な学習データを集めにくい現場では、疑似データによる補完が学習データ不足を補う手段になります。
セキュリティ・監視の分野では、実際の顔画像や監視映像を大量に集めにくい場面で、DCGANが生成した疑似データを認識モデルの学習・検証データの補完に用いる取り組みが見られます。個人情報を含む実データへの依存を減らせるため、プライバシーに配慮したデータ整備の手段としても意義があります。
5. 要点まとめ
- DCGANはGenerator側とDiscriminator側の両方にCNNを用いたGANの派生モデルで、2015年にRadford氏らが発表しました。
- プーリング層の排除・ストライド畳み込みと転置畳み込み・全結合層の排除・バッチ正規化という4点のアーキテクチャ上の工夫があります。Generator=ReLU関数+出力層tanh関数/Discriminator=Leaky ReLU関数という活性化関数の使い分けもポイントです。
- 潜在ベクトルの意味的な演算が可能な点、CycleGAN・pix2pixなど後続の画像変換モデルとの位置づけの違いも、あわせて見ておきたいところです。
6. 確認問題
問1DCGANは、Generator側とDiscriminator側の両方にCNNを用いることで、従来のGANより鮮明な画像生成を実現した。
解答・解説をみる
○ 正しい
DCGANはGAN内部の全結合層を畳み込み層・転置畳み込み層に置き換えたモデルで、これにより学習が安定し生成画像の鮮明化につながりました。名称の「Deep Convolutional」もこの構造上の特徴を表しています。
問2DCGANのアーキテクチャでは、プーリング層の代わりにストライド畳み込みや転置畳み込みを用いて画像のダウンサンプリング・アップサンプリングを行う。
解答・解説をみる
○ 正しい
Discriminator側はストライド畳み込みで画像を縮小しながら特徴を抽出し、Generator側は転置畳み込みで特徴マップを画像サイズへ拡大します。プーリング層は使わない設計になっています。
問3DCGANのDiscriminator側では、活性化関数として全層でtanh関数が使われる。
解答・解説をみる
× 誤り
正しくはDiscriminator側の全層でLeaky ReLU関数が使われます。tanh関数はGenerator側の出力層でのみ使われる活性化関数で、両者の役割は取り違えやすい点です。

