Recruit Data Blog

  • はてなブックマーク

目次

はじめに

こんにちは。データ推進室の翁、林です。 今回はイタリアのバーリで開催された RecSys 2024 の参加報告をしたいと思います。

本記事は、データ推進室 Advent Calendar 2024 13日目の記事です

RecSys 2024開催概要

RecSys (The ACM Conference on Recommender Systems) は、米国計算機学会 (ACM) が主催する推薦システムに関する学会で、この分野で最も主要な国際会議の1つに挙げられます。 分野の性質上、アカデミアの研究者のみならず、アメリカのビックテックをはじめとする企業の研究者やエンジニアも多く参加し、 推薦システムの様々なトピックについて発表・議論がなされます。

今年はイタリアのバーリで 10/14-18 の5日間の日程で開催され、現地参加者は900名を超えました。

過去3年間の参加者の推移

論文採択率はFull Paper/Short Paperともに約 22% と、難関会議であることが伺えます。一方で Industry Track の採択率は 47% と比較的高く、提出数も Research Paper に比べて少ないため、比較的発表の機会は得られやすいと感じました。

トラックごとの採択率

発表のカテゴリとしては Large Language Models, Optimisation and Evaluation, Sequential Recommendation の3つのセッションの発表数が特に多かった印象です。 特に Sequential Recommendation や類似のセッションではショート動画や音楽の推薦に関するトピックが多く、近年の YouTube Shorts や TikTok などの盛り上がりといった世相が反映されている印象を抱きました。

本会議では採択論文のオーラル発表に加えて以下の基調講演が行われました:

  • Toward Human-Centered Explainable AI (講演者: Mark Riedl)
  • A Collectivist Vision of AI: Collaborative Learning, Statistical Incentives, and Social Welfare (講演者: Michael I. Jordan)
  • The Power of AI in Recommender and Search Systems: An Industry Perspective Through the Lens of Spotify (講演者: Mounia Lalmas)

3つ目の基調講演は Spotify の推薦システムで実際に使われた技術を、 RecSys や The Web Conference などで発表された論文を交えながらラップアップした発表で、実務に活せる示唆が多く得られる講演でした。

また、今回は初日と最終日がチュートリアル及びワークショップ、中3日間が本会議といった日程でした。本会議はペトゥルッツェッリ劇場という絢爛なオペラハウスで行われ、通常の学会ではなかなか味わえない独特な雰囲気に包まれていました。

会場のペトゥルッツェッリ劇場

印象に残った発表

以下では執筆者の印象に残った発表をいくつか紹介します。以下では断りがない限り、図は元論文から引用したものとします。

Transformers Meet ACT-R: Repeat-Aware and Sequential Listening Session Recommendation

論文リンク: https://dl.acm.org/doi/abs/10.1145/3640457.3688139

Deezer という音楽ストリーミングサービスを提供する企業による論文で、本論文はベストペーパー賞の最終候補に選ばれました。 本論文では、音楽ストリーミングサービスにおける「次のセッションに聴くアイテムを予測する問題 (Next Basket Recommendation) 」を扱います。 読者の皆さんも恐らく身に覚えがあるかもしれませんが、ユーザが音楽を聴く際、同じ曲を繰り返し聴くパターンが頻繁に見られます。 本論文では、このようなドメイン特有の繰り返しパターンを明示的にモデルに組み込み、予測精度を向上させる手法を提案しています。

手法解説

音楽ストリーミングサービスにおけるユーザの行動履歴は、セッションの系列と各セッション内で聴いた曲の系列という階層構造で捉えることができます。 本手法では、以下の2つの工夫により、ユーザの嗜好を反映した埋め込み表現を計算することを提案しています:

  • ACT-R を活用した、繰り返し行動のモデリングによるセッション埋め込み表現の計算
  • 過去のセッション埋め込みの集約による、ユーザ埋め込み表現の計算
    • ユーザの「長期的嗜好」と「短期的嗜好」を表す埋め込み表現をそれぞれ計算し、統合
    • 特に短期的嗜好の埋め込み表現の計算には Transformer 機構を活用
問題設定
ACT-R

ACT-R (Adaptive Control of Thought-Rational) は、人間の認知プロセスをモデル化するためのアーキテクチャであり、本論文では特に記憶の活性化や忘却のダイナミクスを記述する宣言的モジュール (declarative module) のフレームワークを活用します。 以下では ACT-R のフレームワークに則ってユーザが音楽を選択する手続きをモデリングします。

ユーザ uu がある曲 vVv \in \mathcal{V} を選んで再生することは、以下の3つのコンポーネントの和がある閾値を超えて"活性化"することに相当するとモデル化します。

  • Base-level component BLv(u)\mathrm{BL}_{v}^{(u)} : このコンポーネントは、頻繁に聴かれた曲や最近聴かれた曲の活性度合いを表します。 ある曲を直近聴いているほど、また多く聴いているほど同一の曲を再度聴く傾向にあることを定量的に表した値になります。 ある時刻 treft_{\mathrm{ref}} 時点での Base-level component の値 BLv(u)\mathrm{BL}_{v}^{(u)} は、前の時刻までにユーザ uu が曲 vvkk 回目に 聴いた時刻の列 {tk(uv)k=1,2,}\left\{ t_{k}^{(uv)} \mid k=1, 2,\ldots \right\} とそのセッション内で既に聴いている曲の集合 s(u)={v1,,vK}s^{(u)} = \left\{ v_1, \ldots, v_K \right\} を用いて

BLv(u)=softmaxs(u)(k(treftk(uv))α)=k(treftk(uv))αvs(u)exp(k(treftk(uv))α) \mathrm{BL}_{v}^{(u)} = \mathrm{softmax}_{s^{(u)}}\left(\sum_{k}\left(t_{\mathrm{ref}}-t_{k}^{(u v)}\right)^{-\alpha}\right) = \frac{\sum_{k}\left(t_{\mathrm{ref}}-t_{k}^{(u v)}\right)^{-\alpha}}{ \sum_{v' \in s^{(u)}} \exp\left( \sum_{k}\left(t_{\mathrm{ref}}-t_{k}^{(u v')}\right)^{-\alpha} \right) } と表されます。Softmax は、セッション内の他の曲との相対的な活性度を計算するために用いられます。

  • Spreading component SPRv(u)\mathrm{SPR}_{v}^{(u)}: このコンポーネントは共起しやすい曲による活性化の寄与を表します。曲同士の共起回数を表す行列 F\mathbf{F} を相関行列に変換したものを C\mathbf{C} と置きます。このとき、曲 vv の Spreading component は

SPRv(u)=vs(u),vvCvv \mathrm{SPR}_{v}^{(u)}=\sum_{v^{\prime} \in s^{(u)}, v^{\prime} \neq v} \mathbf{C}_{v v^{\prime}}

と表されます。これはセッション内で聞かれた別の曲の相関度合いを足し合わせたような値となっています。

  • Partial matching component Pv(u)\mathrm{P}_{v}^{(u)} : このコンポーネントは、同一セッション内で聴いた別の曲のうち、音楽的特徴が似ている曲による活性化の寄与を表します。ここでは曲同士の類似度はそれぞれの埋め込み表現の内積により評価します。曲 vv の Partial matching component は

Pv(u)=vs(u),vvmvmv \mathrm{P}_{v}^{(u)}=\sum_{v^{\prime} \in s^{(u)}, v^{\prime} \neq v} \mathbf{m}_{v}^{\top} \mathbf{m}_{v^{\prime}}

と表すことが出来ます。

これらのコンポーネントを活用して ACT-R を推薦システムに取り入れる手法自体は先行研究でも提案されています。 本研究で用いている各コンポーネントも、それらの研究を引用・拡張したものです。

セッションの埋め込み表現の計算

上述の3種類のコンポーネントを用いて、セッションの埋め込み表現を計算します。 具体的には、セッション内で聴いた曲の埋め込み表現に、各コンポーネントによる活性度を重みとして適用し、それらの重み付き平均を取ることでセッション全体の埋め込みを求めます。

以下では曲 vv に対応する埋め込みを mv\mathbf{m}_v と表記します。 ACT-R の各コンポーネントの重み付け和を取ると wvw_v を用いてあるユーザ uu のあるセッション s(u)s^{(u)} のセッション埋め込みは次式で計算されます:

ms(u)=vs(u)wvmv. \mathbf{m}_{s^{(u)}} = \sum_{v \in s^{(u)}} w_{v} \mathbf{m}_{v}.

ここで、wvw_v は曲 vv に対応する Attention weight であり、ACT-R の3つのコンポーネントによって決定されます。wvw_v は次の式で与えられます:

wv=wBLBLv(u)+wSPRSPRv(u)+wPPv(u). w_{v} = w_{\mathrm{BL}} \mathrm{BL}^{(u)}_{v} + w_{\mathrm{SPR}} \mathrm{SPR}^{(u)}_{v} + w_{\mathrm{P}} \mathrm{P}^{(u)}_{v}.

なお、wBL,wSPR,wPw_\mathrm{BL}, w_{\mathrm{SPR}}, w_{\mathrm{P}} はユーザや入力に依存しないグローバルなパラメータであり、モデルの学習時に最適化されます。

ユーザの埋め込み表現の計算

ユーザの埋め込み表現は、長期の嗜好を表す mulong\mathbf{m}^{\mathrm{long}}_{u} と短期の嗜好を表す mushort\mathbf{m}^{\mathrm{short}}_{u} に分解します。 これらを組み合わせることで、ユーザの埋め込み表現を次式で定義します:

mu=βmushort+(1β)mulong \mathbf{m}_{u} = \beta \mathbf{m}^{\mathrm{short}}_{u} + (1 - \beta) \mathbf{m}^{\mathrm{long}}_{u}

ここで、β[0,1]\beta \in \left[0, 1\right] は学習されるスカラー値で、短期の嗜好と長期の嗜好の重要度を調整します。

長期の埋め込み mulong\mathbf{m}^{\mathrm{long}}_{u} は Base-level component の値に基づいて計算します。 具体的には、ユーザ uu の過去のセッションで聞かれた曲のうち、Base-level component の値が上位20件に含まれる曲を抽出し、それらの曲の埋め込み表現を重み付けして和を取ることで計算されます:

mulong=vTopBL(u)BLv(u)mv. \mathbf{m}^{\mathrm{long}}_{u} = \sum_{v \in \mathrm{Top}-\mathrm{BL}^{(u)}} \mathrm{BL}^{(u)}_{v} \mathbf{m}_{v}.

短期の埋め込み mushort\mathbf{m}^{\mathrm{short}}_{u} は、Transformerアーキテクチャを使用して計算されます。 計算ステップは以下の通りとなります:

  1. セッション埋め込みの準備
    • 過去の各セッション S(u)=(s1(u),,sL(u))S^{(u)} = \left( s^{(u)}_{1}, \ldots, s^{(u)}_{L} \right) の埋め込み ES(u)=[ms1(u),,msL(u)]\mathbf{E}_{S^{(u)}} = \left[ \mathbf{m}_{s^{(u)}_{1}}, \ldots, \mathbf{m}_{s^{(u)}_{L}} \right]^\top を計算します
  2. Positional Encoding の適用
    • ES(u)\mathbf{E}_{S^{(u)}} に positional encoding P=[p1,,pL]\mathbf{P} = \left[ \mathbf{p}_1, \ldots, \mathbf{p}_{L} \right] を足した行列 X(0)\mathbf{X}^{(0)} を用意します。例として ll 行目の要素は xl(0)=msl(u)+pl\mathbf{x}^{(0)}_{l} = \mathbf{m}_{s^{(u)}_{l}} + \mathbf{p}_{l} となります
  3. Self-Attention Block の適用
    • X(0)\mathbf{X}^{(0)} に対して Self-attention Block を BB 回適用します
  4. 短期の埋め込み表現の抽出
    • 最終的に得られる行列 X(B)\mathbf{X}^{(B)} の第 LL 行が短期の埋め込み表現に対応します:

mushort=XL(B). \mathbf{m}^{\mathrm{short}}_{u} = \mathbf{X}^{(B)}_{L}.

以上のことをまとめて計算の流れを表すと以下の図のようになります。

モデルの全体像
学習方法

モデルの学習には以下の損失関数を使用します:

L(Θ)=λLsong(Θ)+(1λ)Lsession(Θ). \mathcal{L}(\Theta) = \lambda \mathcal{L}^{\mathrm{song}}(\Theta) + (1 - \lambda) \mathcal{L}^{\mathrm{session}}(\Theta).

第一項は Bayesian Personalized Ranking loss を用いたペアワイズな損失であり、セッションごとにランダムにサンプリングした負例の集合 ol+1(u)Vsl+1(u)o^{(u)}_{l+1} \subset \mathcal{V} \setminus s^{(u)}_{l+1} を用いて

Lsong(Θ)=S(u)Sl=1L1vsl+1(u),vol+1(u)ln(1+e(mu,lmvmu,lmv)) \mathcal{L}^{\mathrm{song}}(\Theta) = \sum_{S^{(u)} \in \mathcal{S}} \sum_{l=1}^{L-1} \sum_{v \in s^{(u)}_{l+1}, v' \in o^{(u)}_{l+1}} \ln \left( 1 + e^{-(\mathbf{m}^\top_{u, l}\mathbf{m}_{v} - \mathbf{m}^{\top}_{u,l}\mathbf{m}_{v'})} \right)

と表されます。ここで、mu,l\mathbf{m}_{u, l} はユーザ uull 番目以前までのセッションの情報を用いて提案手法によって計算される (ll 番目のセッションの推論時に使用される) ユーザの埋め込み表現です。 第二項はセッションの埋め込みに関する損失関数で、

Lsession(Θ)=S(u)Sl=1L1(1mu,lmsl+1(u)) \mathcal{L}^{\mathrm{session}}(\Theta) = \sum_{S^{(u)} \in \mathcal{S}} \sum_{l=1}^{L-1} \left(1 - \mathbf{m}^\top_{u, l}\mathbf{m}_{s^{(u)}_{l+1}}\right)

と表されます。この損失は l+1l+1 番目のセッションの埋め込み表現がその前の時点までのユーザの埋め込み表現と内積の意味で近いことを要請する損失関数となっています。

実験結果

数値実験は Last.fm という先行研究で作成されたパブリックデータセットと、今回新たに Deezer 上の行動ログから作成されたデータセットの2種類を用いて評価が行われました。

提案手法は、Last.fm と Deezer のデータセットを用いた数値実験で、従来のモデルと比較して、12種類の NDCG と Recall に関する指標のうち10個で最も良い結果が得られました。 特に、繰り返しに焦点を当てた指標である NDCGRep\mathrm{NDCG}^{\mathrm{Rep}} とまだ聴いたことのない新しい曲を推薦する指標である NDCGExp\mathrm{NDCG}^{\mathrm{Exp}} を評価したところ、提案手法が両方の指標を最もバランス良く改善していることが確認出来ました。 これは、提案手法が ACT-R を用いることで、ユーザの過去のセッションから繰り返しパターンを効果的に学習しつつ、また同時にユーザの音楽の好みを的確に捉え、探索を促進する能力も高いことを示唆しています。

数値実験結果

感想

本論文ではユーザが音楽を繰り返し再生するという素朴な着眼点からスタートし、ACT-R や Transformer を用いてユーザの埋め込み表現を非常に自然な形で導出している点が大変面白く感じました。 普段の業務で扱うドメインとは異なる題材ではあったものの、アイテム選択のプロセスに着目し、埋め込み表現の重み付け和の計算方法を工夫する点は他のドメインにも活用出来そうなアイディアだと思いました。

Towards Empathetic Conversational Recommender Systems

論文リンク: https://dl.acm.org/doi/10.1145/3640457.3688133

本論文は、会話型推薦システム(Conversational Recommender Systems: CRS)に共感の概念を組み込む新たな手法を提案しています。今回の Best Full Paper 賞を受賞した論文でした。

従来の会話型推薦システムでは、データセット内の標準的なアイテムの選択や応答が最適なものと仮定して学習・評価がなされていました。 しかし、従来のCRSでは、標準的な応答がユーザの真のニーズを理解していないと捉えられ、ネガティブな印象を与える場合があります。 このような課題に対して、本研究では従来の会話型推薦システムにユーザに共感する機構を組み込んだ Empathetic Conversational Recommender Systems (ECR) を提案しました。

通常のCRSとECRの比較

会話型推薦システム

CRS では、各時刻に前の時刻までの会話ログ Dt1={ukr,uku}k=1t1D_{t-1} = \left\{u^r_k, u^u_k \right\}_{k=1}^{t-1} が与えられるので、会話ログに基づいて推薦アイテム ItI_t とそれに伴うメッセージ utru^r_t を返却する問題を考えます。ここで、uru^r_* は推薦システム (recommender) による発話、uuu^u_* はユーザによる発話を表すものとします。また、簡単のため会話ログを単語の列として保持したものを W={wq}q=1nwW = \left\{ w_q \right\}_{q=1}^{n_w} と表記しておきます。 また、今回扱う推薦システムでは、会話中に現れる entity (タイトル、キャラクター、監督 etc.) に関する知識を活用するため、ナレッジグラフ G=(E,L)\mathcal{G} = \left( \mathcal{E}, \mathcal{L} \right) を別途与えます。2つの頂点 eh,etEe_h, e_t \in \mathcal{E} を結ぶ辺 lLl \in \mathcal{L} はそれらの要素の関係を表します。 例えば ehe_h が映画のタイトル、ete_t が監督名、ll が監督といった具合です。

ナレッジグラフから GNN などを用いて得られる各 entity の埋め込み表現を ei\mathbf{e}_i と表記します。 以降、会話ログ中に出現した entity El={eq}q=1neE_l = \left\{ e_q \right\}_{q=1}^{n_e} を local entity、local entity と共起する、ナレッジグラフ上の entity を global entity と呼ぶことにします。

対話ログとナレッジグラフを始めとする外部知識を統一的に扱うフレームワークとして UniCRS が先行研究で提案されており、本研究もこのフレームワークをバックボーンとして使用しています。

プロンプトエンジニアリングで出力を作る上で必要な前提条件をプロンプトの最初に明示するように、UniCRS では、推薦タスクを解く上で必要な"知識"とタスク固有の情報を表すトークン (task-specific soft token) を会話文の前に配置することで知識の注入を行っています。これらをまとめて prompt tokens と呼び、以下に示すように元の会話ログの単語列に prompt tokens を先頭に追加したものをプロンプトとして使用します:

W=w1,,wnw p1,,pnPprompt tokens,w1,,wnwword tokens. W = w_1, \ldots, w_{n_w} \rightarrow \underbrace{p_1, \ldots, p_{n_P}}_{\text{prompt tokens}}, \underbrace{w_1, \ldots, w_{n_w}}_{\text{word tokens}}.

prompt tokens は単語 id のような離散的な情報ではなく、タスク固有の埋め込みベクトルとして設計され、学習可能なパラメータとして最適化されます。 prompt tokens の役割は、対話文脈に感情や知識情報を統合し、PLM が適切な応答を生成するためのガイドとして機能します。

UniCRS は主に以下の3つのモジュールから構成されます:

Semantic fusion module : 一般に LLM の Encoder で使用される単語の埋め込み空間とナレッジグラフから得られる entity の埋め込み空間は異なります。このモジュールでは会話ログに現れる単語の埋め込み表現とナレッジグラフに現れる entity の埋め込み表現を同一の空間で扱えるように変換を行います。具体的には、ある (学習可能な) 変換行列 PP を用いて、会話中に現れた単語列 WW と local entity の埋め込み表現 ElE_l を同一の空間に変換します:

A=WPEl,W~=W+ElA,E~l=El+WA.\begin{align*}A &= W^\top P E_l, \\ \tilde{W} &= W + E_{l}A, \\ \tilde{E}_l &= E_l + WA^\top.\end{align*}

Response generation module : このモジュールは学習済み言語モデル ( Pre-trained language model : 以下 PLM) を用いて応答 utru^r_t を生成します。 ただし、推薦するアイテムの名称は [MASK] で埋めておき、後続のモジュールで実際のアイテムの名称に置換します。このモジュールで使用するプロンプトは以下のようになります:

Cgenr=[W~;Sgen;W]. C^r_{gen} = \left[ \tilde{W}; \mathbf{S}_{gen}; W \right].

Sgen\mathbf{S}_{gen} はベクトルで表された文生成用の task-specific soft token で、学習時に最適化されるパラメータです。 元の単語列 WW と変換された W~\tilde{W} を両方プロンプトに含めるのがややトリッキーに感じますが、学習や生成文を安定させるために両方入れるのが良いものと思われます。

Item recommendation module : このモジュールでは会話に既に現れた entity、これまでの会話ログ、上段で生成した応答を用いて推薦するアイテム ItI_t を生成します。ここで使用するプロンプトは以下で与えられます:

Crec=[E~l;Srec;D;utr]. C_{rec} = \left[ \tilde{E}_l; \mathbf{S}_{rec}; D; u^r_{t} \right].

提案手法

UniCRS のフレームワークに則った上で、大まかな方針としては prompt token に外部知識に加えてユーザの感情に関する情報を埋め込むことで、empathetic な生成を実現することを目指します。

提案手法は3つのパートから成ります:

  • Empathetic Data Enlargement
  • Emotion-aware Item Recommendation
  • Emotion-aligned Response Generation

Empathetic Data Enlargement

このパートでは既存のデータセットにユーザの感情の情報の付与を行います。

まずは人間同士の映画を推薦する会話を 10,000 件収録した ReDial データセットに対し、各発言に対して感情ラベルの付与を行います。ラベル付与はまず 5,082 個の発話を抽出し、GPT-3.5-turbo を用いてラベル付けを行います。この際、感情ラベルは"like" “curious”, “happy”, “grateful”, “negative”, “neutral”, “nostalgia”, “agreement”, “surprise” の9種類であり、各発言には最大2つの感情ラベルが付与されるよう設計されています。 次に GPT-2 をこのデータセット上でファインチューニングを行いました。ファインチューニング後のモデルを用いてラベル付けの結果を評価すると Recall@2 で 87.75% となりました。 最終的にファインチューニングされた GPT-2 を感情分類モデルとして用い、データセット全体の発言に感情ラベルを付与しました。 また、この感情分類モデルを用いることで、任意のユーザの発言 ukuu^u_k に対して各感情ラベル Fuku={fj}j=1Fuku\mathcal{F}_{u^u_k} = \left\{ f_j \right\}_{j=1}^{\left| \mathcal{F}_{u^u_k} \right|} とそれぞれに対する確率値 Puku={pi}j=1Puku\mathcal{P}_{u^u_k} = \left\{p_i\right\}_{j=1}^{\left| \mathcal{P}_{u^u_k} \right|} が得られます。

次に、感情的な応答生成が可能になるように、映画のレビューが格納されたデータセットである IMDb から高評価のレビューを抽出し、ナレッジグラフとの紐づけを行いました。具体的には IMDb から満点が付けられたレビューを抽出し、レビュー文に含まれる各 entity について、その entity を要素に持つトリプレットをナレッジグラフから抽出しました。

Emotion-aware Item Recommendation

このパートでは上段で用意した感情データを推薦アイテムの選択に活用します。

いま、過去の会話の各発話に対してユーザの感情がラベル付けされているため、会話に現れた local entity に対しても感情ラベルを付与することが出来ます。ある local entity eje_j に対するユーザの感情埋め込み表現は

Fej=i=1Fejpiv(fi) \mathcal{F}_{e_j} = \sum_{i=1}^{\left| \mathcal{F}_{e_j} \right|} p_i \cdot v(f_i)

と表すことが出来ます。ここで、v(fi)v(f_i) は感情ラベル fif_i の埋め込み表現を表します。local entity の感情を考慮した埋め込み表現は以下のように表すことが出来ます:

e~j=[ej;Fej]Wt+b. \tilde{\mathbf{e}}'_j = \left[\mathbf{e}'_j; \mathcal{F}_{e_j} \right] W^\top_{t} + \mathbf{b}.

最終的に local entity の埋め込み表現を並べた行列 E~l=[e~1,,e~ne]\tilde{E}'_{l} = \left[\tilde{\mathbf{e}}'_1, \ldots, \tilde{\mathbf{e}}'_{n_e} \right] が得られます。

次に、global entity を活用します。たとえば、ユーザが好きな映画が特定のジャンルに集中している場合、同ジャンルの他の entity との共起関係を抽出します。この関係性を用いることで、対話履歴に明示的に現れない潜在的な entity を埋め込み表現で考慮します。 具体的には各 local entity eje_j に対して、共起確率の高い entity の集合 Eej\mathcal{E}_{e_j} を抽出し、共起確率を用いて埋め込み表現の加重平均を算出します: Eej=i=1EejeiP(eiej). \mathcal{E}_{e_j} = \sum_{i=1}^{\left| \mathcal{E}_{e_j} \right|} \mathbf{e}_{i} \cdot P\left( e_i \mid e_j \right). local entity と同様に感情ベクトル Fej\mathcal{F}_{e_j} を統合した埋め込み表現 Eej\mathcal{E}'_{e_j} 及びそれらを並べた行列 E~g\tilde{E}'_gを得ます。

最終的に上記手続きで得られた entity の埋め込み表現と soft token、会話ログ、推薦システムの発話を並べたプロンプトが得られます:

Crec=[E~l;E~g;Srec;W;utr]. C'_{rec} = \left[\tilde{E}'_l; \tilde{E}'_g; \mathbf{S}_{rec}; W; u^r_t\right].

途中現れた変換行列や soft token Srec\mathbf{S}_{rec} は推薦アイテムに対する正解ラベルを用いて教師あり学習によって最適化されます。

Emotion-aligned Response Generation

PLM がハルシネーションを起こすことはよく知られていますが、ECRでは応答生成部分でもナレッジグラフから抽出した情報をプロンプトに含めることでハルシネーションを防いでいます。 このモジュールでは一時的生成した推薦システムの応答 utru^r_t と推薦アイテム iri_r から最終的な応答を生成します。

過去の会話ログから抽出した entity ErE_r とナレッジグラフから抽出した関連するトリプレット Tr\mathcal{T}_r 及び推薦アイテム iri_r から以下のプロンプトを構成します:

Cgene=[SEr;STr;Sir;utr]. C^e_{gen} = \left[ S_{E_r}; S_{\mathcal{T}_r}; S_{i_r}; u^r_t \right].

SS_* はそれぞれ対応する entity の列を単語の列で表現したものとなります。

また、IMDb データセットは感情豊かな表現の補強に活用され、応答生成タスク用にプロンプトを変換し、 PLM の fine-tuning に利用しました。

実験結果

評価データセットは ReDial を使用しました。 このデータセットは推薦された映画に対して “like”, “dislike”, “not say” の3つのラベルが付与されています。 このラベルを用いて Recall@𝑛(𝑛=1, 10, 50)やRecall_True@𝑛(「like」フィードバックのみを基準とする精度)およびROC-AUCによる定量評価を実施しました。 また、定量評価に加えて応答生成の質を感情強度、感情的説得力、論理的説得力、情報量、生命感の5項目について 0-9 の 10 段階のスコアリングを人手評価と GPT-4-turbo の2種類で評価を行いました。

結果として、ECRは既存手法を全指標で上回り、感情を活用したアイテム推薦および応答生成の有効性が示されました。

定量評価の結果
定性評価の結果

また、実際の出力を見るとより如実に ECR の出力が感情を表す表現を多く使用していることが見て取れます。

出力結果の例

感想

昨今会話型推薦システムの盛り上がりが加速しつつありますが、チャットというフォーマットでやり取りが発生する以上、ユーザの感情を汲み取ることは必要不可欠に思われます。

データを用意する段階から出力の生成、結果の評価の各タスクで LLM を活用しており、手法単体に加え、問題提起から評価までの枠組み自体が今後の研究の参考になり得る、萌芽的ながらも非常に示唆的な論文だったと感じました。

Biased User History Synthesis for Personalized Long-Tail Item Recommendation

論文リンク: https://dl.acm.org/doi/10.1145/3640457.3688141

論文概要

背景
  • 推薦システムは過去のユーザとアイテムのインタラクション履歴(購入や視聴など)から学習するため、特に何も工夫をしないとインタラクションが少ないアイテム(テールアイテム)が過小評価され、推薦されにくい傾向にあります。
  • さらに、現状の推薦システムのデータを用いてモデル学習をしていくので、テールアイテムを推薦することの評価が低くなり、さらに推薦されにくくなるといった負のフィードバックループに陥ってしまいます。
アプローチ

上記問題に対して、ユーザのインタラクション履歴をそのまま利用するのではなく、インタラクションしたアイテム自体の人気度に応じてサンプリングを行い、合成インタラクション履歴を作成し、ユーザ特徴量として活用する Biased User History Synthesis という手法を提案しました。

結果

提案手法を Two-Tower ベースのレコメンドシステムに適用したところ以下の結果が得られました。

  • ヘッドアイテム(人気が高いアイテム)とテールアイテム両方の推薦精度が向上
  • 全体としても、NDCG@10指標において、MovieLens 1M で 29.9%、BookCrossing データセットで 93.4% の精度改善

以下から提案手法について詳しく見ていきます。

提案手法

まず提案手法の全体像を簡単に説明し、その後に各部分について説明していきます。

提案手法の全体像

提案手法は、以下の2 step からなります:

  • インタラクションが少ないアイテムを重要視して、ユーザの合成インタラクション履歴を作成するサンプリング部分
  • 合成インタラクション履歴から作成する合成ユーザ特徴量と、既存のユーザ特徴量を組み合わせて拡張されたユーザベクトルを作成する部分

上記の流れから提案手法を1つの関数と見なすと、大まかには以下のような input と output になります。

  • input: ユーザのインタラクション履歴(例: 閲覧履歴など)
  • output: ユーザベクトル

このような input/output であるため、元々インタラクション履歴をユーザ特徴量として利用している推薦システムにおいては、採用しているモデル構造に依存せずに組み込むことができます。

論文で取り上げられている例として、提案手法を Two-Tower ベースの Neural Network (以下 NN)に導入した際の概要図を以下に示します。

提案手法の概要図

全体像の説明は以上にして、提案手法の各ステップの説明を行っていきます。

Step 1(サンプリング部分)

ここは、ユーザのインタラクション履歴の中からインタラクションが少ないアイテムを多くサンプリングすることで、合成インタラクション履歴を作成する部分になります。このようにインタラクションが少ないアイテムを重要視することで、

まず、アイテム ii に対するサンプリング確率 pip_i を以下のように定義します:

pi=softmax(1Tdi),R>0T:温度パラメータ,N1di:アイテムiのインタラクション数\begin{align*}p_i &= \text{softmax}\Big (\frac{1}{T \cdot d_i} \Big),\\\mathbb{R}_{>0} &\ni T : \text{温度パラメータ},\\\mathbb{N}_{\geq 1} &\ni d_i : \text{アイテム} i \text{のインタラクション数}\end{align*}

did_i に入る具体的な数値としては、例えばユーザからの購入回数や閲覧数等が挙げられます。このようにサンプリング確率を定義すると、softmax 分布の定義により did_i が小さいとサンプリング確率 pip_i が大きくなります。つまり、インタラクションが小さいアイテムがサンプリングされやすくなります。 このように定められたサンプリング確率に従って、ユーザのインタラクション履歴 {item1,item2,,itemN}\{ item_1, item_2, \dots, item_N \} から指定した数になるまで復元抽出を行います。復元抽出の例を以下に示します。

合成インタラクション履歴の作成イメージ図

このようにして得られた合成インタラクション履歴 Hu\mathcal{H}^uの各アイテム iki_k の埋め込みベクトル yiky^{i_k} を並べたリストを Y:={yikikHu}Y := \{y^{i_k} | i_k \in \mathcal{H}^u \} と定義しておきます。 以上が Step1 のサンプリング部分の説明になります。

Step 2(拡張されたユーザベクトルの作成部分)

Step 1 で作成したリスト YY と通常のインタラクション履歴等から作成されるユーザ特徴量 xux_u を以下のように、NN を用いて拡張されたユーザ特徴量 xuAUGx_u^{AUG} を作成します。

xuAUG:=σ(Wconcat[xu,f(Y)]+b) x_u^{AUG} := \sigma(W \cdot \text{concat}[x_u, f(Y)] + b)

ここで、関数 ffYY をベクトルに変換する関数であり以下の3パターンがあります。

  • Mean

f:=Mean(Y) f:= \text{Mean}(Y)

  • User-Attention

ak=Attention(xu,yik)   ,yikYf:=Sum({akyikyikY}) \begin{align*}a_k &= \text{Attention}(x_u,y^{i_k}) \ \ \ , y^{i_k} \in Y \\ f &:= \text{Sum}(\{a_k y^{i_k} | y^{i_k} \in Y \})\end{align*}

ここで Attention は、 [Vaswani et al., 2017] で採用されている scaled-dot product の Attention メカニズムを採用しています。詳しくは参考論文をお読み下さい。

  • GRU

YSorted=SORT(Y)  (※インタラクションした時間に関してソート)f:=GRU(YSorted) \begin{align*}Y_{\text{Sorted}} &= \text{SORT}(Y) \ \ (\text{※インタラクションした時間に関してソート}) \\ f&:= \text{GRU}(Y_\text{Sorted}) \end{align*}

ここで GRU は [Cho et al., 2014] で提案されたモデルで、LSTM の計算を効率化したものです。GRU については参考論文をお読み下さい。

提案手法の説明は以上になります。

実験設定

データセット

実験で用いるデータセットとしては、MovieLens-1M と BookCrossing を用いています。ヘッドアイテムとテールアイテムに対する評価を行うため、それぞれのデータセットで次のように定義しています。

  • MovieLens-1M
    • インタラクション数が上位20%をヘッドアイテム、下位20%をテールアイテムとする
  • BookCrossing
    • 既存研究に従い、インタラクション数の上位 0.01% をヘッドアイテム、それ以外をテールアイテムとする

2つのデータセットの統計値を示した表が以下になります。

比較手法

次に、比較対象のモデルを紹介します。

  • Baseline モデルとしてはTwo-Tower ベースの NN を採用
  • その他の比較手法モデルとして NN ベースのモデルを10個選択しています。
評価指標
  • HR@10、NDCG@10を設定
  • 全アイテムに対する精度と、ヘッドアイテム、テールアイテムに絞った際の精度評価を行う

以上が実験設定の説明になります。

実験結果

MBUHSMean,MBUHSAtten,MMUHSGRUM^{BUHS}-Mean, M^{BUHS}-Atten, M^{MUHS}-GRU が提案手法を表し、Mean, Atten, GRU は提案手法 Step2 で説明した関数 ff のパターンを表しています。既存手法と比較すると、提案手法はヘッドアイテムとテールアイテム両方の推薦精度が大幅に向上したことがわかります。さらに、テストデータ全体としても MovieLens-1M で 29.9%、BookCrossing で 93.4% の精度改善をしています。

テールアイテムだけではなく、ヘッドアイテムに対する精度も改善したことに対して著者は「テールアイテムはヘッドアイテムよりユーザのユニークな興味を強く反映するため、テールアイテムを強調することは結果としてより強いパーソナライズになるのでは?」と考察しています。

また、Ablation Study として、温度パラメータとサンプリング数に関する感度分析を行っています。

温度パラメータ TR>0T \in \mathbb{R}_{>0} については、値を小さくすると推薦精度が良くなる傾向にありました。これは、テールアイテムに対するサンプリングを増やした方が精度が良くなることを示唆しています。 以降は筆者の考察になりますが、先程論文の著者が言及したように、テールアイテムに対するインタラクションの方がユーザの特徴量より強く表していることを支持する結果と言えるかもしれません。

サンプリング数については、サンプリング数が増えるほどヘッドアイテムに対する精度が向上することが確認できました。一方で、サンプリング数を増やしても劇的に精度が良くなるというわけではなかったようです。

感想

まず「ヘッドアイテムより、テールアイテムに対するインタラクションの方がユーザの特徴をよく表しているので、これを強調するようにモデリングを行った方がよいのでは?」という視点は個人的にとても勉強になり、今後のモデリングで役立ちそうだなと思いました。 また、アイテムの埋め込みベクトル表現さえ作成していれば提案手法は適用できるので、既存の推薦システムに組み込みやすくて良いなと感じました。 一方で、実運用する上ではユーザのインタラクション履歴(例: 閲覧履歴)をリアルタイムに使う API 構成だと、サンプリングする部分が増えるため、レイテンシーが増えないのかな?というのが気になりました。この懸念点は実際に提案手法を実装してみて、確認してみたいと思いました。

おわりに

今回の RecSys への参加を通じて、推薦システムにおける最新の技術動向やこの分野に従事している人の趣向を肌で感じることが出来ました。 LLMを活用した新しいアプローチの試みの勢いを感じる一方、Sequential Recommendation 等の実務にニーズに根ざした発表も多く、非常に多くのインスピレーションを得ることが出来ました。

今回の参加で得た知見をプロダクト開発に活かしつつ、また自社で得られた知見を推薦システムの分野に還元していきたい気持ちが強まりました。

翁 啓翔

データサイエンティスト

翁 啓翔

人材領域でのレコメンドシステムの機械学習周りを担当

林 大地

データサイエンティスト

林 大地

販促領域でのレコメンドシステムのロジック周りを担当