最近よくディープラーニングや機械学習というワードを耳にしている方も多いのではないかと思います。巷ではAI技術と呼ばれることもありますが、人間の神経構造を模したニューラルネットワークを使った学習アルゴリズム自体は、数十年前から提唱されていました。
それを多層化したディープネットワークと言われる構造も約十年前から登場していますが、5年ほど前に画像の認識の精度を競うコンペティションで、ディープラーニングを用いた手法が既存の手法を大きく引き離して勝利したのを皮切りに、一気に精度の改善が進み、ついに人間と変わらない精度での判定が可能になってきました。
画像認識のエラー率の推移 紫がディープラーニングを使った手法
https://devblogs.nvidia.com/parallelforall/mocha-jl-deep-learning-julia/ より
そうした経緯から、ここ数年で機械学習は非常に研究開発が活発な領域となり、いくつもの大きなブレークスルーが起こっています。例えば、機械学習においては最適化を行うための目標である目標関数を作る事が一般的でしたが、目標関数自体もニューラルネットワークに追って学習させ、評価するネットワークと評価を高めようとするネットワークがある意味敵対しながら学習を繰り返す、GAN (Generative Adversarial Network) という技術で今まで学習が困難だった画像の生成といった複雑なタスクが可能になってきています。
生成された顔画像
https://github.com/Newmu/dcgan_code より
また応用分野でも、将棋やチェスよりも盤面が広くコンピュータにとっては難しいとされていた囲碁の分野で、アルファ碁がトッププロを打ち負かした事も記憶に新しいかと思います。僕自身、少しだけ趣味でネット碁をやったり、コンピュータソフトで遊んでいた事もあったので、その進歩の速さに驚かされました。なかでも特筆すべき点が2つあります。一つは終盤にならないと陣地の大きさが確定しない囲碁で”その盤面の評価”が出来るようになった事。もう一つはコンピュータ将棋と違ってコンピュータ囲碁は全ての手を全探索して読み切っているわけではなく、尤もらしい手を打って盤面を進めてみるモンテカルロ法という、ある意味大雑把な手法を使っていてそれでもプロの人間に勝てるという事です。
どちらも、従来は非常に難しいと考えられてきた事です。
これは単なるゲームの勝敗という事だけには留まらず、一部の人間が専門としてきた領域に、新しくコンピュータアルゴリズムが適用され、一部では人間を超える結果を残すようになっていく事を示唆しています。
さらに自動運転技術やロボット技術の研究開発も世界各国で盛んに行われており、様々な成果が世の中に発表されています。中には、カメラやその他のセンサ入力と、ハンドル、ブレーキ操作の対応を学習させて、完全に学習ベースで、つまり複雑な条件文を人間が記述することなく、自動運転する研究も存在します。
また産業ロボットの分野では、これまで単一のモノに対して決まった動作しかしないロボットがメインでしたが、現在では多種多様な物品を画像を認識することで識別し取り扱うことの出来る技術の開発が進められています。
例えばAmazonは自分たちの倉庫をロボット化していくために、Amazon Robot Challenge (旧Amazon Picking Challenge)というコンペティションを行っています。僕も去年はロボットエンジニアとして会社のチームでそちらに参加しておりました。
そしてこうした機械学習を用いた技術は先端分野だけでなく、一般ユーザもサービスとして目に見える形で利用出来るようになってきています。
僕の開発している線画に自動で色を塗ってくれるサービスPaintsChainerもその一つといえるでしょう。PaintsChainerではカラーのイラストから線画部分を抽出して、カラー画像と線画のペアを作りそのペアを学習させることでどう着色をしたら良いかを学習させました。白黒写真を自動着色する技術についてはいくつか関連研究がありましたが、人が手で書いた線画やスケッチを自動着色できて、ヒントを与えることで色の操作もできるサービスというのは世界初で、日本のみならず色々な国で話題にして頂く事ができました。
このPaintsChainerも前述したGANを使い、本物の絵と生成した絵を区別するネットワークをトレーニングして、着色をするネットワークがその区別をなるべく出来ないように学習させる事で、色を塗ることが出来るようになりました。GAN無しでは「線画から元の画像の色を当てる」という人間にとっても難しい目標設定になってしまい、うまく学習することができなかったのです。
GANによる絵の生成という意味では、顔のみに限定されているとはいえ、非常にクオリティの高いイラストを生成できるサービス、MakeGirks.Moeも話題になったかと思います。 予め大量の絵を学習しているとはいえ、何も入力する事無く多様な画像を高クオリティで生成出来るようになったのは特筆すべき事です。
同様の顔イラスト生成は約2年前の記事(http://qiita.com/mattya/items/e5bfe5e04b9d2f0bbd47)でもすでにトライはされていました。しかし、ほんの数年でここまで劇的にクオリティが上昇した事は驚くべき事です。
格段にレベルの上がった顔イラスト生成
http://make.girls.moe/#/
この分野の進歩が非常に速いのは、多くの研究者、学生や企業がこの分野で盛んに研究開発をしており、非常に活発なコミュニティが形成されているのがその要因の一つでしょう。例えば、GANを改善する論文だけでも既に100を超える論文がネット上で公開されており、これは驚くことにほとんど毎週新しい論文が出ている計算になります。 スピード勝負に負けないために正式に学会に発表する前に自分の成果をネットでどんどん公開する研究者も出てきています。
そして個人が研究開発をするハードルも下がってきています。機械学習計算を行うためのGPGPUは安くはありませんが、十数万円で一般的に入手できる民生品ですし、プログラミング自体も、ChainerやKeras、TensorFlowといったニューラルネットワークを簡単に記述するためのフレームワークの普及により、敷居が下がってきています。
かくいう僕も実は今の会社に入る以前は、機械学習についての経験はありませんでした。
会社に入ってすぐは前述の通りロボット関係のエンジニアをしており、しかも制御プログラミングをするというより配線したり部品を加工したりといった油臭い仕事の方が多かったくらいです。
ディープラーニングの研究開発のために自社でオープンソースとして開発してフレームワークである、Chainerの勉強をし始めたのが去年の10月頃でした。最初はサンプルコードを弄ったり学習データを色々変えていたりしたのですが、思ったより面白くて夢中で勉強してしまいました。線画の自動着色に関するブログ記事を書いたのは去年の12月末なので、実はコア部分の開発にかかっていた期間は2ヶ月程度です。
画像の分類機を作るよりは面白いだろうと思って、勉強がてらにトライして見たのですが、機能開発の面でもサービスの面でも非常にうまく行ったのは幸運でした。社内でフレームワーク自体を作っている非常に知識も経験もあるメンバーからのサポートが多大な助けになった事はもちろんです。
しかし、従来のソフトウェア開発の手法ではこうした複雑な機能を一人で短期間で作り上げることは非常に困難でした。それに比べて機械学習ベースで行う事のメリットは、コードとしては非常にシンプルな構造で複雑なタスクを学習する事が可能になる点です。
自動着色にしても画像生成にしても、コードの長さ自体は大したものではありません。やろうと思えば一日で0から書ける程度のものです。もちろん、大量のデータを与えて学習させてやるにはそれなりの時間がかかりますが、逆に与えるデータを変えることで全く別物のようなタスクを学習させることも出来ます。エンジニアとしては簡潔に作れるものが非常に多様なタスクに使えるというのは非常に価値ある楽しい事です。
ここまでは、現在の技術で可能になってきている事の話でした。
それでは将来、技術が進歩していく中でどういった事が起ってくるのでしょうか?
その一つとして、自動着色や画像生成にしても、音声や翻訳といった言語処理にしても、ある一定程度のレベルを超えると、どんどん「正解がない領域」に到達していくだろうと僕は考えています。陳腐な言葉かもしれませんがAI的な領域という事もできるでしょう。
正解がないという事は、結果の評価そのものが非常に難しいという事です。数値で評価できる指標が、機械で学習するにあたって非常に重要な物であるのは言うまでもないでしょう。
ところが、そうした数値で評価できない領域では、本質的な問題が、機能や性能の問題ではなく、どうあるべきかというデザインの問題へと変わっていくのではないかと僕は思います。実際に、PaintsChainerによる色塗りといった既にあるアプリケーションですら、数値でその評価をする事は困難になっています。
前述したGANはまさに、数値評価が難しい問題をどう評価するか、という問題を扱うために発展している技術です。
しかし、現状のGANだけではまだまだ評価や学習がしきれない問題は沢山あります。例えば会話や小説などの文脈理解や連続した動画での整合性の評価といった、連続的で相互に依存した状態の評価や、記憶や論理が求められる場面の取扱というのは、まだまだ難しいのが現状です。
そして、こうした問題は技術的に難しいだけでなく、ある意味哲学的な難しさに挑戦しなければなりません。
例えば感動する小説とは一体何か?
人は一体何に感動しているのでしょう?
我々が猿なら食べ物とおっぱいを見せればそれで良かったのかもしれませんが、残念ながら、あるいは幸いにして、我々はもう少し高尚なサムシングを欲しています。
しかし、我々はそれが一体何なのか、きちんとコンピュータに計算可能なカタチに翻訳して記述する事が出来ていません。人間自身が、感覚的には理解していても、論理的には理解できていないとも言えます。そうした人間ですら理解が曖昧な部分を取り扱える技術が確立していったとき、それはAIと呼ぶにふさわしいのかもしれません。
もしもAIに生きる意義を説いて貰える日が来たら、それはそれでちょっと切ない気分になる人もいるかもしれませんが、自殺をする人は今よりもっとずっと減るかもしれません。
新しい技術をどう扱うかというのはエンジニアだけでは答えの出せない事です。なのでAIをアーティストと一緒にデザインするとか、コミュニティといっしょにAI育てていくとか、といった事が、今後重要になって来るのだと思います。
正解のない領域で、どうやって学習をしていくのか、学習して出した答えに対してどうやって人間の信頼を獲得していくのかが、これからの課題となるでしょう。そしてそれは、技術者や研究者だけではなく、普通の人々がどうやって新たな技術を使いこなしていくかという事でもあります。
最後に、実はこの文章はAIで生成しました…なーんていえたら格好良かったのですが、実際には僕は今この文章を書くのに締め切りギリギリ(過ぎてしまっている)ので、やや夜なべしている有様なのですが、こういうのも早くAIによろしくお願いできるようなって欲しいです。
それでは、おやすみなさい。良い未来の夢を。
米辻 泰山
株式会社PreferredNetworks
2012年度未踏事業に 「Web親和性の高い創作形態の提案と創作環境の開発」で採択。
大学時代はロボコンサークル「RoboTech」に所属。
PreferredNetworks社ではロボコン経験を活かして Amazon Picking Challenge 2016でメカニック担当。その後、線画に自動着色するwebサービス「PaintsChainer」の開発を行った。