本文へ移動

G検定(ジェネラリスト検定)

でぃーしーがん

DCGAN

DCGAN

Deep Convolutional Generative Adversarial Networks

DCGANは、特定のアーキテクチャ上の制約を加えた畳み込みニューラルネットワークでGANを構成したモデルで、教師なし学習の有力な候補であることを示しました。

詳しい説明

DCGANが示したこと

DCGAN(Deep Convolutional GAN)は、特定のアーキテクチャ上の制約を持つ畳み込みニューラルネットワーク(CNN)のクラスとして提案されたモデルです。敵対的生成ネットワーク(GAN)の生成器と識別器をCNNで構成し、これが教師なし学習の有力な候補であることを示しました。

論文では、さまざまな画像データセットで訓練した結果、生成器と識別器の両方が、物体の部分からシーン全体に至る階層的な表現を学習していることを示しています。さらに、学習した特徴を新しいタスクに使い、汎用的な画像表現として利用できることも示しました。表現を学習する手法としてGANを位置づけた点が、DCGANの特徴です。

CNNアーキテクチャへの3つの変更

DCGANの中心は、当時提案されていたCNNアーキテクチャの3つの変更を採り入れ、手直しした点にあります。

1. 全畳み込みネットワークの考え方です。マックスプーリングのような決定論的な空間プーリングを、ストライド付き畳み込みに置き換えます。これにより、ネットワークが空間的なダウンサンプリングを自ら学習できます。DCGANではこれを識別器に使い、生成器では空間的なアップサンプリングを自ら学習させます。
2. 畳み込み特徴の上に置く全結合層を取り除く流れです。

3. バッチ正規化です。各ユニットへの入力を平均0、分散1に正規化して、学習を安定させます。

バッチ正規化の効果と注意点

バッチ正規化は、初期化の悪さから生じる訓練の問題への対処に役立ち、深いモデルでの勾配の流れも改善します。とくに、深い生成器が学習を始められるようにするうえで決定的に重要でした。生成器がすべてのサンプルを1点に崩壊させてしまうという、GANでよく見られる失敗モードも防ぎます。

ただし、すべての層にそのまま適用すると、生成されるサンプルが振動し、モデルが不安定になりました。そこで、生成器の出力層と識別器の入力層にはバッチ正規化を適用しないことで、この問題を避けています。

活性化関数と安定化のための指針

生成器では出力層を除いてReLUを使い、出力層にはTanhを使います。値の範囲が限られた活性化関数を使うと、モデルが早く飽和し、訓練データの分布の色空間を覆えるようになったと報告されています。識別器ではLeakyReLUがよく機能し、とくに高解像度のモデリングで有効でした。元のGAN論文がmaxoutを使っていたのとは対照的です。

論文は、安定したDCGANのためのアーキテクチャ指針を次のようにまとめています。

  • プーリング層を、識別器ではストライド付き畳み込みに、生成器ではフラクショナルストライド畳み込みに置き換える
  • 生成器と識別器の両方でバッチ正規化を使う
  • 深いアーキテクチャでは全結合の隠れ層を取り除く
  • 生成器では出力層以外のすべての層でReLUを使い、出力層ではTanhを使う
  • 識別器ではすべての層でLeakyReLUを使う

LSUN寝室データセットでの実験

DCGANは、LSUN(Large-scale Scene Understanding)のデータセットで訓練されました。学習された表現がどのような性質を持つかを定性的に調べるため、LSUNの寝室(bedrooms)データセットで訓練する実験を行っています。

試験で問われること

G検定

  • DCGANがCNNアーキテクチャに加えた3つの変更(プーリングからストライド付き畳み込みへの置き換え、全結合層の除去、バッチ正規化)をそれぞれ説明できますか。
  • DCGANでバッチ正規化を適用しない層はどこか、またすべての層に適用すると何が起きるかを説明してください。
  • DCGANの生成器と識別器で使う活性化関数(生成器のReLUと出力層のTanh、識別器のLeakyReLU)の組み合わせを正しく選べますか。
  • DCGANが教師なし学習の観点で示したこと(生成器と識別器が物体の部分からシーンまでの階層的な表現を学習し、その特徴を汎用的な画像表現として使えること)を説明してください。

最終更新日: 2026/09/23