GAN – コンピュータが絵を描けるのか
このブログ記事は、朝日中高生新聞2020年12月20日号の連載「プログラミングでかわる!?私たちのミライ」第2回と合わせてお読みください。朝日中高生新聞に掲載された記事全文はこちら(転載許可取得済み)。
はじめに
わたしたちPreferred Networks(プリファードネットワークス、PFN)は、ディープラーニング(深層学習)とよばれる技術の研究や産業応用を進めています。
ディープラーニングはAI(人工知能)とよばれることもあり、画像認識、画像生成、音声認識、機械翻訳、ロボット制御など様々な領域において大幅に機能を向上することに成功しています。
今回の記事は「絵」がテーマなので、そこで使われている画期的なGANの技術について説明したいと思います。
(第1回目の教えて!PFNは「プログラミングで顔を見分ける」)
GANってなに?
GAN(ギャン: Generative Adversarial Networks, 敵対的生成ネットワーク)は、コンピュータが学習データと同じような特徴を持つデータを生成することができる技術です。
例えば、絵や写真、音楽などのデータを「お手本」として学習すれば、それらに似た、新しい絵や写真、音楽をコンピュータでたくさん作ることができます。
なぜ「敵対的」という名前がついているかというと、GANではお手本に近いデータを作ろうとする「Generator(ジェネレータ, 生成器)」というプログラムと、生成器の作ったデータがお手本と見分けがつくものかどうかをチェックする「Discriminator(ディスクリミネータ, 識別器)」というプログラムが競い合うためです。
生成器はお手本から学習してデータに似ているものを作ることが役割で、識別器はそのデータが生成器によって作られたデータなのかを見破ることが役割です。この2つのプログラムが競い合うように訓練を進めていくと、生成器が「じゃあ、このデータを見破ることはできるかな?」というように、少しずつ腕を上げていきます。最終的には、本物のデータと見分けがつかないものを作れるような生成器に育て上げることが目標です。

GANの概要
GANは生成器と識別器をバランスよく訓練することが難しいため、登場からしばらくは研究が進んでいませんでした。その後、世界中の研究者から数多くの研究論文が発表され、今では学習を安定させる手法がいくつも提案されており、様々なデータの生成が可能になってきました。
この仕組みにより、高精細な画像をコンピュータで生成できるようになったことで、いろいろな使い方や新しい表現方法が考えられると思います。 PFNでサービスを開発・提供しているPetalica Paint(ペタリカ ペイント)やCrypko(クリプコ)にも、このGANという技術が使われていて、線画に色を着けたり、キャラクターを無限に生成したりすることができます。

Petalica Paint 自動着色例
Crypkoでのキャラクター生成例1
Crypkoでのキャラクター生成例2
このような技術がもっと発展することで、今まで人にしかできなかった仕事もそのうちコンピュータができるようになるかもしれませんが、コンピュータが何でもできるわけではありません。コンピュータが得意な仕事もあれば、人にしか出来ない仕事もあります。プログラミングを学ぶことで、こうした新しい技術をこれからの生活にどのように活かすことができるか考えてみませんか?