【AWS Summit Tokyo 2018】Gunosy 様ご登壇事例 ユーザー行動が成す力学系の実現とそれを用いた推薦システムを支える AWS アーキテクチャ レポート

こんにちは。データサイエンスチームの t2sy です。
この記事では AWS Summit Tokyo 2018 で講演されたセッション 【 Gunosy 様ご登壇事例】ユーザー行動が成す力学系の実現とそれを用いた推薦システムを支える AWS アーキテクチャ をレポートします。

セッション紹介と登壇者

【 Gunosy 様ご登壇事例】ユーザー行動が成す力学系の実現とそれを用いた推薦システムを支える AWS アーキテクチャ

株式会社Gunosy 開発本部データ分析部 機械学習エンジニア 米田 武

グノシーやニュースパスなどのプロダクトではユーザーの行動をリアルタイムに反映し、個々人に最適化された推薦システムを構築しています。本講演では、その背後の数理モデルである、「ユーザー行動が成す力学系」を実際のシステム上に実現するために弊社が構築した AWS アーキテクチャとデータレイク設計の勘所についてお話します。

引用元:AWS Summit Tokyo 2018 セッション一覧

ユーザー行動の数理モデル

スマートフォン向けニュース配信アプリのニュースパスでは、ユーザーにパーソナライズされたニュース推薦を実現しています。

推薦システムの開発時に、以下のようなニュース推薦特有の難しさがあったようです。

  • ニュースの価値は基本的に時間減衰する性質がある
  • 内容ベースの推薦のみだと表面的な言葉の一致度だけで推薦され質が担保されない

表面的な言葉の一致度だけでニュースを推薦した場合、次のような問題があります。
例えば、あるユーザーがスポーツチーム A のファンの場合、

  • A の試合結果のニュース
  • A の試合をある芸能人が観戦したというニュース

上記2つのニュースを同程度のスコアで推薦する可能性があります。

この場合、A の試合結果のニュースは興味を持たれそうですが A の試合をある芸能人が観戦したというニュースは興味が薄いかもしれません。

これらの課題を克服した数理モデルを実現し、それを支える AWS アーキテクチャとデータレイク設計のポイントのご紹介という内容でした。

読みたいニュースをユーザーの行動心理の点から考えた場合、以下の2つが重要とのことでした。

  • Local Popularity
  • 野次馬のダイナミクス

Local Popularity (局所話題性) は、例えば、あるユーザーが「機械学習」に興味があり勉強している場合、機械学習関連のコミュニティで話題になっている記事は知りたいだろうという考えに基づきます。また、野次馬のダイナミクスとは自分の周辺 (家・学校・職場・コミュニティなど) で何か起きた場合、知りたくなるというユーザーの行動心理を指します。

野次馬のダイナミクスを実現する数理モデルは、まず、ニュース記事を連続的なベクトル空間に埋め込み記事ベクトルとします。例えば、特徴空間上で本田圭佑に関する記事同士はユークリッド距離が近く、六本木での事件の記事は遠くなるように埋め込みます。
次に、ユーザーがクリックした直近 M 記事の重み付け平均を取りユーザーベクトルとします。記事ベクトル、ユーザーベクトルを使ってベクトル空間上で野次馬のダイナミクスを表現しています。また、記事ベクトル、ユーザーベクトルはユーザーが記事をクリックするごとに更新されます。

この数理モデルを実装することに加え、ビジネス要件としてリアルタイムに安定した配信ができるモデルとする必要がありました。

高精度・高速な推薦システムとそれを支えるアーキテクチャ

数理モデルを実現するだけでなく、ビジネス要件を満たした高精度・高速な推薦システムを実現するために 以下の AWS のサービスを使用し、ほぼサーバレスに実現しているとのことでした。

  • Amazon Kinesis Data Streams
  • AWS Lambda
  • Amazon DynamoDB
  • Amazon DynamoDB Accelerator(DAX)

記事ベクトルを取得するときに複数の Lambda が同じ記事を取得することが多かったため、DynamoDB 用インメモリキャッシュの Amazon DynamoDB Accelerator(DAX) を用いている点がポイントです。 DAX にデータがなければ、裏側で DynamoDB に問い合わせ DAX に乗せる処理が走ります。

行動モデルから高速な推薦へ

記事の鮮度・流行り度を記事ベクトルの周りの密度で表現し、密度が高い記事は流行り度が高いとして記事の推薦リストを生成しています。
しかし、密度計算は計算コストが高く、さらに社内ルールである 50msec or die も満たす必要があったとのことでした。
そこで、 Amazon EMR で計算された行列のデータを Amazon S3 に置き、各インスタンスのメモリに非同期でロードするなどの高速化の工夫を行うことで、 25msec/request を実現されたようです。

Hive MetaStore の活用

機械学習を行う Apache Spark や大規模な集計を行う Presto は、テーブルの定義と実際の S3 のロケーションの対応に関するメタデータを管理する Hive MetaStore を経由しデータにアクセスしています。この仕組みの利点は以下となります。

  • データの詳細を隠蔽してアクセスすることが可能
  • 各アプリケーションからほぼ共通のインターフェイスでアクセス可能
  • S3 側の負荷を気にする必要がない

まとめ

ニュース推薦の数理モデルについて、アカデミアでの研究論文は多くなかったためゼロから考えたというお話が印象的でした。また、データサイエンスだけでなく、機械学習エンジニアリングの視点からも学ぶ点が多いセッションでした。

スライドが公開されていますのでこちらも是非ご覧ください。

AWS移行支援キャンペーン

あなたにおすすめの記事