한줄 요약
지식 그래프를 3차원 텐서로 놓고, 관계마다 하나의 행렬을 두어 분해하는 모델이다. 이 모델을 RESCAL 이라고 부른다. Nickel et al., ICML 2011.
데이터를 어떻게 놓나
지식 그래프의 사실은 (주어, 관계, 목적어) 세 쌍으로 적힌다. 이를 3차원 텐서 로 둔다.
앞의 두 축이 개체, 세 번째 축이 관계 종류다. 관계 하나를 고정하면 그 관계의 인접행렬 한 장이 나온다.
분해 형태
관계 에 해당하는 조각 를 다음처럼 근사한다.
| 기호 | 의미 |
|---|---|
| 개체 임베딩. 번째 행이 개체 의 벡터 | |
| 관계 를 나타내는 행렬 | |
| 잠재 차원 |
한 사실의 점수는 다. 개체 벡터는 관계와 무관하게 하나만 두고, 관계마다 행렬 를 따로 둔다는 점이 핵심이다.
를 모든 관계가 공유하기 때문에 한 관계에서 배운 개체 표현이 다른 관계로 전달된다. 논문이 collective learning 이라고 부르는 부분이 이것이다. 어떤 사람의 ‘국적’ 관계에서 얻은 정보가 그 사람의 ‘거주지’ 관계 예측에도 쓰인다.
가 대칭일 필요가 없다는 점도 중요하다. 이므로 ‘~의 부모이다’ 처럼 방향이 있는 관계를 표현할 수 있다.
대가와 이후
관계마다 행렬을 두므로 파라미터가 관계 수 × 로 늘어난다. 관계 종류가 많은 그래프에서는 이 부분이 부담이 되고 과적합하기 쉽다.
이후 모델들은 를 제약해서 이 비용을 줄이는 방향으로 갔다. DistMult 는 를 대각행렬로 두어 파라미터를 개로 줄이지만 대칭 관계만 표현할 수 있게 되고, ComplEx 는 복소수 임베딩으로 대각 형태를 유지하면서 비대칭까지 표현한다.
PyTorch-BigGraph 는 대규모 그래프 임베딩 학습 프레임워크로, RESCAL 을 포함한 여러 스코어 함수를 선택지로 제공한다.