개체와 관계, 상호작용을 묘사하고 분석하기 위한 언어. 네트워크와 관계로 세상을 정의한다.
그래프란 결국 관계 구조 모델링이다!
= 그래프의 특징을 자동으로 추출하거나 학습하는 것.
그래프의 노드를 d-차원 embedding, 즉 d차원 벡터로 mapping하는 것. 이를 통해 네트워크에서 노드가 가까운 것들은 임베딩 공간에서도 가까이 배치된다.
목표는 노드를 d차원 실수 벡터로 매핑하는 함수 f를 학습하는 것. 다시 말해, feed-forward와 back-propagation을 통해 '더욱 완벽한 벡터를 만들어내는 함수'를 학습한다. 이 벡터를 representation, feature representation, embedding이라고 한다.
임베딩 == 노드가 매핑된 n차원의 실수 벡터(차원축소됨) == Representation(표현) == feature Representation(특징 표현)
Node level : Node classification : 개별 사용자나 아이템에 초점을 맞춘다. 유저의 특성과 아이템의 특성을 바탕으로 두 노드 사이의 관련성을 추정하고, 이를 통해 추천을 생성. (ex. 사용자의 관심사와 아이템 카테고리 비교 - 사용자에게 어떤 아이템에 관심을 끌 것인지 예측)
Edge level : Link prediction : 노드 관계(예측, 이해)에 초점을 맞춘다. 사용자와 아이템 간의 연결, 사용자 간의 친구 관계, 아이템 간의 유사성 등을 고려하여 추천을 생성. (ex. 친구들이 좋아하는 아이템 추천, 과거에 좋아했던 아이템과 유사한 아이템 추천)
+ 학습 원리 : 관련이 있는 노드 쌍의 거리는 짧다! 따라서, 학습 과정에서 손실 함수를 사용해 관련이 있는 노드 쌍의 거리가 관련없는 노드 쌍의 거리보다 작아지도록 최적화한다. 이 과정에서 임베딩이 업데이트되며, 거리 개념은 유클리디안/코사인 지표를 사용!
subgraph level : 노드와 엣지의 일부 집합에 초점을 맞춘다. 예를 들어, 사용자의 소셜 네트워크를 분석하여 그룹을 찾고, 그룹 내에서 인기있는 아이템을 추천. 서브그래프(집단) 내 아이템 간의 연관 규칙을 분석하여, 특정 아이템을 구매한 사용자가 함께 구매하는 다른 아이템을 추천 가능.
Graph level prediction (Graph Generation) : 전체 그래프 구조를 활용하여 추천. 노드, 엣지, 서브그래프 레벨에서의 정보를 모두 활용하여 더욱 정확한 추천을 제공 그래프 임베딩 기법을 사용해 사용자/아이템 표현을 학습하고, 임베딩으로 사용자/아이템 간 유사성을 계산해 추천 가능!
+ Clustering / Graph generation / Graph evolution
Graph의 구성 요소 = 노드 + 엣지
N : Object : nodes, vertices
E : Interactions: links, edges
G(N,E) : System : network, graph
Directed - Link에 방향성 있음(arcs) / examples(Phone calls, Following on Twitter, 금융 거래)
ㄴ in-degree & out-degree 개념을 구분한다.
Undirected - Link에 방향성 없음(Symmetrical, reciprocal) / examples(Collaborations, Frendship in Facebook)
ㄴ Node Degree 개념을 사용해 방향성 없는 그래프를 생성할 수도 있다. node degree는 주어진 node에 인접한 edge의 개수이다. 이때 차수란 엣지 수의 2배를 노드 수로 나눈 것이다.
추천 시스템에서 많이 사용되는 그래프 구조. 두 가지 다른 유형의 노드로 구성된 그래프로, 한 노드는 다른 유형의 노드와만 상호 작용한다. 따라서 bipartite Graph는 노드를 두 파티션으로 나눌 수 있으며, 엣지는 왼쪽에서 오른쪽 파티션으로만 연결된다.
이는 조금 더 나아가 folded/projected bipartite graph 개념도 정의할 수 있다. projected bipartite graph는 두 가지 유형 중 하나의 노드만 사용하며, 노드를 연결하는 방식은 적어도 하나의 공통 이웃이 있는 노드에 엣지를 생성한다. (e.g, 같은 물건을 구매한 유저간에 엣지가 생기는 식)
추천 시스템으로 예시를 들자면, 사용자와 아이템을 두 종류의 노드로 가진 이분 그래프를 구성하고, 이것을 사용자나 아이템 중심으로 Folded/Projected하면 새로운 유형의 연결성 특성을 도출할 수 있다. 이런 특성은 추천 모델의 입력 특성으로 사용될 수 있으며, 사용자나 아이템 간의 유사성을 측정하는데 활용될 수도 있다. (compute cost는 엄청날 것 같지만..)
그래프를 표현하는 방법 중 하나. 그래프를 Adjacency Matrix(인접 행렬)로 표현하는 것이다. 기본적으로 Undirected Graph의 경우, 노드 수에 따라 제곱 행렬을 만들고, 이진 행렬이다. 노드가 연결되어 있으면 1, 아니면 0이다. 그래프가 directional 하다면 행렬은 대칭이고, Undirectional 하다면 대칭이 아니다.
Adjacency Matrix는 대부분이 0이고, 이는 매우 sparse하다는 것을 의미한다. 평균 차수는 대략 10에서 최대 100 정도이다. 따라서, 우리는 행렬을 dense matrix로 표현하지 않고, 항상 sparse matrix로 표현해야 한다. 희소 행렬에서는 0이 아닌 원소의 값과 그 위치만 저장하면 되기 때문이다.
여담이지만 추천시스템의 경우에서는, 유저-아이템 간의 상호작용을 반영한 행렬이 지나치게 sparse한 경우, 이런 Cold-Start 문제를 해결하는 것이 주요한 모델성능향상 Task이다.
Node와 Edge, 전체 Graph에 Attributes(속성)이나 Features(특성)이 추가될 수 있다.
그래프의 모든 노드가 연결되어 있지 않을 수도 있다. 만약에 그래프 내 node 간에 connectivity가 없다면, Adjacency Matrix에서는 해당 그래프 부분이 대각선 구조를 가진다.
이 개념은 Directed Graph로도 확장된다. 먼저 약하게 연결된 directed graph는 엣지 방향을 무시하면 연결된 그래프다. 반대로 모든 노드 쌍에 대해 방향성이 있는 경로가 존재하는 그래프는 강하게 연결된 그래프다. 여기서 SCCs라는 개념이 다시 등장한다.
강하게 연결된 구성 요소(SCCs)는 그래프 내의 노드 집합으로, 해당 집합의 모든 노드가 방향성 있는 경로를 통해 서로 방문할 수 있다. 노드 ABC가 서로를 부석순처럼 가리키고 있다. 노드가 순환하고 있다는 뜻이다.