さて、今回はGANの評価指標としてよく使われているInception Score(IS)について解説したいと思います。
Inception Scoreの評価式は以下で表され、大きければ大きいほどGANの性能が良いと言われます。
$$\begin{align}
\text{Inception Score} &= \exp\left(\mathbb{E}_{x\sim p_g}\left[\text{KL}\left(p(y|x)\| p(y)\right)\right]\right)\\
&=\exp\left(\frac{1}{|X|}\sum_{x \in X}\sum_{y} p(y|x)\ln \frac{p(y|x)}{p(y)}\right)
\end{align}$$
これだけ見ても理解するのが大変ですので、どうしてこれがGANの評価指標になるのか?、どういう意図でこの評価式になるのか?を丁寧に見ていきたいと思います。
どんな指標かを理解することで、GANの理解も深まると思いますので、是非理解しておきましょう。
もともと提案された論文はこちらです。
『Improved Techniques for Training GANs』
Inception Scoreのアイデア
Inception Scoreは画像生成で重要な2点を同時に評価します。
1点目は画像のクオリティ(quality)です。
画像がどれだけ本物に近いか、を表しており、当然クオリティが高い方がよいモデルと言うことができます。
2点目は生成される画像の多様性(diversity)です。
多様性は色々な種類の画像を生成することです。
いくらGANの生成画像が本物に近くても、同じような画像ばかり生成して、それが本物に近い!と主張しても本当に良いモデルとは言えません。
実際にGANには同じような画像ばかり生成するmode collapseという問題があります。
この2つを評価して1つの指標にすることにより、クオリティと多様性の両方が高いモデルのスコアが上がり、どちらか一方だけ良いモデルはスコアが上がらないようになります。
では、まずクオリティと多様性の特徴を見ていきましょう。
クオリティ
まずクオリティの評価方法です。
一般的に画像のクオリティが高い場合、その画像はこのラベルだということがすぐに分かります。
例えば、生成された画像がこちらだった場合、猫の画像であるということがすぐに分かります。
つまり、画像の分類モデルで分類したときに、特定のラベルの画像であるということがはっきりとわかる画像はクオリティが高いと考えらえます。(画像によって必ずしも猫とは限らず、犬であれば犬と分類されます)
Inception Scoreでは、その観点から2015年に提案された畳み込みニューラルネットワークを使った画像認識モデルInception-v3を使って評価します。(Inception-v3についてはこちら『Rethinking the Inception Architecture for Computer Vision』)
上記の画像が生成された画像であれば、明らかに猫なので例えば以下のような分類結果になります。
つまり、クオリティが高い画像の場合はInception-v3モデルによる評価結果が1点に集中します。
論文を理解するために補足しておくと、このような1点に集中している状態を「エントロピーが小さい」と言います。
逆に、画像のクオリティが低く、何の画像なのかよくわからない場合はきっと以下のようになります。
このような状態を「エントロピーが大きい」と言います。
数式で表すと、生成した画像を\(x_i\)として、画像\(x_i\)が与えられたときにラベルが\(y_j\)と判定される確率は\(p(y_j|x_i\))となり、ラベルの条件付き分布は\(p(y|x_i\))と表されます。
この条件付き分布が一点に集中しているとクオリティが良いと考えられます。
多様性
多様性については、色々な画像が生成されていれば良いことになります。
つまり、Inception-v3モデルですべての画像を分類した場合に、以下のように色んなラベルに散らばっていればよいことになります。
つまり、「エントロピーが高い」状態であればいいことになります。
逆に猫の画像ばかり生成すると猫のところだけ大きくなり、エントロピーが低くなります。
同じように数式で表すと、\(p(y)=\frac{1}{|X|}\sum_{x_i \in X}p(y|x_i)\)というラベルの周辺分布で表されます。
この周辺分布がまんべんなく分布していると多様性が高いと考えられます。
クオリティと多様性を両立させる指標
以上からクオリティは特定のラベルの条件付き確率を大きくし、多様性は周辺分布が一様に分布すればいいことがわかります。
例えば、色々な画像が生成されて多様性は高いものの、生成された画像の何の画像かわからないクオリティが低い画像だった場合、条件付き分布と周辺分布と以下のようになります。
逆にその画像のクオリティが高く、猫とはっきりわかるものの、画像全体の多様性がなく同じようなクオリティの高い猫ばかり生成している場合は、以下のようになります。
色々な画像が生成されていて、その画像のがクオリティが高い場合以下のようになります。
この3つの例から考えると、クオリティの分布(条件付き分布)と多様性の分布(周辺分布)の違いが大きい場合に、クオリティと多様性が両立されているということがわかります。
カルバック・ライブラー・ダイバージェンス(Kullback-Leibler Divergence)
この分布の違い、つまり距離を測る一つの方法は、カルバック・ライブラー・ダイバージェンス(Kullback-Leibler divergence; KL divergence)もしくは相対エントロピーと呼ばれる指標です。
分布\(P\)と分布\(Q\)カルバック・ライブラー・ダイバージェンスは以下で表されます。(詳細は省略しますが、興味がある方は『パターン認識と機械学習 上』などをご参照ください)
$$\begin{align}
\text{KL}(P\| Q)=\sum_{{\bf{x}}\in X} p({\bf{x}})\ln \frac{p({\bf{x}})}{q({\bf{x}})}
\end{align}$$
したがって、条件付き分布\(p(y|x_i)\)と周辺分布\(p(y)\)のカルバック・ライブラー・ダイバージェンスは、
$$\text{KL}(p(y|x_i)\| p(y))=\sum_{y} p(y|x_i)\ln \frac{p(y|x_i)}{p(y)}$$
となります。
これが一つの画像\(x_i\)におけるカルバック・ライブラー・ダイバージェンスです。
これは1つの画像に対する分布の距離ですが、これをすべての画像に適用して、それを大きくしたいと考えます。
そこで、すべての画像\(X\)に対してカルバック・ライブラー・ダイバージェンスを計算し、平均を取ります。
$$\frac{1}{|X|}\sum_{x \in X}\text{KL}(p(y|x_i)\| p(y))$$
さらに数値の水準を調整して比べやすくするために\(\exp\)を付けて、出来上がった
$$\text{Inception Score} = \exp\left(\frac{1}{|X|}\sum_{x \in X}\sum_{y} p(y|x)\ln \frac{p(y|x)}{p(y)}\right)$$
がInception Scoreになります。
期待値を使って論文の通りに書くと、以下のようになります。
$$\exp\left(\mathbb{E}_{x\sim p_g}\left[\text{KL}\left(p(y|x)\| p(y)\right)\right]\right)$$
\(\mathbb{E}_{x\sim p_g}\)はGeneratorが生成したサンプルに対する期待値という意味です。
これが大きければ大きいほど画像のクオリティと多様性が高いと考えられます。
繰り返しになりますが、やりたいことはクオリティと多様性の両方を測ることで、そのために画像全体の条件付き分布と周辺分布の差を計測するものです。
Inception Scoreの欠点
Inception Scoreは非常に納得のいく考え方ではありますが欠点もあります。
欠点としては、例えば以下が挙げられます。
- Inception-v3はImageNetで学習しているので、ImageNetのラベルごとに同じ割合で出力するとスコアが上がる。このときに、ラベルごとに同じ画像でもよい。
- 現実の画像を使っていない。
- Inception-v3が完璧ではない。
1については、Inception-v3がImageNetの1000個のラベルを分類できるように学習しているので、この1000個を出力するモデルが良いモデルになってしまい、その他の画像を生成するモデルの精度は正しく測れません。
しかも、その各ラベルに対応する画像は同じ画像でも問題なく、本当に多様性がなくても良いことになります。
2は、現実の画像と見比べておらず、あくまでInception-v3がどう判断するかだけということです。
実は現実の画像にそっくりでもInception-v3がうまく判断できず、スコアが悪いということも起こりえます。
3については、Inception ScoreはあくまでInception-v3モデルに頼り切っていますが、現在ではもっと精度の良い画像認識モデルが多数存在します。
より良いモデルで評価すれば結果は違ったものになるかもしれませんが、比較のためには同じモデルを使わないといけないので、過去の研究と比較するためにはInception-v3モデルを使うしかありません。
ちなみに、2については、Frechet Inception Distance(FID)により改善を試みています。
まとめ
今回はGANの評価指標であるInception Scoreを見てきました。
次はFrechet Inception Distance(FID)やPrecision-Recallを解説したいと思います。
では!