どうも、カタミチです。
前節では、データを識別するモデルがざっと紹介されていましたが、今節ではデータを生成するモデルが紹介されています。前節でも少し触れられていましたね。拡大したり回転したり傾けたり…。この辺りが深掘りされる感じですかね。
あと、気になってるのが、機械がアート作品を生み出す…とかそういう感じのものも含まれてるんでしょうかね?
見てみましょう!
生成モデルの考え方
画像のデータセットがどのような分布になっているのかを推測して、その分布に基づいて元の画像と似たような画像データを生成することを目的としたモデルを生成モデルと言います。特に、ディープラーニングを取り入れた生成モデルのことを深層生成モデルと言います。
中でも成果を上げているモデルとして、変分オートエンコーダ(VAE)、敵対的生成ネットワーク(GAN)があります。
変分オートエンコーダ
まず、変分オートエンコーダ(VAE)です。名前に含まれるとおり、オートエンコーダの活用形ですね。
オートエンコーダでは隠れ層は入力データの特徴をうまく圧縮表現したものになりますが、VAEは入力データを、圧縮表現するのではなく統計分布に変換、つまり、平均と分散で表現するよう学習します。
VAEは、エンコーダが入力データを統計分布のある1点となる潜在変数に変換します。デコーダは、統計分布からランダムにサンプリングした1点を復元する事で、新しいデータを生成します。
以上が変分オートエンコーダの説明なんですが…うーん。もう少し深めないと理解ができない…。ただ、入力データを画像と考えた場合、統計分布に従って画像を再構成する、というイメージですかねー。どんな画像が出力されるのか、ちょっと見てみたいですね。
敵対的生成ネットワーク
次に、敵対的生成ネットワーク(GAN)。これは2種類のネットワークで構成されており、それぞれジェネレータとディスクリミネータという名前が付けられています。
・ジェネレータ:ランダムなベクトルを入力とし、画像を生成して出力する。
・ディスクリミネータ:画像を入力とし、その画像が本物か(ジェネレータによって生成された)偽物かを予測して出力する。
こんな役割分担で、いわば戦わせるわけですね。
大事なのは、ジェネレータはディスクリミネータが間違えるような偽物画像をつくるように学習していき、ディスクリミネータは偽物をきちんと見抜けるように学習していくということです。畳み込みニューラルネットワークを採用したものをDCGANと呼び、高解像度な画像の生成を可能にしています。ちなみにディスクリミネイト(discriminate)は「区別する・識別する」といった意味のようです。
GANは、ランダムなベクトルから生成したデータが本物かどうかを予測していますが、このベクトルの代わりにある画像データを入力し、別の画像に変換する処理としたPix2Pixがあります。あらかじめペアの画像を学習のために用意しておき、もとの画像データと変換した画像のペアが本物か偽物かを予測するというものです。
また、画像のペアが必要ない方法としてCycleGANがあります。この方法の場合、ある画像を変換し、その変換した画像をもとの画像に再度変換します。そのとき、通常のGANのように変換した画像が本物かどうかを予測するだけでなく、元の画像と再度変換した画像が一致するように学習します。
うん、敵対的生成ネットワークの概念自体は何となく分かりましたが、Pix2PixとかCycleGANの説明はちょっと理解が追いつきません…(汗)。このあたりはきっと、半年後ぐらいにはちゃんと理解できていて、このブログでも説明が書けるようになっているはず!…と夢見て頑張っていきたいと思います。
ということで
画像の生成。個人的にはかなり興味をそそられる分野です。この技術を使って制作したものの著作権は果たしてどうなるのか?絵を書く才能のない人間でもプロ並みの絵が生み出せる用になるのか?新たな切り口のアートが次々と生まれて来ることになるのか?などなど。画像認識の精度アップのために生成するというのが実用的なのかもしれませんが、画像生成自体をアウトプットとして捉える分野に非常に興味があります。もう少しちゃんと勉強していきたい!
ではまた。
勉強に使ってる書籍はこちら↓
深層学習教科書 ディープラーニング G検定(ジェネラリスト)公式テキスト 第2版