CCCMKホールディングス TECH LABの Tech Blog

TECH LABのエンジニアが技術情報を発信しています

ブログタイトル

RecSys2024 論文紹介③

こんにちは。データサイエンスグループの木下です。

今回はRecSys2024論文紹介シリーズの最後の記事になります。 最終回にふさわしく、今回紹介する論文はRecSys2024でベストペーパーに選ばれた Towards Empathetic Conversational Recommender Systems という論文になります。

概要

Conversational Recommender System(CRS)はベンチマークデータセットから学習して一般的な商品をレコメンドしていたため、一般的な商品に対して苦手意識を持っていることを見過ごしてしまったり、感情的に訴えることができなかった。

そこで、CRSに共感を取り入れることで、感情を取得したり表現したりすることができる、Empathetic Conversational Recommender(ECR)を作成した。

【キーワード】

ナレッジグラフ / LLM

ECRの例

事前知識:ナレッジグラフ

(この部分は、後に出てくるナレッジグラフに関する専門用語を先に紹介する目的で、私が追記しております。)

  • ノード:エンティティ

  • エッジ:エンティティ間の関係性

  • トリプル:(主語、関係性、目的語)の組

エンティティとは情報単位のことで、下の図でいうとフォレスト・ガンプ、トム・ハンクス、などが例に挙げられます。

トリプルとは、2つのノードとそれをつなぐエッジで1つのセットと考える概念で、 例えば{トム・ハンクス(ノード), 主演をした(エッジ), フォレスト・ガンプ(ノード)} というトリプルは、「トム・ハンクスはフォレスト・ガンプで主演をした」という意味を持ちます。

ナレッジグラフの例

では、論文紹介に戻ります。

手法

1.感情データの拡充

目的:既存データに不足している感情情報を補充する

1.1 GPT3.5-turboを使ってReDialの会話ごとに2件まで感情をラベリングする

※Redial:Recommender dialogの略。映画におけるCRS性能評価のためのデータセット

ラベルの例: 好き/好奇心/幸せ/ネガティブ/ノスタルジー/感謝/中立/同意/驚き

1.2 感情的な応答データの収集

外部リソース(IMDbのレビュー)から感情的なレビューを収集し、トレーニングデータセットを拡張

2 感情を考慮したアイテム推薦

2.1 ローカル※1エンティティの埋め込み表現作成

※1:ローカルとはReDial内の対象のdialogのこと

2.2 グローバル※2エンティティの埋め込み表現作成

※2:グローバルとは、対象外のdialogのこと

ローカルエンティティを選ぶ→それに紐づく感情を抽出→それに共起する感情が紐づいているグローバルエンティティを抽出→すべてのエンティティとそれに紐づく感情から埋め込み表現を作成し、すべて結合

といった内容なのですが(おそらく)、難解なので下記の図を私の方で作成しました。

埋め込み表現の作成方法

3.感情整合型応答生成

①映画レビューやナレッジグラフから関連情報を抽出し、プロンプトを作成

②PLMをファインチューニングして感情を反映した応答を生成

プロンプトとその応答結果の例が下記の表です。これをみると、トリプル2つ・エンティティ4つを入れたプロンプトが一番望ましい応答になったという結果でした。

プロンプトと応答の組み合わせ

実験

データセットはReDialを用いた。

実験1:推薦タスクの評価

ユーザーの感情を捉えることで推薦精度を向上できるか?

実験2:応答生成タスクの評価

応答生成品質を下記5項目で評価

  • 感情強度(Emo Int): 感情の強さ。

  • 感情的説得力(Emo Pers): 感情面での説得力。

  • 論理的説得力(Log Pers): 論理的な一貫性と説得力。

  • 情報性(Info): 提供された情報の有用性。

  • 生命感(Life): 自然な人間の会話にどれだけ近いか。

推薦精度と応答生成のどちらも既存手法より精度が高いという結果だった。

結論

  • システムの出力とユーザーのニーズのギャップを埋めた

  • ユーザーの感情を含めてモデルを学習させる方法を提案した

  • PLMをファインチューニングしてRAGを実装してハルシネーションを緩和させた

  • LLMを使用して、外部リソースに感情ラベルを付与した

  • ユーザーの満足度を加味する評価方法を編み出し、ReDialデータセットで大きな成果を出した