コンテンツに移動
デベロッパー

AI によるランク付けで検索結果を改善する方法

2021年7月26日
https://storage.googleapis.com/gweb-cloudblog-publish/images/photo-1579407364450-481fe19dbfaa.max-900x900.jpeg
Google Cloud Japan Team

※この投稿は米国時間 2021 年 7 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。

すべての IT チームは、正しい情報をできるだけ早く従業員やベンダーに伝達したいと考えています。しかし、情報が増えるほど結果は例外なく陳腐化するため、必然的に情報伝達は難しいタスクになっていきます。複数の社内システムにばらばらに重要な情報が格納されていて、ツール間で検索機能が統一されておらず、普遍的なシステムも存在しません。そして、Google 社内でさえ Google のウェブ検索テクノロジーは使えません。なぜなら、Google 検索は完全に公開されたデータセット、大量のトラフィック、そしてアクティブな大勢のコンテンツ所有者を前提としているからです。

人によって目的やアクセスレベル、ニーズが異なるため、社内検索を適切に行うことは非常に困難です。

往々にしてこの果てしないタスクは、膨大な量の手作業が必要になるか、期待したほどの結果が出ずにユーザーをイライラさせるという残念な結果に終わります。

Google では、機械学習モデルを使って結果をランク付けするように内部検索を移行しました。これにより、ニーズが急激に変化したり新たにアクセスできる情報が追加されたりしても、従業員に最も関連の深いリソースが表示されやすくなりました。

突然の変化

Google の社内検索サイト「Moma」は、Google 社員が情報を得るための主要な手段です。社内サイト、技術ドキュメント、社員が共同編集しているファイルなど、数多くのデータソースを網羅しています。毎週 13 万人以上のユーザーが、業務を完了するためや Google の最新の状況を知るために、クエリを発行しています。

COVID-19(新型コロナウイルス感染症)と在宅勤務による環境の大規模かつ急速な変化に伴い、Google 社員向けに多くの新しいコンテンツやガイダンスがすみやかに作成されました。そうした資料は、全社員が簡単にアクセスしたり見つけたりできるようにする必要がありました。どうすれば確実に見つけられるようにできるでしょうか。

手動での微調整

検索でのランク付けに ML を採用する前は、さまざまなデータソースやシグナルに対して、文字どおり何百もの個別の重みや因子を用いてランク付け計算式を微調整していました。情報の新しいコーパスの追加や、検索エンジンに対する新しい用語の教育は常に可能でしたが、手間がかかる作業でした。一例として、同義語は複数のデータセットに依存していました。そのデータセットは、たとえば「Covid19」、「Covid」、「コロナウイルス」の検索結果として同じ関連するページが表示されるよう、手動で更新する必要がありました。

変更の注意深い策定と適用、検証、デプロイに人間による作業が必要になるため、新しいトピックの新しいコンテンツが上位に表示されるまでに時間がかかることがよくありました。加えて、ユーザーがどのようにクエリを記述するかによって検索結果が左右されることもありました。コンテンツに含まれる語のどれがキーワードに使用されるか、コンテンツ作成者にはわからないことがしばしばあるためです。特に、トレンドの移り変わりが速く、用語がリアルタイムで更新、拡張されていくような状況ではその傾向が顕著です。

https://storage.googleapis.com/gweb-cloudblog-publish/images/photo-1575477168529-54b1971b0b7b.max-1100x1100.jpeg

自動採点

Google では現在、多くのシグナルに基づいた結果の採点とランク付けに ML を使用しています。過去 4 週間における自分たちの使用を記録したログを使って継続的にトレーニングしているため、モデルの学習は速いペースで進んでいます。2018 年にはこのランク付け方法を統合しましたが、最近の検索パターンの変化にもしっかり対応してくれました。新たなニーズに対応する新しいコンテンツが利用可能になると、新しいパターンや相関関係を以前は手動で慎重にモデリングしなければなりませんでしたが、今はモデルが拾い上げます。これは、モデルの自動リリースや検証、測定、実験など、過去数年間の投資の成果です。これを受けて、デイリー ランキング モデルの公開が可能になりました。

トレーニング データの作成

トレーニング セットの作成は機械学習の応用に必須ですが、このモデルの場合はとても簡単です。

  • クエリとそれに対してクリックされた結果を記録した検索ログからトレーニング データを生成します。最初にシンプルなモデル機能のセットを選ぶことで、複雑さを抑え、堅牢なモデルにすることが可能です。クエリごとのページのクリック率や、TF-IDF のような単純なトピカリティ スコアが出発点となります。

  • ドキュメントのクリックには 1 のラベル、それ以外は 0 のラベルが付けられます。クリックにつながった検索インプレッションはすべて、ML モデルのトレーニング用の例となります。クエリの集計などは行いません。モデルは自発的に学習します。

  • トレーニング データを tensorflow_ranking のような ML ランク付けモデルにフィードします。

測定

基本的な動作を設定できたら、次に行うのはモデルのパフォーマンスの測定と改善です。ログからクエリを再生し、クリックされた結果が平均して上位に表示されたかどうかを測定するオフライン分析と、トラフィックの一部を別のランク付けモデルに振り分けて直接比較するライブ実験を組み合わせます。堅牢な検索品質分析が鍵となりますが、上位の結果は常にクリック数が多くなること(ポジション バイアス)や、すべてのクリックが適切とは限らないことを考慮に含めることも有効です。ユーザーがすぐに検索結果ページに戻ってきて別の結果をクリックした場合、そのページはユーザーの求めているものではなかったということです。

モデルの拡大

使用できるシグナルやページ属性が増えれば、ページの人気度や鮮度、コンテンツの種類、データソース、さらには役職などのユーザー属性を考慮した、より洗練されたモデルをトレーニングできます。構造化されたデータも強力な機能の構築に有用です。単語のエンベディングは、特に検索クエリの「ロングテール」において、人の手によるキュレーションへの依存度を減らしながら、手動で定義された同義語よりも優れた結果を出すことができます。

モデルのトレーニング、検証、デプロイを定期的に行い、機械学習を本番環境で実行することは簡単ではなく、ML に慣れていないチームにとってはかなりの試行錯誤を伴います。TFX に多くの手間のかかる作業を処理させることで、ベスト プラクティスを確実に適用できます。また、チームはインフラストラクチャではなくモデル パフォーマンスに集中できるようになります。

良い影響

ML を活用したアプローチにより、ランク付け計算式の微調整や、手動での最適化を行う必要がなくなり、チームの規模を比較的小さく抑えられるようになりました。使用状況のデータのみで運用でき、内部検索には人間の評価者を採用していません。

その結果、統計的なモデリングやクラスタリングの手法を用いて、ユーザーのニーズや新たな増加傾向のクエリパターンを検索ログからリアルタイムに特定することに注力できるようになりました。こうした分析情報をもとに、コンテンツ戦略に関するパートナー チームへのコンサルティングを全社的に行い、最も役に立つ回答を最も必要とする場所で Google 社員が得られるよう、チームに合わせたオーダーメイドの検索機能(Instant Answers)を提供しました。

たとえば、仮想マシンや在宅勤務用の IT 機器に対する需要の高騰(およびそれに伴う課題)にいち早く着目したことで、方針に影響を与え、コンテンツ制作を促進し、時事的なクエリによる検索に対して情報豊かなカスタムのプロモーションを通知することができました。その結果、Google 社員の 5 人中 4 人が、COVID-19、在宅勤務、最新の企業サービスなどに関する適切な情報を簡単に見つけると言っています。

お試しください

検索結果の改善に関心をお持ちの方のために、ここまで説明した内容を整理します。利用を開始するには、以下が必要となります。

  • 詳細なロギング、ランク付けの品質測定、統合された A/B テスト機能。これらはモデルのトレーニングとパフォーマンス評価の基礎となります。Apache Beam のようなフレームワークは、未加工のログを処理して有用なシグナルを生成するのに非常に有用です。

  • 使用状況のシグナルに基づく、Tensorflow Ranking で構築されたランク付けモデル。Elastic Search や Apache Solr などの多くのオープンソース検索システムでは、スコア付け関数を修正、拡張、オーバーライドできるため、既存のシステムに自分のモデルをプラグインすることが可能です。

  • TFX を用いたモデルのトレーニング、検証、デプロイのための本番環境パイプライン。

この投稿に技術的な分析情報と専門知識を提供してくれたシニア ソフトウェア エンジニアの Anton Krohmer に感謝します。


-Cloud デベロッパー アドボケイト Max Saltonstall

-プロダクト マネージャー Klaus Herrmann

投稿先