連載
» 2015年12月16日 05時00分 UPDATE

いまさら聞けないDeep Learning超入門(終):深層学習の判別精度を向上させるコツとActive Learning (1/2)

最近注目を浴びることが多くなった「Deep Learning」と、それを用いた画像に関する施策周りの実装・事例について、リクルートグループにおける実際の開発経験を基に解説していく連載。最終回は、画像認識の判別精度を向上させる具体的手順と落とし穴、ハイパーパラメーターのチューニング、学習を自動化するActive Learningについて。

[石川信行,リクルートテクノロジーズ]

赤裸々に解説

「いまさら聞けないDeep Learning超入門」のインデックス

連載目次

 最近注目を浴びることが多くなった「Deep Learning(ディープラーニング・深層学習)」と、それを用いた画像に関する施策周りの実装・事例について、リクルートグループにおける実際の開発経験を基に解説していく本連載。

 前回までは、下記のように解説してきました。ニューラルネットワーク、Deep Learning、Convolutional Neural Net(CNN)の基礎知識と活用例、主なDeep Learningフレームワークを紹介し、リクルートグループで画像解析において積極的に利用しているフレームワーク「Caffe」を中心にDeep Learningを利用した画像解析について解説。そして、リクルートグループにおける画像解析の事例を紹介し、ビジネスへの活用に当たり、CNNだけでは乗り超えられない壁を乗り越えるまでの試行錯誤の過程を解説しました。

 最終回となる第4回では、リクルートグループにおける画像解析施策の実例を基に、判別精度向上の試みを赤裸々に解説していきます。

判別精度向上の具体的手順

 Deep Learningに限らず、一般的に予測・分類などの目的で機械学習を行う際には、「判別精度」に着目してモデルの作成、チューニングを行います。この判別精度向上という作業が機械学習に携わる人間にとっては腕の見せ所であり、楽しみであり、また苦難が続く過程でもあるのです。

 連載第3回で紹介した、ホットペッパービューティ―(リクルートライフスタイル運営)のネイルデザイン判別を例にすると、実際の判別精度の確認、向上作業は下記のような過程で進んでいきます。

  1. 対象となる画像を用意する
  2. 全ての画像に正解ラベルのラベリングを行う
  3. 訓練用データを学習し、モデリングを行う
  4. テストデータをモデルに適応し、予測を行う
  5. 予測したラベルの判別精度を確認する。
  6. モデルのチューニングを行う


画像を用意し、「正解」のラベリング

 最初に、ネイルのデザイン画像を用意しラベル付けを行います。第3回でも記載した通り、投稿された「手の全体画像」からネイルに該当する部分を1枚ずつ切り出す作業を前処理として行っており、画像入稿時に付与される「手全体に対する単一のデザインラベル」をそのまま使用することはできません。そのため、切り出したネイル写真1枚1枚に対して人手で正解デザインのラベル付けを行う必要がありました。今回のモデリング用には最終的に4万718枚もの画像を用意しました。(この作業のおかげで、私たちはリクルートテクノロジーズの中でも1、2を争うほどネイルデザインに詳しくなったという伝説が生まれました)。

学習開始――モデルの作成とラベルの予測

 次に、いよいよモデルを作成します。本施策では、40718枚の画像のうち、モデルの学習に用いる訓練データとして3万6633枚、予測用のテストデータとして4085枚の約9:1の割合で分割しました。この訓練データを用いてモデルを作成し、4085枚のテストデータのラベルを予測します。

 学習に全てのデータを使いたいところですが、ここで全てのデータを学習に用いてしまうと、訓練データがデータとしての代表性に欠けているケースが実際に多いために、「過学習」と呼ばれる「訓練データに対してよく学習されているが、未知のテストデータに対しては適合できていない」事象に遭遇することが多くなります。

判別精度を確認

 この未知データの予測処理が終わった後、実際に手動でラベル付したデザインと予測結果を比較し、答えが合っているかどうかで精度を算出します。

 この全体精度に加えて、下記のようなConfusion Matrixを基に「どのデザインの精度がよかったか」などを考察し、各種ハイパーパラメーター変更や訓練データの追加などを行いながら、この一連の過程を 繰り返すことで精度を高めていきます。これが「チューニング」と呼ばれる作業です。

 また、この精度検証では通常「K-分割交差検証」などの交差検証(Cross-validation)を用いて精度検証を行うとよいのですが、実際の現場では施策リリース時期などの制限もあり、簡易的な精度チェックを基にチューニングを繰り返すことになる方が多いようです。

DeepLearning4_1.jpg

 例えば、このConfusion Matrixからは、「animal」については、「実際にanimalとラベル付された74枚ラベルのうち、41枚がanimalと予測された」ので、半分以上の正答率となると分かります。一方で、「flower」に関してはどのデザインにおいても誤判別されやすい傾向があり、このflowerのデータからうまく特徴量が取り出せていない可能性があることも分かります。

ハイパーパラメーターのチューニング

 Deep Learningにおける精度向上方法といえば、ハイパーパラメーター群のチューニングが真っ先に思い浮かぶと思います。連載第3回でも一部ご紹介しましたが、Deep Learningではハイパーパラメーターの種類が非常に多く、代表的なものを挙げるだけでも下記のようなパラメーター群が存在します。

  • 学習係数:一回のイテレーションで進む学習の度合い
  • イテレーション数:学習を繰り返す最大の回数
  • モーメンタム:最適な重みを導き出すための勾配法の高速化パラメーター
  • 隠れ層のユニット数:隠れ層の数。基本的に大きければ大きいほどよいが、過学習には注意
  • 活性化関数の数・種類:Sigmoid、Tanh、ReLUなどの関数の種類と、「層をいくつ、どのタイミングで組み入れるか」などの調整
  • Dropoutの数:学習時のパラメーターのいくつかを任意の確立で使わないようにし、汎化性能を上げる仕組み

 これらのパラメーターを変更後、モデルを作成し精度を見るという方法を幾度か繰り返すことになります。「グリッドサーチ」と呼ばれる自動的に最適なハイパーパラメーターを探索する手法もありますが、現実的にはいくつか重要なパラメーターに絞り、順番を決め、その値を変更して最適値を求めていく手法が多く採られる傾向があります。

 ネイルの画像判別においても、実に100回前後の試行を繰り返しました。下記のようにイテレーション数やdropoutの数などを変え精度の改善を図っていくのが現実的です。

DeepLearning4_2.jpg

 この図から、最終的にはパラメーターチューニングにより、20ラベルに対して50%程度の精度向上ができた過程が見てとれると思います。

       1|2 次のページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。