ランク学習ってどこで使われてるの?

この記事はランク学習(Learning to Rank) Advent Calendar 2018 - Adventarの5本目の記事です。

この記事は何?

前回までの記事でランク学習とは何か、どうやって学習・評価するのかを紹介してきました。
この記事では、実際にランク学習がどこで使われているのか、実サービスや応用研究を紹介していきます。



検索サービス

それはそうって感じですが、様々な検索サービスの裏側でランク学習が使われています。

例えば、ECサイトでお馴染みのeBayですが、eBayの検索の裏側でもランク学習が動いているようです。
"The Architecture of eBay Search" SIGIR eCom, 2017から以下引用します。

Multi-stage raking is used. The final stage uses a forest of gradient boosted decision trees to perform the final ordering.
These trees (and lower levels too) draw from textural features of the document (such as term proximity), as well as features the user has supplied (such as price).

上の論文はランク学習の話に留まらず、EC検索の裏側では何が動いているのかを知る上でも非常に面白い論文です。


ランク学習分野は企業の研究が非常に多いですが、中でもMicrosoftはランク学習に関する研究をガンガン出しています。
というのも、MicrosoftはBingというweb検索エンジンを持っているので、ユーザー行動ログをガンガン使った面白い研究をできる環境が整っているからだと思います。
ちなみに、Bingから得られたデータセット(MSLR-WEB30k・MSLR-WEB10k)がMicrosoftから公開されており、多くの研究がこのデータセットで評価しています。

www.microsoft.com



Microsoftの面白い研究として、ユーザーの心拍数情報をランク学習の特徴量に組み込んで(は?)、検索結果を良くしようという話が出ていました。
"Improving Search Engines via Large-Scale Physiological Sensing", SIGIR 2017.

f:id:sz_dr:20181206194628p:plain:w500
上記論文から引用しました。心拍数情報を組み込むことで、検索結果がどの程度良くなったのかをNDCGでカテゴリ毎に評価しています。"Adult"カテゴリの改善が大きいのが非常にエモいですね。


最近の流行りとして、テキストだけでなく画像や音声といった入力の検索を提供している検索サービスもあります。

例えば、メルカリは画像を用いた商品検索に取り組んでいるようです。
tech.mercari.com

実は、入力が画像・出力が画像といったランキングモデルにおいても、ランク学習の考え方が使われています。
この記事では、"End-to-end Learning of Deep Visual Representations for Image Retrieval", IJCV 2017.を紹介します。

非常にざっくりした解説になりますが、Query画像・Relevant画像・Irrelevant画像の組を以下のようなネットワーク構造で学習します。
f:id:sz_dr:20181206201813p:plain:w500

気持ちとしては、Query画像とRelevant画像の距離が小さくなるように、Query画像とIrrelevant画像の距離が大きくなるように、以下の損失関数を用いて学習します。
f:id:sz_dr:20181206202308p:plain:w400

この損失関数*1は、まさにランク学習のペアワイズ損失関数の考え方です。



広告

広告はweb企業の収入源として非常に大きいので様々な研究がされていますが、ランク学習を広告のクリック率(CTR)の予測に応用した研究 "CTR Prediction for Contextual Advertising: Learning-to-Rank Approach", ADKDD 2013.があります。

この研究では以下の図のように、クリックされた広告はクリックされなかった広告よりも良い、という気持ちでランク学習を行なっています。
f:id:sz_dr:20181206203205p:plain:w400

各広告毎にランキングモデルでスコアを算出し、ユーザーがクリックしてくれそうな順番に広告を出すことができれば、結果として大きな収益に繋がる…という美味しい話です。



レコメンド

実はレコメンド分野でもランク学習はガンガン使われており、RecSysというレコメンドに関する国際会議でも、レコメンドにおけるランク学習という話題でtutorialが行われていました。

www.slideshare.net

…というのも、アイテムをユーザーにレコメンドする問題は、本質的にランキングの問題(ユーザーの好きそうなアイテム順に並べる)なので、ランク学習とはピッタリです。

レコメンドでランク学習を適用する際の学習データの作り方ですが、例えばユーザーからクリックされたアイテムのラベルを1・されなかったら0のようにラベル付けしたり、食べログのようにレーティング付けできるシステムならレーティングをそのままラベルに用いることも考えられます。


Netflixはレコメンドを非常に真面目に作っている(と私は思っている)企業なのですが、Netflixのtech blogでもランク学習についての言及がありました。
medium.com

This family of machine learning problems is known as “Learning to rank” and is central to application scenarios such as search engines or ad targeting. Note though that a crucial difference in the case of ranked recommendations is the importance of personalization: we do not expect a global notion of relevance, but rather look for ways of optimizing a personalized model.

レコメンドはパーソナライズがガッツリ効く話なので、ユーザー情報をどのようにモデルに組み込むかが非常に重要だと思われます。



まとめ

この記事ではランク学習が実際にどのように使われているのかのほんの一部を紹介しました。
検索サービスだけでなく、広告やレコメンドといった分野でもランク学習は使われており、アイデア次第で他にも様々な問題に適用できると思います。

*1:論文中では"ranking triplet loss"と呼んでいます。