[딥러닝] 지식 그래프와 추천 시스템

홍랑·2022년 1월 4일
4

DeepLearning

목록 보기
3/5
post-thumbnail

현재 넷플릭스, 유튜브 등 다양한 곳에서 활용되는 추천 시스템은 크게 두 가지로 분류된다. 하나는 user-item 관계에 기반한 협업 필터링 방식이고 다른 하나는 item의 특징과 비슷한 것을 추천하는 콘텐츠 기반 필터링 방식이다. 예를 들어서 협업 필터링은 비슷한 취향의 user를 찾고 그 user의 이용 item을 추천해 주는 방식이다. 그리고 콘텐츠 기반 필터링은 내가 좋아하는 노래의 장르, 가수 등의 특징을 기반으로 다른 item을 추천해준다.

추천 시스템이 크게 콘텐츠 기반, 협업 필터링으로 나뉘는 것까진 알겠는데 실제 기업에서는 어떤 알고리즘을 쓰고 있는지 사례가 공개되지 않아 아쉬웠다. 그리고 추천 서비스 프로젝트를 진행하면서 user 데이터가 없거나 적을 땐 어떻게 보완할 수 있을지도 궁금했다.

알아보니 머신러닝 보다는 딥러닝 기반의 추천 시스템이 더 활발히 사용되는 것 같았다. 그 중에서도 오늘은 지식 그래프를 통한 추천 시스템이 있다고 해서 한 번 알아보려고 한다. 실제로 네이버에서 월렛 기능에 활용되는 것 같아 이것도 간단히 살펴볼 예정이다.


먼저 지식 그래프의 개념에 대해서 살펴보고 그걸 활용한 추천 시스템은 어떤 방식으로 진행되는지 보도록 하자 :-)


📌 지식 그래프?

  • 사람의 기억으로 생성되는 지식 정보를 좀 더 많은 양으로 정확하게 탐색하기 위한 기법
  • 구글의 검색 엔진에 사용
  • 사람처럼 생각하고 동음이의어 구분

이런 지식 그래프를 활용하면 더 똑똑한 음성인식 스피커 같은 것들을 만들 수 있다고 한다. 지식 그래프를 만들고 싶다면 그래프 데이터베이스가 필요하다. 관계 정보까지 포함할 수 있으니 말이다.

💡 기본적으로 그래프는
점들과 그 점들을 잇는 선으로 이루어진 데이터 구조다.
그래서 관계나 상호작용을 나타내는 데이터를 분석할 때 주로 쓰인다고 한다. 특히 소셜 네트워크 분석에서 가장 잘 이용되고 있다고 한다.

이제 지식 그래프를 활용해 위에서 소개한 추천 시스템의 두 가지 방법을 보완할 수 있다.

위 그림은 지식 그래프를 통한 영화 추천 과정이다. 함께 해석해보자.
먼저 가장 왼쪽에는 한 user가 이미 본 영화가 있고 바로 오른쪽인 가운데에 그 영화의 특성들이 있다. 그리고 가장 오른쪽에 가운데 특성들과 관련된 user가 아직 보지 않은 영화가 있다.

결국, user와 관계 있는 item과 그의 특징, 그 특징과 관계 있는 new item을 추천해주는 방식으로 지식 그래프를 활용한 추천 시스템이 전개된다.


지식그래프를 이용한 추천시스템은 총 세가지가 있다. 하나씩 간단하게 보자.

📚 knowledge graph embedding

지식 그래프 임베딩은 entity/node - relation를 표현하는데, 지식 그래프 내의 특성들을 모두 벡터화하는 것이라고 생각하면 된다.
임베딩을 통해서 그래프 내부의 구조를 잘 이해하고 학습할 수 있게 되고, side information을 포함할 수 있으며, 따라서 추천 시스템의 성능이 더 높아지게 된다.

📚 Path based method

지식 그래프는 entity - relation - entity - relation 의 path를 갖고 있다고 한다. 이런 path를 이용하면 추천 시스템의 정확도와 설명력을 높일 수 있다. 그러니까, relation을 직접 반영해서 겹치는 relation이 많으면 각 entity가 유사한 관계를 갖고 있다고 판단하게 되는 것이다. 이 방법의 가장 큰 장점은 설명이 가능하다라는 것이다.

📚 GNN based method

이 방식은 결국에는 임베딩과 path 기반의 방식을 모두 사용한 것이라고 할 수 있다. 일단, GNN이 뭔지 개념을 확인해보자.

💡 GNN(Graph Neural Network)

이름에서 알 수 있듯 그래프에 적용하는 신경망 구조이다. 이것의 핵심은 점이 이웃과의 연결에 의해 정의된다는 것이다. 즉, GNN은 주로 연결관계와 이웃들의 상태를 이용하여 각 점의 상태를 학습해 갱신하고 마지막 상태를 통해서 예측을 하게 된다.

그래서 GNN을 활용하면 어떤 것을 할 수 있을까?
GNN은 그래프 점(entity) 사이의 관계(relation)를 파악하고 얼마나 연관성이 있는지를 예측한다. 예를 들어서 영화 추천이라고 치자면, 영화, 사용자가 각 점이고 사용자가 영화를 봤다면 연결을 해주어 그래프를 만들 수 있다. 이때, 사용자와 연결되지 않은 영화 중에 연결될 가능성이 높은 영화를 추천해줄 수 있게 된다.

사용자의 평점 데이터과 GNN을 활용해서 아직 평가하지 않은 컨텐츠에 대한 평점을 예측하는 일도 할 수 있다고 한다.

📚 NAVER Wallet의 coupon 추천

NAVER DEVIEW 2020에서 소개된 내용인데, 국내에 제공되는 서비스는 아니지만 NAVER Wallet에서는 개인 맞춤형 쿠폰 추천 서비스가 제공되고 있다. 기존에는 딥러닝 기반의 추천 시스템이었다고 하는데, 이때 거의 매일 새로운 사용자가 생겨나고 새로운 쿠폰이 생겨나거나 사용자나 쿠폰이 없어지기도 한다.
이때마다 항상 새로 학습을 시켜야하는 문제도 생기고, 새로운 사용자의 경우에는 데이터가 부족해 적절한 추천을 하지 못하는 문제도 생겼다고 한다. 그리고 자주 추천되었거나 자주 사용된 상품에 대해서만 추천되는 다양성 관련 문제도 발생했다.

그래서 CTR과 다양성 모두를 해결하기 위해 GNN을 도입해 개선할 수 있었다고 한다.

먼저, 기존의 딥러닝 아키텍쳐의 MLP 기반으로 유저, 쿠폰의 임베딩 벡터를 학습한다. 그리고 그 값을 바로 예측에 활용하는 것이 아니라 그래프 노드들의 각 초기 임베딩 벡터 값으로 활용한다.
이제 GNN을 도입해서 초기 임베딩 벡터 값들이 그래프에 있는 연결을 통해 전파될 수 있도록 학습하게 된다.

위에서도 설명했지만, GNN은 "연결"을 학습한다. 따라서, 임베딩 벡터의 전파 과정을 통해서 자신과 연결된 다른 객체들의 데이터를 선택적으로 활용할 수 있도록 학습된다.

따라서 cold user(새로운 유저)의 경우에는 user에 대한 데이터가 부족해서 임베딩 벡터의 초기값이 잘 학습되지 않더라도, 연관된 user의 임베딩 벡터를 통해서 그 user의 임베딩 벡터를 더 잘 학습할 수 있게 된다.

🧐 이 부분에서 이 포스팅 처음에 궁금했다고 했던, user의 사용 내역 데이터가 부족할 때의 추천 정확도 개선 방법이 조금 해결된 것 같다.




참고

지식그래프란?
지식그래프를 이용한 추천시스템
GNN 소개 - 기초부터 논문까지
NAVER DEVIEW 2020 중 "추천 시스템3.0"

profile
호랑이 기운이 솟아나요🐯

0개의 댓글