目次
こんにちは。sinyです。
この記事では半教師ありGAN(Semi-Supervised GAN)の仕組みについて学習した際の情報をわかりやすくまとめてみました。
数式は一切用いず、全体の仕組みを理解しやすいように図解しています。
半教師ありGANとは?
半教師ありGANについては既に様々な情報が公開されているので、ここでは簡潔に概要だけ説明します。
DCGANなどの一般的なGANでは識別器は本物 or 偽物を識別する2値分類になっていますが、半教師ありGANでは識別器が多クラス分類機になっています。
具体的には、N+1クラスを分類する識別器になっていています。
Nは訓練データに含まれるクラス数、+1は生成器が作った偽画像であることを表すクラスで合わせてN+1クラスです。
例えば、ネコと犬の画像を訓練データセットとした場合Nは2種類で、N+1(=3)クラスを識別するように学習させるのが半教師ありGANです。
生成器は通常のGANと同じで乱数ベクトルから本物そっくりなサンプルを生成するように学習します。
半教師ありGANが通常のGANと異なる部分は識別器の部分で、3つの入力(ラベル付きの本物データ、ラベルなしの本物データ、偽データ)をとる部分がこのモデルの特徴的な部分です。
ここでいうラベルとは訓練データに対して付与されたラベルで、例えばネコと犬の画像を使う場合は「ネコ、犬」とう2クラスのラベルになります。
また、半教師ありGANの特徴としては、訓練データのうちわずか(1~2%)のデータに付与されたラベルを使うだけで完全な教師あり学習(すべてのデータにラベルが付与されている)の精度に近づけることができる手法となっています。
半教師ありGANの識別器の概要
半教師ありGANの識別器をもう少し具体的に見ていきます。
実態としては下図のように識別器内部にはコア部分、教師あり、教師なし部分の3つにわけることができます。
識別器(コア部分)の構造
半教師ありGANの識別器のコア部分は、下図のようにDCGANと同様にCNNで畳み込み、バッチ正規化やLeakyReLUを組み込んで最終的にNクラスの全結合層につなげます。
また、以下ではドロップアウトを組み込んでいますが、バッチ正規化の後にドロップアウトを入れています。
理由は、この順番でドロップアウトを入れたほうが良い結果をもたらすことが知られているためのようです。
識別器(教師あり部分)の構造
続いて識別器のうち半教師ありの識別器の部分です。
これは、ラベルがついている本物のデータ(x, y)からランダムにサンプリングしたものを識別機に入力しどのラベルに属するかを識別させるために利用します。
多クラス分類なので活性化関数にはSoftmaxを適用して各クラスに属する確率値を出力するようにします。
ネットワーク構造としては、先ほどのコアな識別器のネットワークの最後にSoftmaxを追加します。
識別器(教師なし部分)の構造
3つ目が教師なし部分の識別器です。
ここでは2つの学習が行われます。
1つ目は、ラベルのない本物のデータからランダムにサンプリングしたものを識別機に入力し、2値分類(本物 or 偽物)を行います。
2つ目は、生成器を使ってランダムなノイズベクトルから偽画像を生成して識別機に入力し、2値分類(本物 or 偽物)を行います。
2値分類なので活性化関数にはSigmoidを適用して各クラスに属する確率値を出力するようにします。
ネットワーク構造としては、先ほどのコアな識別器のネットワークの最後にSigmoid関数を追加します。
※下図のPredictはSigmoidに相当する処理です。
半教師ありGANの生成器の構造
半教師ありGANの生成器ネットワーク構造は、DCGANと同様です。
参考:DCGANに関する記事
半教師ありGANの学習
最後に半教師ありGANのの学習について簡単に説明します。
生成器の学習
半教師ありGANの生成器の学習は基本的にDCGANと同様でいかのようにランダムなノイズベクトルから偽データを生成し、教師なし識別器の方を使って本物 or 偽物を識別できるように学習していきます。
識別器のパラメータは固定しておいて、生成器側のパラメータを逆誤差伝搬で更新していきます。
識別器の学習
半教師ありGANの識別器の学習対象は大きく分けて2種類(教師あり識別器、教師なし識別器)あります。
教師あり識別器は1種類で、ラベル付きのデータを使ってどのクラスに属するかを正しく識別できるように学習し、識別器(教師あり)のパラメータを学習によって更新ます。
教師なし識別器は学習対象が2種類あります。
1つ目はラベルのない本物データを使って識別器(教師なし)に入力し、本物 or 偽物を正しく識別できるように学習していきます。
2つ目はランダムなノイズベクトルから偽データを生成し、教師なし識別器の方を使って本物 or 偽物を識別できるように学習していきます。
いづれも生成器側のパラメータを固定化して識別側のパラメータだけ更新していきます。
参考にした情報
本記事は以下の情報を参考に情報をまとめました。
以上「教師ありGAN(Semi-Supervised GAN)の仕組みを数式なしで図解【初心者向け】」でした。