個人的な論文メモ③：グラフニューラルネットワークを用いたコンテンツ推薦における知識表現の実証分析

個人の興味関心の備忘録として記録したものであり、情報の正確性や完全性を保証するものではありません。

# 目次
+ [三行まとめ](#三行まとめ)
+ [背景・目的](#背景・目的)
+ [研究内容](#研究内容)
+ [関連研究](#関連研究)
+ [アプローチ](#アプローチ)
+ [実験結果](#実験結果)
+ [まとめ](#まとめ)
+ [感想](#感想)

[論文：グラフニューラルネットワークを用いたコンテンツ推薦における知識表現の実証分析](https://www.jstage.jst.go.jp/article/tjsai/39/6/39_39-6-AG24-D/_pdf/-char/ja)

# 三行まとめ
:::note info
+ アニメ作品推薦タスクにおいて、ユーザーの評価履歴と補助情報を組み合わせた協調ナレッジグラフを構築し、効果的な知識表現を検証
+ 複数のデータソース（MyAnimeListとナレッジグラフ）を統合し、グラフニューラルネットワーク（KGAT）を用いてユーザーと作品の関係を学習
+ 実験の結果、異なる情報源を組み合わせることで推薦性能が向上することが示された
:::

# 背景・目的
新型コロナウイルスの感染拡大により在宅時間が増加し、「巣ごもり消費」が拡大した。
その結果、Netflixなどのサブスクリプション型エンターテインメント・サービスの需要が高まった。
コンテンツ領域の研究では、メタデータを活用した「知識表現」が重要視されており、特にナレッジグラフが中核技術として注目されている。
ナレッジグラフは、知識を主語・述語・目的語の三つ組（トリプル）で表現し、機械可読性の高い形で記述することを可能にする。
例）「もののけ姫は宮崎駿監督の作品である」→「もののけ姫、監督される、宮崎駿」

これまでナレッジグラフの研究はメタデータの記述に焦点を当ててきたが、推薦や分類の下流タスクには異なる知識表現が求めらる。
この研究では、推薦タスクに注目して、特に近年に注目されるアニメ作品を対象に研究を行う。
アニメ推薦の事例を通じ、ナレッジグラフの知識表現が推薦性能に与える影響を明らかにすることを目的にする。

:::note warn
+ 作品名や監督の情報だけでは、誰に何を進めるべきかが分からないので、メタデータに鬼滅を見た人はガンダムも見るという情報を入れたら推薦精度が変わるのかという話だと理解。
+ 商品の購買ととらえれば、購買予測に使えそう
:::


# 研究内容
具体的なアプローチ
1. どの知識表現が推薦精度を向上させるか事前に設定
（例：ジャンル情報を追加すると精度上がる？）
1. ナレッジグラフの構造を変更
（データの追加や関係性を調整）
1. 複数のデータソースを統合
（Wikipediaや視聴データを組み合わせて構築・単語の意味の統一問題を解決）
1. ナレッジと推薦システムを組み合わせて検証
1. 結果の分析

この研究の貢献ポイント
+ **推薦に有効なナレッジグラフの知識表現について定量的・定性的な側面から分析**
+ **下流タスクを意識した知識表現を構築するための新たなアプローチ**
+ **アニメ作品に関する異なるデータソースを統合したデータセットの公開**

# 関連研究
### ナレッジグラフ
そもそもナレッジグラフは、実世界における事実や概念を関係性に基づき、多数の主語・述語・目的語（トリプル）によって構成されるグラフ構造である。
WikipediaはWeb上に存在する代表的なナレッジグラフといえる。

### 推薦
協調フィルタリングは、ユーザーがアイテムに与えた評価などの過去のデータをもとに、他の類似したユーザーまたはアイテムを参照して、ユーザーの潜在的な嗜好を予測することが出来る推薦アルゴリズム。
（AさんとBさんは似たアニメを見ている。→Aさんが好きなアニメ〇〇をBさんに推薦）
協調フィルタリングはユーザーの行動データから推薦アイテムを決めるから、アイテム同士の関係性を捉えることが困難。

--2025-03-01--

アイテムの特徴や属性を考慮したグラフニューラルネットワークの推薦モデルとして、
**Knowledge Graph Attention Network** (KGAT)が存在
ユーザとアイテムの2部グラフと、アイテムの補助情報を連結したグラフ構造を入力とする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426482/02d29bbc-c720-4da1-8570-5948bf860c42.png)

アイテム推薦などに使わているアルゴリズム



# アプローチ
## 概要
今回の研究では、アニメ作品の推薦タスクを通じて、ユーザーの趣味嗜好を予測する上で、どのようなナレッジグラフが推薦性能に影響を与えるのか明らかにする。

**２つの仮説**
+ 量的な側面：ナレッジグラフのトリプル数と推薦性能は比例関係にある
→性質の異なる複数のデータソースから作品情報を取得してナレッジグラフを更新して検証
+ 質的な側面：作品内容を特徴づけるプロパティは推薦性能に寄与する
→任意のプロパティに関するトリプルを1つずつ除外したナレッジグラフ複数作成して精度を比較する。

※プロパティ：ノードの特徴を表す情報のこと。ジャンル・監督・放送年とか
※トリプル：ナレッジグラフを基本単位（主語・述語・目的語）

## ナレッジグラフの構築
専門的な知識と一般的な知識のデータソースを準備

+ MyAnimeList：アニメと漫画を専門とした海外ユーザー向けのコミュニティサイト
作品のメタデータ、ユーザーによる作品評価データが利用可能
整数で作品を識別可能。

+ Wikidata：幅広い知識のデータソース　Wikipedia
同じエンティティを識別するためのプロパティが事前に定義されている。
データセット間でのハブ的な役割として重要
Qを先頭とした整数値で作品が識別されている。

## エンティティマッチング
異なる情報言のデータを同一のアニメ作品として正しく結びつけるプロセス
（例）ドラゴンボールという作品に、wikidataの詳細情報(ジャンル・スタッフ・あらすじ)を結びつける

1. 作品IDを利用したマッチング
Wikidataがトリプルの述語でMyAnimeList AnimeIDを持つのでマッチングさせる。
1. 中間辞書を利用したマッチング
サードパーティーのデータソースを中間辞書として利用した間接的なマッチング
MyAnimeListとWikidataには他サイトのリンクが貼られていることがあるので、リンクを中間辞書としてマッチング

エンティティマッチングの問題点として記述粒度の相違があるが、データソースに優先順位をつけることで対応。
（アニメシリーズを単一作品とみなすか、異なる作品とみなすか）
```math
W_{wikidata} > W_{third-parth} > W_{myanimelist}
```


## プロパティの選定
どのような関係や属性を持っているのか表現するプロパティの選定。
（ジャンル、作者、放送年との関係性を表現するもの）

+ 条件A：wikidataプロパティについて
「日本のアニメ(Q1107)」に連鎖的に属する項目が持つプロパティ
出現回数が1000回以上のプロパティ
+ 条件B：MyAnimeListプロパティについて
テキストや数字ではなく、外部参照を持つプロパティ

「もののけ姫」と「千と千尋の神隠し」周辺のナレッジグラフの部分構造

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426482/3cda85eb-13e1-428c-ad3a-49be7293a09a.png)


## LLMによるナレッジグラフの拡張（新たなプロパティの導入）
現状のナレッジグラフでは、「作品の内容を特徴付ける情報」が十分に含まれていない。
そのため、作品の内容を最も表現している「あらすじ」に着目して、LLMを用いてテキストからトリプルを抽出して、ナレッジグラフを拡張する。

3種類のプロパティの追加
+ topic : 作品の具体的な題材や話題となる事柄を表すプロパティ
+ setting：作品の時代背景や世界観の設定を表すプロパティ
+ tone：作品の全体的な色合いや感じ方などの雰囲気を表すプロパティ

この3種類のプロパティの目的語となるエンティティを作品のあらすじからLLMで作成

GPT-4を使用(temperature=1.0)
Few-Shotプロンプティングでトリプルを作成
プロンプト
+ あなた(LLM)には作品に関する「識別子」と「あらすじ」が与えられます
+ あらすじから作品の内容を表現したRDFを作成してください
+ RDFは平易で再利用可能な語から構成してください

（例：もののけ姫）のあらすじから得られたトリプル
|主語|述語(追加した関係)|目的語(LLMで作成)|
|-|-|-|
|Princess_Mononoke|topic|Epic|
|Princess_Mononoke|setting|Ancient_Japan|
|Princess_Mononoke|tone|Mythical|

## 作品推薦
MyAnimeListのユーザーによるアニメ評価データセットをユーザーとアイテムの関係、アイテムの補助情報として作成したナレッジグラフを用いる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426482/02d29bbc-c720-4da1-8570-5948bf860c42.png)

さっきの図に対応させると、
User : MyAnimeListで作品を評価したユーザが、ユーザノードとして表現
Item : MyAnimeListに登録されているアニメ作品が、ユーザ‐アイテム二部グラフのアイテムノード。
Entity (補助情報のエンティティ):
各アニメ作品に関連する属性情報（例：ジャンル、監督、キャラクターなど)

# 評価実験
ナレッジグラフの量的な側面が精度にどのような影響を与えるか3つのナレッジグラフを使って比較検証。
+ KG-all:MyAnimeListとwikidataを統合したナレッジグラフ
+ KG-mal:MyAnimeListのみに基づくナレッジグラフ
+ KG-wikidata:wikidataのみに基づくナレッジグラフ

各ユーザの保持する作品評価リストの上位K項目を予測する

**評価指標**
$Recall@K$と$nDCG@K$という評価指標を用いて評価する。

``` math
 {Recall@K} = \frac{\text{正解アイテムが上位K個に含まれる数}}{\text{全体の正解アイテム数}}

```
ユーザーが好むアイテムの中で、推薦リストの上位$K$件にどれだけ含まれているかを示す。

```math
{nDCG@K} = \frac{\text{DCG@K}}{\text{IDCG@K}}
```
```math
{DCG@K} = \sum_{i=1}^{K} \frac{2^{rel_i} - 1}{\log_2(i+1)}
```


$DCG@K$は、推薦の上位アイテムが当たっているほど値が高くなる指標
$IDCG@K$は、推薦アイテムが全て正解していた場合の値
$nDCG@K$は0から1の値をとる

[DCG参考](https://qiita.com/nnahito/items/af4a677bee4e3f5d66d4)

**作品評価データセットの中身**
ユーザをキーとして、評価した作品のリストを値とした辞書形式で保持
```math
{u_1 : [i_1,i_2,...] , u_2 : [i_1,i_2,...],}
```
$u_n$ : ユニークユーザID
$i_m$ : ユーザが評価した作品ID

このデータセットをもとに、各ユーザーの作品リストごとに学習データとテストデータに分割(8:2)
最低でも5作品を評価しているユーザーに絞られる。
(イメージ)
学習データ   $u_1 : [i_1,i_2,i_3,i_4]$
テストデータ $u_1 : [i_5]$

4,330人のユーザによる53,000件の作品評価データが学習データとして残る。

# 実験結果

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426482/96d0ccfb-33b0-4b74-ad61-cb0cebde5eb3.png)

Noneは一般的なユーザーとアイテムの2部グラフの推薦性能
Noneの場合が推薦性能が最も低く、何かしら知識を考慮した方が推薦性能が向上することが確認できる。

$KG-all$の推薦性能が最も高く、知識を付与すると性能が向上することが分かる。

### プロパティ除外に伴う推薦性能の比較
プロパティ（ジャンル、作者、放送年との関係性を表現するもの）を除外すると、推薦性能が変わるのか確かめる。
43個のプロパティを1個ずつ作成したナレッジグラフを作成して性能を比較

評価指標として、ベースラインに対する推薦性能の比率でプロパティの影響を調査
```math
 pt = \frac{除外プロパティ別の推薦Recall@60}{KG-allによる推薦Recall@60}-1
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426482/23994aa7-c205-4394-b151-2fe555049749.png)
wikidataプロパティの影響
+ 赤であれば除外して性能が向上
+ 青であれば除外して性能が低下

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/426482/878af630-e08d-4e63-9255-d8e387669732.png)
MyAnimeListプロパティの影響

+ Wikidataで推薦性能を上げていたのは「genre」や「director」
メタデータの中でも作品を特徴付けるものであることが考えられる。
監督は制作上で最も影響力のある役職であり、監督が誰であるかによって作品の内容が大きく左右される
+ 逆に推薦性能を下げていたの「characters」や「country og origin」
キャラクターは固有表現となるため、他作品とリンクすることが稀である。
作品の作成された国や言語は、今回のデータが日本のアニメに限定していたことが影響だと考えられる。

### LLMでナレッジグラフを拡張した場合の性能
+ KG-all-text : LLMで生成した結果と既存のナレッジグラフを掛け合わせたナレッジグラフ
+ KG-text : LLMで生成された結果のみのナレッジグラフ

すべての評価指標でKG-all-textが最も高い結果となり、LLMで作成したトリプルを追加する有用性を確認
さらに、LLMで作成したトリプルを削除すると推薦性能が下がることも確認

# まとめ
トリプル数の増加、作品内容を特徴づけるプロパティの作成が推薦性能の向上に寄与することを確認

# 感想
:::note info
+ より複数のデータソースを結合すると性能にどのような影響を与えるのか気になる。
+ 商品の購買推薦に今回の手法を使ってみたい
+ Attentioスコアで顧客をクラスタリングしてグループごとにクーポン配布や推薦を行い効果が異なるか気になる
+ 非構造化データを特徴量として扱るのが面白い
:::