検索
連載

「Deep Learningをサービスに導入したい!」人が泣かないために知っておきたいこと機械学習活用プロジェクト大解剖(1)(2/2 ページ)

サイト内検索のランキングアルゴリズムに機械学習を活用した事例を通じて、Deep Learningをはじめとした機械学習の強みと限界を探る連載。

PC用表示 関連情報
Share
Tweet
LINE
Hatena
前のページへ |       

「検索精度改善にDeep Learningを使ってみたい!」その背景

Deep Learningに対する当時の認識

 本検索改善プロジェクトがスタートしたのは、2015年の4月からです。当時は「データサイエンティスト」という言葉がだんだんかれなくなり、「AI」よりも「ビッグデータ」という言葉の方をよく耳にした時期です。

 一方、「Deep Learning」「深層学習」という用語は、現在ほど一般の雑誌や新聞に登場することはありませんでしたが、分析業界では革新的・革命的な機械学習の手法として不動の地位を築いていました。特に画像認識の分野では、研究者たちの長年のノウハウの蓄積に基づいた既存手法をはるかに上回る成績を叩き出し続けていました。

 また、Deep Learningは「教師付き機械学習」(後述)の分野で圧倒的な優位性を示し続けて2〜3年は経過していて、CaffeやTheanoといったツールもそろい始めていました。

 こういった事情もあり、われわれは、とにかくDeep Learningを使ってみたくてたまらなかったのです。

検索基盤チームの当時の状況

 本プロジェクトの目標は「サイト内検索を改善すること」による「目に見える形でのサービス貢献」でした。検索の改善といっても、改善対象は幾つか考えられます。特に、「検索“精度”の改善」といったときに真っ先に思いつくのは「キーワードに対する再現率と適合率の改善」です。

※本連載の3回目に、その改善の話を紹介しますが、再現率と適合率については記事「ElasticsearchとKuromojiを使った形態素解析とN-Gramによる検索の適合率と再現率の向上」をご覧ください。

 一方で、キーワードを指定しない絞り込み条件だけの検索もかなりのボリュームがあり、「狙うなら大きいところ」と考え、「検索“精度”の改善」のために、「ランキングアルゴリズム全体の改善」を目標にしました。何よりも、ランキングアルゴリズム全体の改善に有効な「ランキング学習」は検索における機械学習の花形であるため、Deep Learningを使ってみるには最適でした。

検索における機械学習の花形「ランキング学習」とは

 検索の分野ではランキングアルゴリズムを機械学習によって最適化することを「ランキング学習(Learning To Rank)」と呼びます。ランキング学習には「教師つき機械学習」の手法を用いた方法が数多く提案されています。

そもそも「教師付き機械学習」とは? 検索の分野でどう生きるのか?

 「教師付き機械学習」とは、データに対する正解が与えられた状態で、データと正解の間の関係性を導出することを目的とした一連の手法を指します。教師付き機械学習といっても、その中には決定木ベースの方法やDeep Learningのようなニューラルネットワークベースの方法も含まれ、かなり多様です。

 教師付き機械学習には、データと正解の間の関係性を導出するために、下記の2つの側面があります。

  1. データと正解の間の関係性の間に“仮定”をおく
  2. その仮定の中で最適な関係性を探索する

 1.の“仮定”のことを「モデル」と呼びます。昨今の機械学習人気は、1.の仮定の自由度が増え、2.の最適な関係性を導出するための計算環境が整備されたことにより、より多くの場面でデータと正解の間の関係性が導出されるようになったことに起因します。

 データと正解の間の関係性を導出する動機には、大きく分けて「データと正解の関係性の解釈」「未知のデータからの正解の“予測”」の2種類があります。検索の分野では、カスタマーのクエリから、どのようなアイテムを求めているのかの“予測”が大きなテーマです。

 例えば、ECサイトで「衣服の購入実績が多い40代女性」が「ワンピース」で検索した際に、「洋服」の方が「少年漫画」よりも購入確率が高いと予測できたとしましょう。その際に、「洋服」を「少年漫画」よりも目立つ位置に表示させれば(一般に検索はランキング上位の結果は目立つ)、カスタマーのユーザビリティ向上が見込めます。

「RankSVM」(Support Vector Machine for Ranking)とは

 なお、ランキング学習の手法には「RankSVM」(Support Vector Machine for Ranking)というものがあり、「サポートベクターマシン」という機械学習の手法が使われています。この手法では、クエリに対して「2つのアイテムのうち、どちらがよりアイテム欲求が高いのか」の2値分類問題を解きます。この手法は当時のニューラルネットワークと比べて、【1】ライブラリが充実、【2】計算コストが低い、【3】学習後モデルの解釈が容易といった大きなメリットがあります。

 現に検索基盤チームも、Deep Learningを導入したプロジェクトの後に、RankSVMを用いた検索精度改善で、サービスの改善に成功しています。

Deep Learningを使うためにひねり出した採用理由

 読者の中には、ランキング学習や機械学習に明るい方はDeep Learningを用いた理由について「リスト学習させたかったんだろ?」「検索キーワードで分散表現を使いたかったんだろ?」など予想している人もいるかもしれません。残念ながら、どちらも外れです。将来的には挑戦してみたいテーマではありますが、そこに挑戦する根性が当時は足りませんでした。

 Deep Learningを使うためにひねり出した採用理由は以下の2つです。

  1. 「検索のたびに計算を行う必要があるアイテムごとの計算がどうしても必要な箇所」「事前に計算できる箇所」を、それぞれ上層のネットワークと下層のネットワークの形で分離し、全体としては“複雑なモデル”でも検索実行時の計算回数を減らし、レスポンスタイムの劣化を抑えた
  2. 検索対象のアイテムカテゴリ間に層の深い親子構造が存在し、その構造を表現するために多層ニューラルネットワークを用いた

 上記2つの理由は、一見悪くなさそうなので、これらの理由を主軸に置きましたが、「“複雑なモデル”が、そもそも必要なのか」「アイテムカテゴリの階層構造を、そのままの形で表現する必要はあるのか」という検証を何もせずに進めていたため、理由になっていません。

 一般的に、「複雑な方法」を導入する際の進め方として正しいやり方は下記の2つです。

  1. 単純で解釈が容易なモデルを、まず試す
  2. ログデータから「単純な方法」「複雑な方法」の間の成績を事前に比較する

 この進め方が望ましいことは気付いてはいましたが、とにかく個人的にDeep Learningが使いたかったので「単純な方法」を試さずに進めました。

 今では、Webのようなサンプルサイズが多く離散データが多い領域では、ただ数えるだけの「ナイーブベイズ」という単純な方法が、解釈容易性と導入の簡単さから非常に有益だと痛感しています。

実施意義の根拠が薄弱だと、大失敗しそうだが……

 このような“方法と目的が逆転したプロジェクト”は、実施意義の根拠が薄弱なことから、普通に考えたら大失敗しそうなものです。しかし結果的には、QueryRewriterによる多数のWebサービスで継続的な検索導線の改善につながりました。またDeep Learningの導入自体も、それなりの検索精度の改善につながりました。

 その理由は「既に開発・インフラ・運用のスペシャリストで構成されたチームがあった」ことに加え、「Deep Learningを本番投入するための準備・開発・思想などが検索精度の改善に有益だった」からです。

 次回は、本プロジェクトの“うまくいったこと”と“うまくいかなかったこと”を紹介し、それぞれの考察を行います。

筆者紹介

大杉 直也(おおすぎ なおや)

リクルートテクノロジーズ ITマネジメント統括部 テクノロジープラットフォーム部 APプロダクト開発グループ

理化学研究所脳科学総合研究センターでの研究生活を経て、2014年4月リクルートホールディングスに入社。リクルートテクノロジーズに配属。

対象は脳からWeb、自然科学からビジネスに変わったものの、データ分析に従事しているという点では一貫。

現在は、検索やレコメンドのアルゴリズムの開発・改善の他、産学連携に向けた活動に従事している。


筆者紹介

小田 充志(おだ あつし)

リクルートテクノロジーズ ITマネジメント統括部 テクノロジープラットフォーム部 APプロダクト開発グループ

SI企業でWebアプリケーションフレームワークなどの研究開発を経て、2014年9月リクルートテクノロジーズに入社。

現在は検索ユニットで、検索UX向上のための分析・ロジック開発・アーキテクチャ設計に従事している。


Copyright © ITmedia, Inc. All Rights Reserved.

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