OTT 서비스와 그래프(graph)

Gayeon Kim·2021년 2월 19일
1

1. 그래프(graph)란?


사람은 사회적 동물이라고 한다. 그에 걸맞게 우리는 다른 사람들과 관계를 맺으며 살아간다. 사람 한 명 한 명을 점으로, 그리고 사람과 사람 사이의 관계를 점과 점을 잇는 선으로 표현한다면 세상은 거미줄처럼 얽혀있을 것이다. 뜬금없이 이런 이야기를 왜 하냐고? 바로 오늘 얘기할 그래프(graph)가 이와 닮았기 때문이다.

그래프는 객체와 객체 사이의 관계를 표현할 때 유용한 자료구조이다. 여러 개의 노드가 있고, 노드와 노드의 연결을 간선을 통해 표현한다. 이때 간선이 방향성을 가졌는지에 따라서 방향성(directed) 그래프와 무방향성(undirected) 그래프로 나뉜다. 위의 그림에서 왼쪽 그래프는 간선이 방향성을 띠고 있지 않은 무방향성 그래프이며, 오른쪽 그래프는 방향성 그래프이다. 방향성 그래프의 간선은 한쪽으로만 향할 수도 있고, 양방향 모두 향할 수도 있다.

그리고 위 그림처럼 간선마다 가중치가 할당된 그래프를 가중 그래프(weighted graph)라고 한다. 가중치는 어떤 경로를 선택할지 결정하는 데 사용된다. 예를 들어 각 노드를 도시라 하고 간선의 가중치를 도시 사이의 거리라고 하면, 최단 거리로 이동하기 위해서는 가중치의 합이 가장 작은 경로를 선택해야 한다.

그렇다면 그래프는 어디서 어떻게 사용될 수 있을까. 앞서 사람과 사람 사이의 관계도 그래프로 나타낼 수 있다고 하였으니 SNS에서 사용할 수 있을 것이고, 가중 그래프를 사용하면 최단 경로를 찾을 수 있다고 하였으니 내비게이션에서도 사용할 수 있을 것이다. 모두 맞는 말이다. 이처럼 그래프의 활용 방법은 무궁무진하다. 그중에서도 오늘은 OTT 서비스에서 그래프가 어떻게 사용될 수 있는지를 중점적으로 살펴보려고 한다.



2. 넷플릭스와 그래프(NetflixGraph)


넷플릭스는 세계적인 OTT 서비스 회사이다. 넷플릭스의 유료 회원은 2020년 4분기 기준으로 2억 명을 돌파했으며[1], 서비스하는 작품은 수 천개에 달한다. 넷플릭스 기술 블로그에 따르면, 수많은 회원들이 만들어내는 작품 정보 호출에 빠르게 반응하기 위해서 넷플릭스는 방향성 그래프를 활용하였으며(NetflixGraph), 이 방법을 통해서 메모리 사용량을 90%나 줄였다고 한다[2]. NetflixGraph는 장르, 캐릭터, 태그 등을 각각 노드로 하며, 작품에 관련된 노드를 순서대로 연결하여 그 순서를 저장하는 방식으로 작품 정보를 관리한다. 예를 들어, 넷플릭스는 영화 타이타닉(제임스 카메론, 1997)의 장르를 미국 영화, 시대물, 드라마, 로맨스 등으로 분류하고 있다. 이처럼 작품 하나는 여러 개의 장르를 가질 수 있기 때문에 단순히 RDBMS로 관리하기에는 어려움이 있다. 하지만 만약 1번 노드를 미국 영화, 2번 노드를 시대물, 3번 노드를 로맨스, 4번 노드를 스릴러, 5번 노드를 드라마라고 한다면, 앞서 예로 들었던 타이타닉의 장르는 1, 2, 5, 3 순서로 노드가 연결될 것이다. 이러한 방법을 사용하면 중복되는 정보를 효율적으로 관리할 수 있으며, 작품 사이의 관계도 표현할 수 있고, 데이터의 호출 역시 빠르게 수행할 수 있다.



3. 추천 시스템과 그래프


OTT 서비스하면 빼놓을 수 없는 게 바로 추천 시스템이다. OTT 서비스들은 사용자들의 감상 데이터를 활용하여 좋아할 만한 작품을 추천해주기도 하고 피드에 노출될 작품을 개인화하기도 한다. 그래프는 추천 시스템을 만들 때도 활용할 수 있다. 대표적으로는 Neural Graph Collaborative Filtering(Xiang Wang 외. 2019)이 있다. 이 모델은 사용자와 아이템 각각을 노드로 하고, 사용자와 아이템의 상호 작용 그래프를 만들 때 high-order connectivity를 활용하였다. 예를 들어 user Aitem 1, item 2를 감상했고, user Bitem 1, item 3, item 4를, user Citem 5를 감상했다고 가정하자. 그리고 user A에게 좋아할 만한 작품을 추천하고자 할 때, 사용자(user A, user B, user C)와 아이템(item 1, item 2, item 3, item 4, item 5) 각각을 노드로 하고 그 연결을 나타내보면 user Auser Bitem 1에 의해 연결되어 있을 것이며, user B에는 다시 item 3item 4가 연결되어 있을 것이다. 즉, user Auser B는 관련이 있는 사용자이기에 user A에게 user B와 관련 있는 아이템인 item 3item 4를 추천해줄 수 있다.

그래프를 활용한 추천 모델은 무엇을 노드로 할 것인지, 그래프의 모양을 어떻게 만들 것인지, 그리고 관련 있는 다른 사용자 혹은 작품을 어떻게 찾을 것인지 등에 따라서 다양한 모델이 있다. 위에서 소개한 모델 외에 대표적인 것으로는 지식 그래프를 활용한 KGAT: Knowledge Graph Attention Network for Recommendation(Xiang Wang 외. 2018)이 있다.



4. 마치며


지금까지 넷플릭스와 Xiang Wang의 Neural Graph Collaborative Filtering을 통해서 OTT 서비스에서 그래프가 어떻게 활용될 수 있는지 알아보았다. 그래프는 노드와 간선을 통해서 객체와 객체 사이의 관계를 표현할 수 있는 자료구조이다. 그래프를 활용하면 데이터를 효율적으로 관리할 수 있으며, 그래프 개념을 적용하여 새로운 추천 모델을 만들 수도 있다. 이 글에서 소개한 것은 그래프 하나이지만, 자료구조에는 큐, 스택 등 다양한 것이 있으며 여러 서비스에서 활용되고 있다. 자료구조는 컴퓨터 공학의 기본이다. 기본이 탄탄한 사람은 기존의 시스템을 효율적으로 수정할 수 있고, 새로운 기술을 빠르게 이해할 수 있으며, 더 나아가 새로운 모델을 만들 수도 있다. 그러므로 직접 시스템을 개발하는 개발자가 아니더라도 자료구조에 관해서 공부해 둔다면 분명 도움이 될 것이다.



참고 문헌

  • Wang, X. (2019). KGAT: Knowledge Graph Attention Network for Recommendation. Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, 950-958.
    https://arxiv.org/abs/1905.07854
  • Wang, X. (2019). Neural Graph Collaborative Filtering. Proceedings of the 42nd International ACM SIGIR Conference on Research and Development in Information Retrievalg, 165-174.
    https://arxiv.org/abs/1905.08108

참고 자료

0개의 댓글