検索
連載

ニューラルネットワーク、Deep Learning、Convolutional Neural Netの基礎知識と活用例、主なDeep Learningフレームワーク6選いまさら聞けないDeep Learning超入門(1)(1/2 ページ)

最近注目を浴びることが多くなった「Deep Learning」と、それを用いた画像に関する施策周りの実装・事例について、リクルートグループにおける実際の開発経験を基に解説していく連載。初回は、ニューラルネットワーク、Deep Learning、Convolutional Neural Netの基礎知識と活用例、主なDeep Learningフレームワーク6選を紹介する。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
「いまさら聞けないDeep Learning超入門」のインデックス

連載目次

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

 第1回では、Deep Learningと、それを用いた背景に関して、第2回では、Deep Learningを実装する際に用いたフレームワークである「Caffe」に関して、その構築手法や使い方に関して解説し、第3回では、リクルートグループにおける施策事例に関して、より詳細に述べていきます。第4回では、判別精度のチューニングや、「Active Learning」を用いた継続的精度向上など独自の開発ポイントなどを記載していく予定です。

ニューラルネットワークとは、ディープラーニングとは

 ここに一枚の画像があります。この画像を見たとき、あなたはとっさにどう判断したでしょうか。

 おそらく思うはずです。「あっ、カブトムシだな」と。たとえカブトムシを知らなくても、「虫だな」とか、「生き物だな」と何かしらを認識して判断したはずです。

 これは脳内で無意識に下記のプロセスをたどった結果、起きたことです。

  1. これまで生きてきた中で図鑑や、テレビ、実物で「カブトムシ」を見てきた。
  2. 脳の中で「角があるから」「足が6本あるから」「茶色だから」などの特徴を抽出し、「カブトムシ」と記憶した。
  3. この画像を見たときにこれまで学んだ特徴を照らし合わせ、とっさに近いものを関連付け「カブトムシ」と判断した。

 このように脳内の神経回路網とそのプロセスを模倣したのが「ニューラルネットワーク」という機械学習ロジックであり、これを多層にして組み合わせたもの、この総称を「Deep Learning」(ディープラーニング)と呼びます。

 本稿では、数あるDeep Learningのロジックの中から、主に画像解析を目的に使用されリクルートグループにおいても積極的に活用されている「Convolutional Neural Net」について解説します。

Deep Learningが求められた背景

 筆者がデータ解析に従事し始めた2010年ごろ、Deep Learningという言葉は一部のアカデミックな分野では流行していましたが、ユーザー企業でその言葉を聞くことはあまりありませんでした。

 今あらためて、Deep Learningの歴史をひも解いてみると、その歴史は決して明るいものではなかったことが分かります。Deep Learningの構成要素である、ニューラルネットワークとそれを単純に多層に組み合わせたものに関しては、それこそ1980〜1990年代前後から盛んに研究されていました。しかし、その精度や処理量の問題から、同じく分類推定モデル構築によく利用される機械学習ロジックである「ベイジアンネットワーク」「サポートベクターマシン」の裏に隠れてしまい、冬の時代が長く続くことになったのです。

 再び脚光を浴びるようになったのは2000年代に入ってから。2006年にDeep Learningが発表され、その後2012年にトロント大学のHinton氏が「ImageNet」と呼ばれる画像セットを用いた画像識別コンペティションでDeep Learningを用いて2位以下を大きく引き離す精度を記録したことがきっかけです。このあたりからグーグルをはじめ、マイクロソフトやフェイスブックなどが注目し、ビッグデータのブームやGPUサーバーなどのハードウエア面の進化も伴ってDeep Learningは広くデータ解析者に広がっていきました。

 Deep Learningの最大のウリは何といっても、「人手で特徴量を抽出する必要がない」という点です。

 そもそも機械学習は、大きく二つのフェーズに分けられます。データから特徴を抽出するフェーズと、それを学習し予測・分類を行うフェーズです。両者のうち、今日、リクルートグループ内で多く活躍する「データサイエンティスト」と呼ばれる人々が毎日その手腕を発揮しているのは主に前項のフェーズ「特徴抽出」に当たります。

 例えば、アイテムのレコメンド機能を開発する場合、「サイトを訪れたユーザーのデータから何を用いてアイテムの推薦を行うか?」「閲覧履歴なのか?」「閲覧時間なのか?」「ユーザーのデモグラ情報なのか?」「アイテムの情報なのか?」「これらの組み合わせなのか?」あるいはクチコミ情報を分類する例にした場合、「クチコミ文から重要語を抜き出してカウントしたものを使うのか」はたまた「単語と単語の関係性と特徴として使うのか」――こういった作業をいくつかの試行錯誤を繰り返しながら定めていき、精度の良い機能を開発していく「職人技」に近い業務を行っているのです。

 画像解析においても、これまで「SIFT(Scale Invariant Feature Transform)」「SURF(Speed Up Robust Features)」「HOG(Histograms of Oriented Gradients)」などさまざまな特徴抽出アルゴリズムが人手により設計・構築されてきましたが、これらの特徴抽出の職人技による精度やスピード向上のボトルネックと効率化に向けた自動化の目的から、データから特徴抽出に人手を介さず機械に抽出させる手法であるDeep Learningが注目されたのです。

Convolutional Neural Netとは

 画像から特徴を抽出する際に、筆者が所属するリクルートテクノロジーズが用いているのが、「Convolutional Neural Net」と呼ばれる手法です。この手法は、「画像データ全体から受け取れる意味は、これを構成する小さなパーツそれぞれが表す意味の組み合わせである」という概念に基付いています。そして「これらのパーツの中から元のデータをよく表すパーツ群・組み合わせを導き出す」=「特徴抽出を行う」ことが、まさにConvolutional Neural Netの基礎です。

 Convolutional Neural Netは主に下記の二つのフェーズを繰り返すことにより特徴抽出を行います。

  1. Convolutional層
  2. Pooling層

 1のConvolutional層は、下記の図のように画像から一定の大きさのパッチ(フィルター)を形成し、これらスライドさせてパッチごとに複数の特徴を抽出していくような処理のことです。


Convolutional層(64×64の画像上で2×2のパッチを2pixelずつ滑らせ、各パッチから5つの特徴量を取り出す)

 その後2のPooling層で、1で得られた周辺の特徴量をまとめ上げ、新たな特徴量として再設計することで次元圧縮を行い計算量を削減させています。


Pooling層(Convolutional層の次の処理。2×2の特徴量をまとめる)

 これらの処理を何度も繰り返し、特徴を抽出し、得られた全特徴を用いて多層のニューラルネットやSVM(Support Vector Machine)を用いて予測を行うことになります。この一連の特徴抽出の過程がConvolutional Neural Netです。

 入力に近い層ではエッジや線などの単純なパーツが抽出され、それらがPoolingとConvolutional層を繰り返すことで特徴同士がまとめ上げられ、顔や物などの複雑で抽象的な特徴量が出来上がることになるわけです。

リクルートグループにおけるDeep Learning活用例

 リクルートグループでは、データ解析を2010年から本格的に推進してきました。しかし、これまで盛んに行われてきたデータ解析といえば、データベースに格納できるようなきれいなデータ(=構造化データ)を利用した施策が大半を占めていました。

 構造化データの例としては、カスタマーのデモグラフィックな情報、「いつ、誰が、どのアイテムを見たか」の行動履歴データ、値段や商品説明などのアイテム情報などが挙げられます。しかしながら、これらのデータはリクルートグループ内に存在するデータのほんの一部でしかありません。リクルートグループには、多種多様なメディア・サービスが存在し、さらに元は紙媒体から始まったメディアも多いため、膨大なテキストデータ、画像データが数多く存在しているからです。

 一方で、これらの、ユーザーに与える情報量が多い割に機械的な解釈が難しいデータ(=非構造データ)は、活用されないままハードディスクの隅に漫然と蓄積されている状態でした。この非構造データに脚光を当て、施策に結び付けるという意味でDeep Learningはまさに画期的な手法であり、その原動力となっていったのです。

 リクルートグループにおける画像データとDeep Learningの活用の第一弾は、リクルートライフスタイルが提供する「ホットペッパービューティ」のネイルデザインの類似画像判別である「似ているデザインから探す機能」、カラー抽出の手法である「カラーから探す機能」でした。

 その後、同じくリクルートライフスタイル提供のキュレーションメディアである「ギャザリー」の内部でアダルト、グロテスク画像の校閲機能などに実装され、現在も数多くの案件が並行で進んでいる状態であり、リクルートグループ内部で積極的に活用されるようになりつつあります。

 これらは、主に画像のラベル付けなど、人が本来行ってきた作業の「代替」の性質を持っており、これまでのレコメンデーションによるアクション数改善といった施策と性質が大きく異なっていることが大きな特徴です。この点でリクルート内において新たなデータ活用の道を切り開くことになった火付け役といってもよいでしょう。

 これらの施策の詳細に関しては連載第3回で取り上げます。

Copyright © ITmedia, Inc. All Rights Reserved.

       | 次のページへ
ページトップに戻る