%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-27-15-55-45

AI時代の鍵を握るのはデータオーギュメンテーション技術

Hello data augmentation, good bye Big data

2016.09.27

Updated by Ryo Shimizu on 9月 27, 2016, 17:40 pm JST

 AIを強化するためには学習のもととなるデータセットが必要です。
 しかし、"彼ら"が学習するためのデータセットは、既存のWebサイトや大企業が収集している膨大なセールス情報、いわゆるビッグデータだけでは不十分な可能性があることが既にわかってきています。

 今AIで最も進歩が目覚ましい分野は未だに一般画像分類ですが、一般画像分類のようなタスクでさえ、既存のいわゆるビッグデータと呼ばれるものはほとんど使えません。

 かわりに使われるのは、さまざまな組織・団体が用意した「学習用データセット」です。学習用データセットには画像分類だけでも様々な種類があり、単に画像の種類を分類しただけのものから、画像のどこに何が映っているかという情報まで加えられたものや、画像の説明文まで含むものなど様々です。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-27-15-55-45

 たとえば上図は、Microsoft COCO;Common Object in Context(http://mscoco.org)というデータセットの一例です。

 この一枚の写真の中には、7人の人が写り込んでおり、その領域を簡単に塗りつぶしてあります。
 AIを学習させるためには、簡単に言えばこういうデータが大量に必要になるのです。

 %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-27-16-18-56

 また、例えばこの写真には、少女(人間)と傘のふたつのものが写り込んでいて、それぞれ領域が分かれています。

 ひとつの写真に対して複数の説明文を用意してあげることで少ない学習データを効率的に増やすことが出来ます。

 ここで重要になってくるのは、データオーギュメンテーション(データ拡張)というテクニックです。
 
 人工知能は人間と同じように、長時間いろいろなものを見て学習します。
 見るだけで学習できる場合と、問題と正解を照らし合わせて学習する場合の二通りがあります。

 どちらの場合であっても、できるだけ学ぶデータの絶対数が多い方が学習が良く進むようになります。
 
 たとえば、普通に画像を学習させる場合であっても、左右に反転させたり、一部分を切り抜いたり、画像に多少の回転を加えたりするとデータを増やすことが出来ます。

 教師付きの学習用データは貴重なので、できるだけひとつの学習用データを使いまわせるのが望ましいのです。MSCOCOにはそういう工夫もされています。

 たとえば、MSCOCOで配られるそれぞれの写真にはいくつかの説明文が含まれています。写真から説明文(キャプション)を生成するAIを訓練するためでする

 たとえばさきほどの少女の写真ならこんな感じです。

a little girl walking on a beach with an umbrella
a little girl holding a kite on dirt road.
a young girl on a beach flying a kite
a young child is carrying her kite while outside.
a small child holding a kite and eating a treat

 このように、ひとつの画像に対して5通りの言い方で説明しています。
 すると、画像と組み合わせると、ひとつの画像を少しずつ変化させながら5通りの表現が使えることでデータを五倍に増やせます。

 人間の視覚がいかに凄いものかというと、眼球を動かすことによって一度に大量のデータを様々な方向から読み取り、データを効率的に収集し、頭のなかに作り上げていることからもわかります。

 意外とわすれがちですが、人間の目は真ん丸です。
 ふつう、真ん丸なレンズは魚眼レンズといって、かなり歪んで写ります。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-27-16-27-34

 もちろん球面から入ってきた光を平面に投影して撮影するカメラ用の魚眼レンズと、球面から入ってきた光を球面の網膜で受ける人間の眼球を同じには扱えませんが、そもそもカメラとは根本的に違う原理で現実世界を認識しているのが人間の網膜や認識といったものになります。

 たとえばよく「ここは直線」と考える場所があります。実際、直線に見えます。しかし人間の網膜には、必ずしもそれが直線として写り込んでいるかというとそれは違います。

 脳が「これは直線である」と認知ことによって初めて直線に見える、という説もあります。

 直線という概念を知らないうちは、直線が何であるとか、そもそもものが直線に見えるとかがありません。

 たとえば、幼児に絵を描かせるとちゃんと描けないというのは、運動能力が未発達なのもありますが、それ以前に認知能力がまだ未発達だと考えられます。

 殴り書きの曲線と正円、直線と線の違いを幼児ができるようになるには、訓練が必要です。

 たとえば黒板に大きく綺麗な正円を描くには、ちょっとテクニックと訓練が必要です。
 黒板にチョークが当たる場所だけを見ていると全体をイメージできなくなりがちだからです。

 黒板に大きな図形を書くときには、部分と全体を同時に意識して把握しなければなりません。

 また、錯覚の問題もあります。
 人間は、全く同じ長さや太さのものでも、位置関係によって、どちらか一方が大きく見えたり小さく見えたりします。

 人間は成長を経て、膨大な量の映像情報を網膜から入力し、一種の教師なし学習をしていると考えられます。そして、図鑑や教科書を見ると、そこには「これはカバ」「これは消防車」といった、正解ありの教師あり学習をしてファインチューニングすることでどの消防車を見ても「あれも消防車だ」と認識することが可能なのです。

 人間の持つ好奇心というのは、この「教師データ」を求めるという本能にあるのかもしれません。
 「あれは消防車のようだけど、どうも違う気もする。あれはいったいなんなのだ」と正解を聞くと、たとえば「あれは救急車というのか」ということがわかります。一度わかれば、他の救急車を見ても「ああ、救急車ね」と瞬時に理解できるのです。このへんはまだまだ人間の方がAIよりも強いところです。今のAIはかなりしつこく救急車をいくつもいくつも見せないとそれが救急車であると認識することはできません。

 今のところ人間がAIに対して優位に立てるほぼ唯一の拠り所は、学習データが膨大であることだけです。1歳なら一年分の、50歳なら50年分の学習データセットを持っているわけです。

 そして同時に、学習データをいかに拡張するかという、データオーギュメンテーション技術は、これから先、AIをどのように実用的に活用していくかを考える上で非常に重要なテクノロジーになるでしょう。

 筆者らが多用しているデータオーギュメンテーション技術のひとつは、動画です。
 動画は人間の網膜と同じように無数の情報を得ることが出来ます。たとえば、同じ人間であっても、動いてるとき、止まってるとき、顔に手を当てているとき、困っているとき、怒っているとき、などなど、さまざまなデータが取得可能です。

 たとえば、ある物体を新しくAIに覚えさせたかったら、まずグリーンバックなどで対象物を撮影します。
 ここではペットボトルを認識させたいとします。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-27-16-41-50

 これは360度、できるだけあらゆる確度から撮影します。
 手が写っても構いません。というか、ペットボトルの場合、手と一緒に写っているのが普通ですから、手と一緒に映ってるくらいがちょうどいいのです。

 こうして作成したデータセットは、単体でも充分機能するのですが、実際には現実の背景と混じっていることが普通です。ですから、グリーンバックを使って背景を「抜き」ます。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-27-16-44-24

 こうして抜いたグリーンバックを、次に現実の風景と合成します。
 現実の風景ももちろん動画で撮影しておき、あらかじめ日常の様々なシチュエーションで登場する背景を撮影しておいた映像とグリーンバックで撮影した対象物とを合成します。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88-2016-09-27-16-42-35

 こうして作成したデータセットは、簡単に2000枚くらいになってしまいます。ひとつのクラスに2000枚というのはやや多すぎるバランスです。

 いわゆるILSVRC2012のImageNetデータセットが、各クラス1500しかないので、それくらいあれば充分です。あまりにも偏ると過学習の危険もあるので適当に間引きます。

 できるだけバラエティに富んだ背景との合成が欲しいので、ここはもう完全にノウハウの世界になります。

 今はディープラーニング関連企業各社がこぞって学習用の「秘伝のタレ」とも言うべき背景画像データや、ファインチューニングのレシピを用意しているはずです。

 できれば実際に使用する画像のデータセットを使えるとなおベターです。

 こうして作成したカスタムデータセットを、今度は典型的な「これとは違う」データセットとの比較に使用します。

 いわゆるダミーデータですが、基本的には多すぎず少なすぎないダミーデータの集合があれば問題ありません。筆者らは独自に作った40クラスのダミーデータセットがあるのでそれを使います。

 それぞれ1500枚ずつのダミー画像が入っています。

 あとは既に訓練しておいた学習済みモデルをファインチューニングするか、それともゼロからデータセットを分類させるか、扱う問題の複雑さに応じてニューラル・ネットワークモデルを設計して学習させるだけです。

 筆者らの実験では、先程作ったペットボトルを加えたデータセットの認識率は半日程度で97%になりました。

 実際のところ、画像分類ひとつとっても、たとえば時系列データを読ませるとか、グラフを読ませるとか、文字を読ませるとか、様々な応用が考えられます。

 こうした機械学習用のデータ拡張技術では、ビッグデータのように細部まで正確なデータを数億剣持っていることよりも、目的に応じた適切なサイズのデータを必要なだけ用意できることが大事です。

 とくに深層学習の場合、学習データが大きすぎると、学習に何ヶ月もかかり、意味がなくなってしまいます。
 
 したがって、このさき重要になってくるのはデータオーギュメンテーション技術ということになるでしょうね。

WirelessWire Weekly

おすすめ記事と編集部のお知らせをお送りします。(毎週月曜日配信)

登録はこちら

清水 亮(しみず・りょう)

1976年新潟県長岡市うまれ。6歳の頃からプログラミングを始め、16歳で3DCGライブラリを開発、以後、リアルタイム3DCG技術者としてのキャリアを歩むが、21歳より米MicrosoftにてDirectXの仕事に携わった後、99年、ドワンゴで携帯電話事業を立上げる。'03年より独立し、現職。'05年独立行政法人IPAより天才プログラマーとして認定される。

RELATED NEWS

RELATED TAG