Skip to content
JunHyuk Kwon edited this page Feb 8, 2023 · 16 revisions

학습 데이터 설명

오늘의집 - '집들이' 글

image

  • 오늘의집에서는 '집들이'이라는 카테고리에 오늘의집 유저들이 각자 꾸민 집을 소개하는 글이 있습니다.

'집들이' 글 - '상품 모아보기'

image

  • 각 '집들이' 글에는 집을 꾸미는데 사용한 아이템들을 한 데 모아둔 페이지가 있습니다.

학습 데이터 채택

image

  • '집들이' 글을 작성한 유저 : '집들이'에 포함된 아이템들
  • '집들이'에 포함된 아이템들은, '집들이' 글을 작성한 유저가 구매한 아이템들입니다.
  • 따라서 이 아이템들을 오늘의집 유저가 선호하는 아이템으로 간주할 수 있습니다.

추론 데이터 설명

선호 집들이 선택 과정: 나만의집 서비스 회원 가입

image

  • 회원가입 시 선호하는 집들이 이미지를 선택합니다.

신규 유저 선호 아이템 구성: 나만의집 유저 초기 데이터 구성

image

  • 나만의집 서비스의 신규 유저가 회원가입 시 선택한 '집들이' 글에 포함된 아이템들을 '초기 선호 데이터'로 구성합니다.
  • 따라서, 첫 추천 아이템들은 '초기 선호 데이터'를 기반으로 생성됩니다.

'좋아요'를 통한 정밀한 추천

image

  • 나만의집 서비스 유저가 선호하는 아이템이 있으면 '좋아요'를 눌러서, 유저의 선호 아이템으로 추가합니다!
  • 유저가 아이템들의 좋아요를 많이 누를수록 더 정밀한 추천이 가능해집니다!

초기 모델 - LightGCN

LightGCN이란?

  • LightGCN은 NGCF(Neural Graph Collaborative Filtering)이라는 그래프 기반 CF(Collaborative Filtering) 모델을 경량화해서 성능을 높인 모델입니다.
  • 간단히 이야기해서, 유저 - 아이템 관계로만 구성된 그래프 구조를 활용해서 유저의 선호 아이템을 포착하는 모델입니다.

LightGCN을 도입하려 했던 이유

  • LightGCN 모델은 학습 파라미터가 적어 추론 속도가 빠르다는 장점을 가지고 있습니다. 따라서, 빠른 학습 속도가 필요한 저희의 서비스에 적합할 것이라고 판단하였습니다.

non user-free model을 user-free하게 사용하기

  • LightGCN 모델은 non user-free model, 즉 신규 유저에 대해서 대응하지 못하는 모델입니다.
  • 따라서 LightGCN 모델을 학습할 때, input 유저를 마치 집들이 5개를 선택한 것과 동일하게 dummy 유저를 랜덤하게 생성하였습니다. 이를 가지고 학습했습니다.
  • 나만의집 서비스의 회원가입 시에는 '집들이' 이미지를 input으로 받기 때문에 오히려 이 input을 동일한 형태로 받는 점에서 더 좋은 추론을 할 수 있을 것이라고 생각했습니다. 기

LightGCN의 실패 이유

  • 저희가 수집한 데이터는 99.9599%로 매우 높은 sparsity와 매우 극심한 Long Tail Problem이 있었습니다.
  • 따라서 유저-아이템 관계를 그래프로 표현했을 때, 비인기 아이템들을 매개로 유저를 연결지으려면 더 깊은 깊이에서의 message passing이 이루어져야 했습니다.
  • 그러나, LightGCN 모델과 같이 message passing을 하는 GNN 모델은 깊이가 깊어질수록 그래프가 over-smoothing되는 문제가 발생합니다.
  • 결국, 그래프 탐색 깊이를 줄이거나 늘려도 학습이 되지 않는 문제가 발생했습니다.

모델 선정 기준

image

  • 따라서 최종 모델을 선정하기 전, 4가지 모델 선정 기준을 설정했습니다.
  1. Personalized: 유저의 취향을 반영해 추천을 해주어야하므로, 개인화가 가능해야합니다.
  2. User Free: 신규 유저에 대응할 수 있어야하므로 아이템 구성만을 입력으로 받는 user-free해야합니다.
  3. Extremely Sparse Data: 매우 sparse한 데이터도 학습할 수 있어야 합니다.
  4. Fast Inference: 추론 속도가 빨라, 서비스 제공에 문제가 없어야 합니다.
  • 이런 네 가지 기준에 부합하는 모델로 Multi-DAE 모델을 선정하였습니다.

모델 소개 - Multi-Denoising Auto Encoder (Multi-DAE)

image

  • Multi-DAE 모델은 AutoEncoder 기반이므로, item 구성만을 입력받습니다. 따라서 user-free한 특성을 가집니다. 또한, dense한 latent factor을 추출하기 때문에 sparse한 데이터에도 대응할 수 있습니다. 그리고 빠른 추론 속도를 가지고 있기에, 저희 서비스에 적절한 모델로 판단하여 선정하게 되었습니다.

모델 성능 및 평가

image

  • 모델의 성능을 평가하기 위해 NDCG@10과 Recall@10을 측정한 결과, 200 Epoch까지 큰 변화가 없었습니다. 따라서 모델의 학습이 충분히 되었다고 판단했습니다.
  • 하지만, 실제 프로젝트에 적용해 추천 결과를 살펴봤을 때 유저의 취향에 관계없이 유사한 상품들이 추천되고 있다는 것을 발견했습니다. 즉, 개인화 추천이 이루어지지 않고 있었습니다.

image

  • 앞선 개인화 추천 문제를 해결하기 위해 diversity@10이라는 다양성 지표를 도입하였습니다. diversity@10은 아이템이 다양하게 추천될수록 비례하여 증가하는 지표입니다. image
  • diversity가 epoch이 커질수록 증가하는 양상을 보였기에, 이전 모델보다 학습을 더욱 진행하였습니다. 그 결과, 다양성은 지속적으로 증가하고 이와 함께 정확도 지표도 증가하였습니다. 이제는 사용자에게 개인화된 결과를 내고 있다고 판단할 수 있었습니다!

image 실제 서비스에 적용한 결과, 이전보다 훨씬 다양한 상품들이 추천됨을 확인할 수 있었습니다.

Clone this wiki locally