こんにちは大澤です.
今回は機械学習の研究分野でとても盛り上がっている「GAN」というAI技術をご紹介したいと思います.(ちょっと今更感ありますが…)
GANとは
2014年にイアン・J・グッドフェロー(Ian J. Goodfellow)らによって発表された,機械学習の新しいアルゴリズムです.
ちゃんとした名前は「Generative Adversarial Networks(敵対的生成ネットワーク)」と言います.
これの頭文字を取って「GAN」ということなのですね.
敵対的"生成"ネットワークというだけあって,何かを生成することができる技術です.
2014年発表から現在に至るまで,毎日のようにGANに関する新しい研究論文が発表されており,AI研究の分野ではとても盛り上がっています.
そしてこのGANはヤン・ルカンというAI研究者からこのように評されています.
"This, and the variations that are now being proposed is the most interesting idea in the last 10 years in ML, in my opinion."
「機械学習において,この10年で最も興味深いアイディアだと思う」
このGANは何がそんなに面白いのでしょうか.
GANでできること
GANのアルゴリズムなどの難しい説明はさておき,とりあえずどんなことができるのかをご紹介します.
まずはこちらの画像を見てみましょう.
カバンの線画ですね.
このカバンに色を付けてリアルなカバンを描きあげたいと思います.例えばこんなものはどうでしょうか.
すてきなカバンですね.使い込まれた革製品のような風合いを見事に表現していますが…実はこれ,GANによって着色がされています.
つまりINPUTとして線画を与えると,それに対応したカラー画像を自動で生成してくれるわけです.
これはpix2pixと呼ばれており,これ以外にも様々なことができます.論文の中でいろいろな生成パターンを見せてくれています.論文の中身は英語なのですが,画像がたくさんあるのでそれを見るだけでも割と楽しいです.
また,上記のように2つの対応した画像から学習するタイプではなく,「教師なし」つまり人が正解データを直接与えずとも2つのドメインの特徴を入れ替えることができるcycleGANというものもあります.
こちらのすごいところは「とりあえずシマウマの写真をたくさん集めてくる」「とりあえず馬の写真をたくさん集めてくる」それだけで上記の入れ替えが可能となるところです.
なんとなく「GANってすごいな」というのが伝われば幸いです.ちなみにpix2pixに関しては,こちらのサイトで簡単に試すことができます.
線画から「猫」を生成できるとのことだったので,こんなクリーチャーを生み出して遊んでました.
毛ガニです.ちゃんと目の部分も認識してるところがホラーですね.
ともあれ,数年前までは「単純作業はAIに任せ,人は創造的な作業を担当するべきだ」などと言われていましたが,このGANというアルゴリズムが誕生したことで,AIでも創造的な作業が可能になったわけです.
GANの仕組み(簡単ver.)
GANの面白いところは上記のように絵が書けるだけではありません.学習方法もちょっと変わっています.
以前瓜生さんが少しGANに触れた記事を書いていましたが,GANの学習方法は「絵画の贋作作家と鑑定士」に例えられることが多いです.
贋作作家が本物を真似た絵を複数描き,本物に混ぜて鑑定士に渡す
↓
鑑定士は複数の絵の中から贋作と本物を見極める
↓
その結果を元に贋作作家はより本物に近い贋作を複数作り上げ,本物に混ぜて鑑定士に渡す
↓
鑑定士はより見分けづらくなった中から贋作と本物を見分ける
↓
以下ループ
これがGANの簡単な仕組みです.つまりGANでは「生成モデル(贋作作家)」と「分類モデル(鑑定士)」の異なる2つのモデルを交互に,しかも競い合うように学習させているわけです.これが”敵対的”と言われる所以なのですね.
ただ,この学習はとても繊細なパラメータチューニングが必要になってきます.なぜなら「贋作作家と鑑定士のどちらか一方がとても優秀(劣っている)」という状況を作ってはいけないからです.
例えば鑑定士が節穴で贋作作家の作った偽物をなかなか見抜けない場合,駄作であった場合でも本物と判定してしまうので,贋作作家の技術は向上せずに駄作ばかりを生み出します.
逆に鑑定士が優秀すぎる場合,贋作作家がどんな作品を作っても偽物と見破られてしまうため,贋作作家としてはどのように改善すれば本物に近くなるのかがわからないままになってしまいます.
つまり2つのモデルのパワーバランスが大切になってくるということなのです.
GANの活用
さて,これまでは「絵描き」としてのGANを紹介してきました.それだけでも十分なインパクトでしたが,GANの技術を「面白かった」だけで終わらせてしまうのはもったいないので,どんな活用方法があるのか?という点を最後にすこしご紹介します.
SRGAN(超解像化)
例えば96✕96pxの画像から4倍の384✕384pxに変換することを想定します.
通常であればBicubic補間あるいはBilinear補間を利用して画像を大きくしますが,これでは画像がボケてしまいます.しかしその補間したい部分をSRGANで生成してあげると,ボケない拡大画像(超解像)を実現することができるのです.(論文)
AnoGAN
こちらはGANを異常検知に応用したものです.正常データのみ学習させ,与えた画像から正常な画像を生成するようなモデルを作ります.すると,異常な画像(下図1段目)を与えたときも,そこから正常な画像(下図2段目)を作り出そうとします.
その差分をとってあげることで異常箇所を浮かび上がらせることができるのです.
さいごに
いかがでしょうか.GANの面白さや可能性が伝われば幸いです.アイディア次第で面白いことが色々とできそうですので,これからの動向にも注目していきたい技術です.
また,弊社ではAI導入セミナー(オンライン)も実施予定です.
"AIを導入したいけど,何から手を付けたらいいかわからない"
"AIをビジネスに活用したいけど,何に利用できるのかわからない"
"そもそもAIがどんなものかわかっていない"
といった方々を対象にしており,AIをどのように活用し,どのように導入するかという内容になる予定です.
ご興味のある方は弊社までお問い合わせいただけますと幸いです.