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
•
•
•
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