Search

3. User-Item Collaborative Filtering

index
CF는 유저와 아이템의 상호작용이 주어졌을 때, 유저에게 선택된 적 있는 아이템들의 정보를 사용해 user representation을 구성하고, 아이템과 상호작용한 유저들의 정보를 사용해 item representation을 구성하는(서로 정보를 주고받는) 형태
GNN은 노드(user, item) 간 high-order connectivity(interactions)에서의 정보 확산을 잘 모델링할 수 있어 CF에 유용
(기존의 CF가 user, item representation을 단순 학습 가능한 파라미터로 뒀다면, GNN이 적용된 CF에서는 user, item representation을 user-item interaction bipartite graph 상에서 GNN으로 embedding propagation 진행하여 final representation을 생성함)

0. 4 Issues

1. Graph Construction

Heterogeneous(user-item) bipartite graphe 상에서 GNN 적용할까? 아니면 user graph / item graph 각각 만들어서 GNN 적용할까?
Full graph 상에서 GNN 적용할까? 비싸니까 이웃들을 샘플링해서 GNN 적용할까?

2. Neighbor Aggregation

이웃들의 가중치를 매겨서 정보 Aggregate하면 어떨까?
이웃들 간의 상호작용을 반영하면 어떨까?

3. Information Update

중심 노드와 주변 노드 정보를 어떻게 합칠 것인가?

4. Final Node Representation

final representation으로 마지막 layer rep만 사용할 것인가? 모든 layer rep을 다 사용할 것인가?

1. Graph Construction

1-1. Bipartite Graph만 사용할 것인가

Two-Hop Edges: BIpartite graph에 two-hop edges 더하면 user-user / item-item subgraph를 얻을 수 있음. 이를 통해 user-user간, item-item간 정보 전달이 활발히 발생
Virtual Nodes
DGCF: Bipartite + Two-Hop Edges + 각 interaction에 대한 Intent를 나타내는 Virtual Nodes를 추가
Multi-GCCF: Bipartite + Two-Hop Edges
DHCF: HyperEdge 사용해 high-order correlation 모델링
HiGNN: 비슷한 유저 / 아이템을 클러스터링하고 클러스터 중심을 Virtual Nodes로 잡아 새로운 coarsened user-item graph를 구성: user, item들의 계층적 연관성을 모델링

1-2. 이웃 샘플링

Multi-GCCF, NIA-GCN: 고정 갯수 랜덤 샘플링
Pinsage: 중심 노드에서 random walk 돌려서 주변 노드들에의 visit count를 센 후, 상위 t개 이웃을 선택

2. Neighbor Aggregation

2-a. Equal Weight

단순 Mean-Pooling

2-b. Degree Normalization

GCN에서 사용하는 방법

2-c. Attentive Weights

중심 노드와 더 관련 있는 주변 노드일수록 가중하고 싶다: attention mechanism 사용
MCCF

2-d. Central Node Augmentation

h_i, h_u 의 elementwise product vector을 사용 → h_i, h_u가 align이 잘 맞는지를 반영한다.

2-e. Neighbor Interaction

이웃들 간의 interaction을 aggregation 과정에서 반영
NIA-GCN

3. Information Update

3-a. 주변 노드의 정보만을 사용해 새로운 Representation 생성

h: 중심 노드 정보 / n: 주변 노드 정보
ex)
with transformation/nonlinearity
sum/avg
LR-GCCF: without nonlinearity
LightGCN: without transformation/nonlinearity

3-b. 중심 노드와 주변 노드 정보를 모두 사용

ex)
with concat / transformation / nonlinearity

4. Final Node Representation

mainstream: 마지막 layer representation만 사용
다른 layer rep 사용하면 더 풍부한 정보를 담을 수 있지 않을까?
lower layer: individual features
higher layer: neighbour features