[논문이야기] NGCF의 소개 ③

협업 필터링의 두 가지 단계, ‘임베딩’과 ‘상호작용 모델링’ 기존 협업 필터링의 ‘상호작용 모델링’에 신경망 방식의 여러 레이어와 노드를 추가한 NCF 데이터의 복잡한 관계를 추상화해 모델에 반영하는 NGCF

2
pabii research

[논문이야기] NGCF의 소개 ②에서 이어집니다

이전 글을 통해 추천 알고리즘의 가장 기본적인 형태인 ‘콘텐츠 기반 필터링’과 ‘협업 필터링’을 간락히 살펴봤습니다. 또한 ‘유저와 아이템간 관계’를 비선형적 영역으로 확장하는 협업 필터링을 신경망 협업 필터링(Neural Collaborative Filtering, NCF)을 소개한 바 있습니다.

이번 글에서는 협업 필터링의 구조를 조금 더 자세히 이해해보고, 나아가 ‘신경망 그래프 협업 필터링(NGCF)’이 나오게 된 배경을 공부해 보겠습니다.

협업 필터링 모델의 기본 구조

협업 필터링 모델의 구조

일반적으로 협업 필터링(Collaborative Filtering)은 ‘임베딩(Embedding)’과 ‘상호작용 모델링(Interaction Modeling)’의 두 가지 단계로 구성됩니다. 임베딩이란 추천을 받을 유저(User)나 추천의 대상이 될 아이템(Item)을 상호작용 모델링에 입력할 수 있게끔 벡터(vector)로 수치화하는 단계입니다. 한편 상호작용 모델링이란 유저와 아이템 각각의 벡터를 유저와 아이템 사이의 관계형 벡터로 변환하는 단계입니다.

위의 상호작용 모델링 단계에서 신경망(Neural Network)이라는 계산을 적용해서 비선형적인(Non-linear) 데이터를 계산할 수 있게끔 하는 방법이 바로 ‘신경망 협업 필터링(Neural Collaborative Filtering, NCF)’입니다. NCF는 아래의 그림으로 표현이 가능합니다.

신경망 협업 필터링(Neural Collaborative Filtering, NCF)의 구조

신경망 협업 필터링 모델의 구조와 한계

맨 처음의 그림과 달라 보이지만 상호작용 모델링 단계의 레이어(Layer)를 신경망 협업 필터링 레이어(Neural CF Layers)로 표현한 것 말고는 기본적으로 같은 구성입니다.

NCF를 좀 더 깊게 살펴보면, 임베딩 레이어(Embedding Layer)에 입력하기 전 유저 및 아이템 데이터는 입력 레이어(Input Layer)에 들어갈 수 있게끔 원핫 인코딩(One-Hot Encoding)됩니다. 그리고 각각의 입력(유저와 아이템)은 임베딩 레이어를 거치면서 잠재 벡터(Latent Vector)로 변환됩니다. 이렇게 ‘임베딩’ 된 유저・아이템 잠재 벡터들은 다시 여러 Neural CF Layers를 거친 뒤 최종적으로 결과 레이어(Output Layer)로 빠져나오게 됩니다. 그리고 모델은 이 최종 결과물을 정답치(target)와 비교하며 가중치를 수정하는 계산을 반복합니다.

이를 간단한 기호(Notation)으로 정의한다면 아래와 같습니다.

  • Notation
    • $u_i$ : i번째 유저
    • $i_j$ : j번째 아이템

NCF의 결정적인 단점은 데이터가 수치적으로 표현되기 때문에 데이터 간 관계를 심층적으로 파악하기는 어렵다는 점입니다. 예컨대 $u_1$이 $i_1$을 선택하게 되면 그것으로 관계 파악은 끝이 나게 됩니다(이에 대해서는 아래, 그리고 다음 편을 통해 더 구체적으로 살펴보도록 하겠습니다).

이같은 NCF의 한계를 극복하고자 나온 모델이 신경망 그래프 협업 필터링(Neural Graph Collaborative Filtering, NGCF)입니다. 이를 간단히 이야기 해본다면, 기존의 NCF에 ‘그래프형 관계 데이터(Graph Data)’를 적용한 것으로 볼 수 있습니다. 다음 논의를 위해서는 그래프형 관계 데이터가 무엇인지에 대해 먼저 이해할 필요가 있습니다.

‘그래프 관계형 데이터’와 ‘신경망 그래프 협업 필터링’

관계형 데이터(Graph)란 노드(Node)를 뜻하는 꼭지점(vertex)을 V로 표기하고 간선이나 변을 뜻하는 엣지(Edge)를 E로 표기하는 자료 구조의 형태 입니다. 일반적으로 관계형 데이터는 G=(V,E)로 정의하고 아래의 예처럼 표현합니다.

그래프 데이터 예시

위의 다이어그램에서는 동그란 원을 가진 꼭지점이 5개 있고 그 사이를 정의하는 4개의 변이 존재합니다. e1은 꼭지점 V1과 V2를 이어주고 있기 때문에 e1=(V1, V2)라고 정의 합니다. 이러한 원리로 G=(V, E)를 정의할 수 있으며, 이를 컴퓨터가 인식 가능하게끔 아래처럼 인접행렬(adjacency matrix)를 정의할 수 있습니다.

인접 행렬 예시

V0을 표현하는 첫째 행을 위주로 설명 드리겠습니다. 이는 V0에서 V5와 V2의 방향을 가지는 벡터(vector)로 표현 되며, 이 때문에 첫째 행의 2열과 5열에만 1이 표시돼 있는 것을 확인할 수 있습니다. 이러한 원리로 관계형 데이터 G=(V,E)를 인접행렬로 표현할 수 있는 것입니다.

이렇게 구한 행렬을 유저와 아이템의 임베딩으로 변환하고, 이를 Neural CF Layer를 거치는 NCF를 구현할 수 있습니다. 이렇게 관계형 데이터(Graph)를 NCF에 적용한 것이 NGCF라고 이해할 수 있습니다.

그래프 관계형 데이터는 유클리드 공간에 위치하지 않는다는 점에서 여타 데이터와 차별됩니다. 위 그림을 다시 살펴보면, 7번을 기준으로 2번과 8번의 거리는 다르지만 관계형 데이터에서 둘의 거리는 다르지 않습니다. 다른 예로 아래 그림을 보면 두 그래프는 서로 다른 형태를 띄지만, 같은 인접행렬을 가지기 때문에 같은 데이터로 인식할 수 있습니다.

두 그래프는 다른 형태를 띄지만, 인접 행렬은 동일하므로 같은 데이터다

이런 특징 때문에 시각적으로 굉장히 복잡한 관계들을 추상화 시켜 간단한 인접행렬로 만드는 것이 가능합니다. 또한 SNS 및 미디어의 영향, 바이러스 확산 등을 연구하고 모델링 할 때 그래프 이론은 효과적으로 사용됩니다. 아울러 그래프 관계형 데이터를 활용해 앞서 언급한 ’1차원적인 관계밖에 설명하지 못한다’는 NCF의 단점을 극복할 수 있습니다.

[논문이야기] NGCF의 소개 ④에서 이어집니다

Similar Posts