はじめに
人が効率的に勉強をするためには、良い教材が必要です。そして、ディープラーニングの教材といえば学習データです。今回はその学習データの量と質に焦点当てて解説します。また、後半ではダウンロード可能な一般物体識別データセット「ImageNet」と「学習済モデル」、そしてILSVRCについて説明します。
学習データはどれくらいの量が必要か
ディープラーニング(深層学習)には大量の学習データが必要とよく言われています。そして、GoogleやAmazon、FacebookなどのAIビッグカンパニーは世界規模でデータを持っているし、中国は国内だけで膨大なデータがあるので日本は絶対にかなわないなどと言う人もいます。
でも、巷でみんながそう言っているからって鵜呑みにしているだけと感じることもあります。どれくらい本当に分かって言っているのでしょうか。例えば、麻里ちゃん(Vol.5に続いて登場)が「花の写真の中からバラを認識する分類器を作るのには、どれくらいの枚数の写真が必要ですか」というような誰でも知りたい素朴な質問を投げかけても、きちんと答えられないように思います。
ニューラルネットワークは人間の脳の模倣ですが、逆に人工知能を考える際に人に置き換えて考えるとイメージが湧くことも多いです。人間がバラの花を学習するイメージを想像してみてください。いろいろな花の写真を学習するうちに、これはバラ、これはバラじゃない、とだんだん分かってくるわけです。全部バラの写真ではいけません。ボタンやユリなど他の花の写真も見せてこれはバラじゃないと教えなければ、バラ独自の特徴点を見つけられません。
バラは品種が極端に多くて難易度は高いのですが、それでも1000枚くらい写真を用意してそのうち50枚くらいバラがあれば、そして20回くらい繰り返して学習すれば、普通の人なら覚えられそうですね。
AI君もそんなに違わないです。上記のようなデータを用意して20回くらい繰り返して学習すれば普通のバラは80%以上の正解率で認識できるようになります。ただし、これはVol.7で説明する水増しや転移学習などの少量データで学習できるテクニックを使った場合です。2年くらい前までは、大量の学習データがないとダメでしたが、最近は少量データで学習できるようになったのです。
さらに、もっとデータがあって学習すれば、ちょっと変わったバラも「あ、これもバラだ」と認識してくれるようになります。逆に今まで間違ってバラと思っていたお花も「こういうやつはバラじゃないんだよな、あぶねぇあぶねぇ」って分かってくれるようになります。
ただし、学習データ量に比例して正解率が高まるわけではなく、追加するデータ量に対して正解率が高まる割合はだんだん小さくなり、最後にサチる(飽和する)ことになります。ソフトウェアの品質をある程度まで高めるコスト(時間)に対し、そこから完全にバグを取りきるまでのコストが大幅に膨れ上がる曲線にちょびっと似ています。
人間の場合は、長い人生の中でいろいろなバラに出会って少しずつ正解率が高まって”花に詳しい人”になるわけですが、人工知能はその分をいっきに、疲れたとか休ませてとも言わずに学習します。そういう意味では、やはりデータ量が多い方が有利ではあるのですが、ある程度の合格レベルまで学習させられるデータがあれば十分スタートが切れます(あとはアクティブラーニングで賢くなってもらえばいいのです)。
学習データの品質
実は学習データは量よりも品質の方が大切です。特徴点がわかりやすいデータで学習させれば上達が早いのは当然ですが、逆に品質の悪いデータを食べさせると正解率が下がってしまいます。
ここまで説明したところで、麻里ちゃんがまた素朴な疑問を投げかけてきました。「品質の良い(標準的な)バラの写真だけで学習したら、いろいろなバリエーションのある本番写真に弱い分類器になってしまわない?」。
うっ、思わず答えに詰まりました。確かにその通りです。どう答えたらいいのでしょうね。
実はこの質問には誤解が含まれていて、それは「品質の良い=標準的な」としたところから生じています。品質の良いとは標準的なという意味ではありません。変わったバラであっても、それが現実に存在するバラであれば学習させてバラと認識させるのはいいことです。
「じゃあ、写真の映りが良いかどうかだ」。う~ん、惜しい。正解に近いのですが、そう思うのはちょっと早合点です。人間が見て判断できるような写真であれば、多少汚れていても、多少ピントがぼけていても、アングルが悪くても、それは学習させるべき品質の良いデータといえます。
ここで言う品質が悪いとは、「人間でも判断ができないような」という意味です。例えば、遠景の写真でなんだか判別できないものとか、光や構図の関係でどう見てもボタンに見えるとか、人間が間違うような写真に対して「これはバラです」というラベルを付けて学習すれば、分類器は「こういうのもバラなんだ」と誤って覚えてしまいます。そして、認識精度が下がってしまうのです。
データクレンジングの自動化
品質が悪いデータを分類器に食べさせてはいけません。そのため、収集したデータの中から品質の悪いデータを取り除くデータクレンジング(Data Cleanging)という処理をした上で学習データとして使います。
しかし、実はこの作業が結構たいへんです。”品質が悪い”が「人間でも判断ができないような」という基準だとすると、人間が判断できるかどうかを判断するという作業になり、なかなか選り分け作業をロジックで自動化できません。
あれ、今書いた”選り分け”って別の言い方だと”分類”ですね。人間ぽい分類作業を自動化するって…、そうこれは人工知能の得意な領域ですね。ということは分類器に食べさせるためのデータのクレンジングに、分類器自身を使えばいいのです。分類器は、判断結果に対して確信度をパーセントで添付します。それを利用して、確信度が極端に低い結果の場合はどうせ食べさせてもろくな結果にならないとして除外すればいいのです。
バラの画像識別の場合、この作戦の手順は次の通りになります(図1)。
1)人間がクレンジングしたデータである程度バラの認識を行える分類器を作成する。
2)残りのデータに対して、その分類器を使って、確信度による"品質が良い/良くない”を選り分ける処理を行う。
3)品質が良いデータだけを使って、その分類器の学習を続ける。
4)追加の学習データがあれば、2)の手順に戻ってループする。
図1:データ収集とクレンジング
作戦名は「最初の子供は手間がかかるが、下の子は上の子が面倒を見てくれるで楽ちんになる」です。え、長いですか。では、”First child's present”でどうでしょうか。
手間は別途かかりますが、バラ認識の分類器を兼用するのではなく、データの品質の良し悪しだけを判断するクレンジング専用分類器を作成すればより効果が高められます。こちらは2番めの子が3番目の子の面倒を見てくれる作戦なので、”Second child's present”としておきましょう。
ImageNetとILSVRC
音声認識や自然言語理解などさまざまな人工知能応用分野の中で、画像認識はAIが最も得意としている分野です。その発展に大きく役立ったのがImageNetです。ImageNetとは、2010年に発足したコンソーシアムが作成した「一般物体認識データセット」です(う~ん、英語はgeneric object recognitionなのですが、日本語にすると僕と同程度のネーミングセンスか…)。インターネット上の画像をかき集めて、これはライオン、これは自転車などと手作業でラベル付けしたデータセット(画像とラベルのセット)を作ったのです。
[RELATED_POSTS]年々画像やクラス(ラベル)が増えてきて、現在では2.1万クラス、1400万枚を超えるデータセットとなっています(うち、2割くらいの画像はロストしているとも言われていますが)。2010年からこのデータセットを使って1000クラスを認識する画像認識コンテスト(ILSVRC)を行われており、2012年に8層の畳み込みニューラルネットワーク(CNN)を使ったAlexnetというモデルが圧勝したことが今回のディープラーニングブームのきっかけとなっています(図2)。
図2:ILSVRCの各年の優勝モデルと誤り率
(出典)SQLMLブログ http://sqlml.azurewebsites.net/2017/09/12/convolutional-neural-network/
ImageNetは公開されていて、画像およびラベル(クラス)をダウンロードすることができます。ただし、インターネット上の画像データを拾ってきたデータなので著作権フリーというわけではなく、研究や学習用でなければ利用できません。
ILSVRCは”天下一武道会”のような存在になり、毎年多くの新しいモデルが参戦して来て判定精度も年々向上しています。そして、この大会を通して、VGGNet(2014年準優勝)やGoogLeNet(2014年優勝)、ResNet(2015年優勝)などの有名な学習モデルが出現しています。そして、それらのモデルの構造やパラメータがオープンソースとして公開されるようになり、これらは学習済みモデル(Pre-trained models)と呼ばれています。
コンテストの内容も少し変わってきて、2017年度は次の3つのタスクとなっています。
①Object localization for 1000 categories.
2012年から継続して行われている1000クラスのオブジェクト識別問題
②Object detection for 200 fully labeled categories.
2014年から行われている画像から200クラスオブジェクトを検出して識別する問題
③Object detection from video for 30 fully labeled categories.
動画から30クラスのオブジェクトを検出して識別する問題
畳み込みニューラルネットワーク(CNN)の発展に大きく貢献してきたILSVRCですが、学習モデルの性能が向上するにつれて精度が向上する余地が少なくなり、トップグループの差が極めて小さくなりました。そして、もうこの狭い領域で競うよりも、もっと別の方向に力を注ぐ方がAI研究にとって健全だという声が強くなってきました。実はGoogleも2014年の優勝以来参加していません。そして、ついにILSVRCは2017年を持って終了することになりました。
なお、この2年は中国勢がとても強いです。2016年は中国公安部がRestNetを改良したモデルで①のタスクで誤り率2.99%を達成して優勝しましたが、この時、上位5チームの差は0.3%以内と非常に僅差でした。
続く2017年も27チーム中半分以上を中国勢が占めて上位を独占しています。①のタスクではWWWという中国中心のチームが誤り率2.55%で優勝し、②のタスクでもDBATという中国中心のチームが優勝しています。
学習済みモデル(Pre-trained models)
現在、画像系でポピュラーな学習済みモデルには次のようなものがあります。TensorflowやPytorchなどライブラリによって標準サポートしているモデルが違いますので、利用目的と使用するライブラリとの組み合わせでどれがいいか選んでください。
・Alexnet
・VGG11/13/16/ VGG19
・BNIncepion
・Inception-v3 /Inception-v4
・InceptionRestNetV2
・ResNet18/34/50/101/152
・ResNeXt101_32x4d/101_64x4d
・FBRestNet152
・MobileNet
・SqueezeNet1.0/1.1
・NASNet-A-Large
・DenseNet121/161/169/201
・Xception
・Places205
まとめ
イチから画像を識別する分類器を作成する場合、大量の画像データをかき集め、不適切な画像を取り除き、サイズを揃えるなどの前処理を行い、ニューラルネットワークのライブラリを選んで、何回も何回も結果を見ながら学習を繰り返すという膨大な作業が生じます。
それを思うと、すでに訓練した学習済モデルが用意されているってのはなんて幸せなのでしょうね。次回は、さらにそのありがたみが神に思えるようなお話です。水増しや転移学習などにより少量データで学習できちゃう方法を解説します。
梅田弘之 株式会社システムインテグレータ :Twitter @umedano
- カテゴリ: