올리브영 테크블로그 포스팅 올리브영 사용자 행동 데이터로 학습한 상품 유사도 언어 모델: 전통적 속성 기반 추천을 넘어선 의미론적 유사도 모델링
AI/ML

올리브영 사용자 행동 데이터로 학습한 상품 유사도 언어 모델: 전통적 속성 기반 추천을 넘어선 의미론적 유사도 모델링

검색 로그 기반에 기반해 학습한 진보된 상품 추천 시스템

2025.06.02

안녕하세요! 올리브영에서 머신러닝으로 다양한 문제를 풀고 있는 데이터 사이언티스트 입니다 😃 최근에 개발 했던 추천을 위한 Language Modeling에 대해서 공유하고자 합니다.

올리브영 AI 플랫폼의 최대 강점은 바로, 상품 구매 요인과 직결된 방대한 속성·성분 데이터를 보유하고 있다는 점입니다. 이러한 강점은 고객의 구매 패턴, 선호, 니즈를 더욱 정교하게 파악할 수 있게 해주며, 이를 통해 신규 상품 기획, 협력사 제안, 마케팅 캠페인의 차별화를 가능하게 합니다. 나아가 단순히 ‘많은 상품’을 추천하는 것을 넘어, 올리브영 고객이 원하는 맞춤형 상품을 제안하여 고도화된 고객 경험을 창출한다는 점에서 중요한 의미를 가집니다.

추천 모델의 핵심 구조: Query x Value

올리브영의 추천 시스템은 사용자가 필요해서 찾는 아이템, 혹은 관심 있게 둘러보는 카테고리를 UX 흐름에 적합한 모델으로 예측해 제공합니다.

추천 모델링의 목적(Object)은 QueryValue의 관계를 Label에 맞게 모델링하는 것입니다. 이 때 Query는 조건이나 사용자 같은 상황(Context)을, Value는 추천 대상을 의미하며, Label은 Query와 Value를 기반으로 한 목적을 말합니다. 이는 어떤 모델을 사용하든 동일하게 적용됩니다.

또한, 모델이 필요한 상황(Context)에 따라 Query는 키워드(Keyword), 사용자(User), 브랜드(Brand), 아이템(Item) 등 다양한 형태가 될 수 있습니다.





유사 상품 추천, 어떻게 접근할까?

오늘 소개할 내용은 사용자가 상품을 둘러보며 고민할 때, 비슷한 상품을 추천하거나 리마인드·탐색 연속성을 돕는 추천 방식에 대한 이야기입니다. 추천은 유사상품 모델을 기반으로, 최근에 본 상품과 유사한 제품을 제안하거나 다양한 화면과 목적에 맞춰 활용됩니다.

즉, 상품(item) 간 관계를 수치화(score; similarity) 하는 Item × Item 모델이라고 할 수 있습니다.





기존 접근법: 속성 기반 유사도

상품 속성 one-hot encoding 기반 유사도 계산

올리브영 AI 플랫폼의 가장 큰 자산중 하나는 상품의 구매 요인과 관련된 속성과 성분 데이터를 보유하고 있다는 점입니다. 이러한 풍부한 데이터를 기반으로, 상품 간 유사도를 계산할 때 속성과 성분 정보를 one-hot encoding한 뒤 cosine similarity를 적용하는 방식을 사용해왔습니다.

속성 가중치의 함정: 모든 속성이 같을까?

이 방법론은 상품의 객관적인 특징을 비교해 교집합을 도출한다는 점에서 의미 있는 접근이었습니다. 그러나 모든 속성에 동일한 가중치를 적용하면서, 중요도가 낮은 속성의 일치가 유사도 계산에 과도하게 반영되는 문제가 발생했습니다. 그 결과, 실제로는 관련성이 낮은 상품 간에도 유사도가 과대 평가되는 현상이 나타났습니다.




위 샘플에서는 상품 A와 B, B와 C가 각각 0.5로 동일한 유사도를 보입니다. 하지만 각 속성이나 속성값의 중요도가 모두 동일하게 취급되기 때문에, 단순히 교집합의 수만으로 유사도를 계산하는 방식에는 한계가 있습니다. 사용자의 판단에 자연스럽게 영향을 주는 주요 기준이 반영되지 않기 때문입니다.

개선된 접근법: 사용자 관점 속성 가중치

상품마다 다른 속성 가중치 모델링

따라서 새로운 방법은 상품 간 속성을 비교할 때, 사용자의 비교 관점에 기반한 중요도에 따라 가중치를 다르게 반영하도록 해야 했습니다. 그러므로 같은 속성이라도 상품 카테고리에 따라 그 비중이 달라져야 합니다.

예를 들어, 틴트 제품에서는 색상 속성이 중요한 반면, 스킨 제품에서는 상대적으로 덜 중요할 수 있습니다.

✏️ 여기서 다음과 같은 도전 과제가 있었습니다.

  1. 레이블: 사용자의 비교 관점 및 비교 상품 카테고리간 어떤 상품과 어떤 상품이 얼마나 유사한지의 데이터 취득
  2. 정량적인 검증 방법: 모델의 loss외에 실질적인 성능을 검증할 수 있는 정량적인 방법
  3. 콜드 스타트: 신규 상품 및 속성 미보유 상품 처리

레이블 설계: 사용자의 비교 관점에서

레이블의 중요성

아무리 강력한 모델을 사용하더라도, 학습에 쓰이는 레이블이 목적(Objective)에 적합하지 않으면 의미가 없습니다. 도메인 지식이 있더라도 임의로 관계를 정의해 데이터를 만들고 학습시키는 것은 정확도가 떨어지며, 이는 결국 수많은 if 문을 직접 설계하는 것과 다를 바 없어 AI 활용의 본질에도 맞지 않습니다.

그래서 모집단의 분포를 그대로 모방할 수 있는 방법을 찾기 위해, 간접적인 레이블 데이터를 획득하는 방안을 모색하였습니다.

탐색형 행동 로그로부터의 레이블 생성

상품 간 유사성 판단의 핵심은 사용자가 실제로 상품을 비교하고 선택하는 관점에 있습니다. 이러한 인사이트를 바탕으로, 우리는 목적 지향적인 사용자의 검색 행동에서 해답을 찾았습니다.

사용자가 검색하는 과정은 특정 목적을 향한 탐색 경로라 할 수 있습니다. 예를 들어, 동일한 키워드로 검색한 결과 내에서 클릭된 상품들은 해당 키워드의 관점에서 일정한 관계를 맺고 있다고 볼 수 있습니다.

물론 유사 관계에 대한 신뢰도 높은 레이블을 확보하기 위해, 일정량 이상의 교집합(여러 사용자가 동일한 키워드에서 동일한 상품을 클릭한 경우)에 해당하는 데이터만 학습에 활용했습니다.





이 상품들은 특정 검색 키워드라는 관점에서 유사하다고 볼 수 있으며, 이것이 바로 사용자가 상품을 바라볼 때 비슷한 상품으로 정의할 수 있는 레이블입니다. 또한 다수의 통계 데이터를 통해 사용자들이 상품을 바라보는 관점을 일반화함으로써, 상품의 중요한 속성을 효과적으로 학습시킬 수 있습니다.




Item Similarity Language Model: 설계와 학습 방식

모델과 방법론

Language Model을 사용해서 두 상품 문서의 embedding의 cosine similarity값이 label값이 되도록 모델이 추론하는 embedding값을 학습시키는 방법론을 선택했습니다. 이 목적을 위해서 Predicted similarity와 Ground truth similarity를 최소화하도록 학습하고자 Sentence Transformer구조와 Loss function으로 MultipleNegativesRankingLoss를 사용 했습니다. 이 Loss function은 positive sample(유사 관계)만 있는 상태일때 negative sample(비유사 관계)을 in batch implicit하게 sampling함으로써 "비유사 관계" 데이터 없이 "유사 관계" 데이터만 있어도 학습을 할 수 있는 특징이 있습니다.

학습을 위한 모델로는 다양한 언어로 사전학습된 Sentence Transformer 구조의 paraphrase-multilingual-MiniLM-L12-v2(118M 파라미터 크기)를 사용 했습니다.

🤔 Language model을 선택한 이유는 다음과 같습니다.

  • 데이터의 형태: 상품을 구성하는 속성이나 상품명 등은 수치가 아니라 텍스트 형태로서 의미를 지님
  • 의미의 이해 필요: 수치 비교가 아니라 상품을 설명하는 다양한 요소들을 통해 상품을 이해하고 연결하기를 목표함
  • 의미론적 이해: 동일(equal)할 뿐 아니라 비슷한 표현에서 오는 차이나 유사함을 처리하도록 목표함 (LM의 지식도 활용)



학습 과정에서 얻어지는 것은 단순히 검색어와 관련된 상품이 아니라, 상품 문서 간 유사성에 영향을 미치는 텍스트의 중요도입니다.

즉, A라는 상품이 B, C, D, E, F와 유사하다고 묶여 있을 때, A 상품을 기준으로 B, C, D, E, F와의 유사성은 최대화하고, 그 외 다른 샘플과의 유사성은 최소화하는 과정을 통해 어떤 단어(vocab)가 중요한 정보를 제공하는지, 또는 무시해야 하는지를 학습하게 됩니다.

상품 문서의 구성

모델에 들어가는 상품의 문서는 예시처럼 속성 외에도 다양한 정보를 포함하도록 하고, 섹션을 구분해 구성했습니다. 아래에서는 구조적으로 표현했지만 실제로는 텍스트 기반 markdown 형태로 작성되었습니다.




속성 없는 상품까지 학습시키는 Augmentation 전략

실제 운영 환경에서는 속성 정보가 부족하거나 아예 없는 상품들이 불가피하게 존재합니다. 특히 신규 출시 상품의 경우 속성 데이터가 완비되지 않은 경우가 많아, 기존 속성 기반 유사도 계산으로는 적절한 추천이 어렵습니다. 그러나 사용자 관점에서는 이런 상품들에 대해서도 관련성 높은 다른 상품들이 추천되어야 합니다.

그래서 이런 상황을 대비해 학습시의 레이블 데이터를 추가로 보강하는 방식을 사용했습니다. 방법은 다음과 같습니다.

  1. 속성이 모두 있는 유사 상품 쌍 중에서 상품 쌍 a = b를 무작위로 뽑습니다.
  2. 그 중 상품 a의 속성 정보를 일부러 제거해서 속성이 없는 상태로 만듭니다.
  3. 속성이 없는 a 기준에서 상품이 있는 b와 관련있는 상태로 레이블을 만들게 됩니다.

이렇게 만든 쌍을 학습 데이터셋에 추가하여 속성이 없는 상품도 관계를 학습할 수 있도록 했습니다. 이 외에도 실제의 데이터 분포에서 얻기 힘들지만 기획적으로 추가되어야 하는 관계성을 augmentation을 통해 레이블을 생성해서 추가 했습니다. 결과적으로 1년의 검색 로그로부터 약 300만개 정도의 학습 레이블을 확보할 수 있었고, 이 중 20%를 검증용 데이터로 사용 했습니다.

모델 성과: 정량적 검증

정량적 측정 방법 개발

모델 학습의 성과를 평가할 때, 일반적으로 loss 값을 확인합니다. 그렇지만 loss는 모델이 주어진 레이블에 대해 얼마나 잘 학습했는지를 나타내는 지표일 뿐, 실제 우리가 원하는 목적에 맞게 학습되었는지는 다른 관점의 평가 지표가 필요합니다.

그래서 다음과 같은 정량적 측정 방법을 도입하여 모델이 목적에 맞게 학습되었는지 확인했습니다.

1. 모델의 집중 영역(Attention) 분석

  • 모델이 상품 A와 상품 B 간의 관계(유사/비유사)를 학습하는 과정에서, 주어진 텍스트(vocab) 내에서 모델이 어느 부분에 집중하는지를 파악합니다.
  • 학습이 잘 되었다면, 같은 카테고리 내에서는 모델이 집중하는 토큰(단어)들이 유사해야 하며, 이는 모델이 해당 카테고리에서 중요한 속성을 잘 파악하고 있다는 의미입니다.

2. 카테고리별 집중 영역 차이

  • 반면, 서로 다른 카테고리 간에는 모델이 집중하는 부분이 달라야 합니다.
  • 예를 들어, 헤어 스프레이는 향취가 더 중요한 반면 헤어 왁스의 경우에는 향취보다 고정력을 더 중요하게 보는 편입니다.


예시

각 토큰별 중요도를 시각화하면 카테고리별, 상품별로 상이합니다. 학습 과정에서 중요도가 달라지기 때문입니다.




예시처럼, 카테고리별로 속성 섹션 내에서의 중요도 수치를 평균 내면 다음과 같이 차이를 볼 수 있습니다. 카테고리 내에서는 집중하는(중요도) 속성이 비슷하고, 카테고리 간에는 다른 현상은 모델이 상품 특성을 잘 학습했다는 중요한 증거 입니다.






결론과 향후 방향

이번 유사상품 추천 Language Model 프로젝트는 기존의 단순 매칭 방식에서 벗어나, 상품 간 가변적인 유사성 기준을 데이터 기반으로 유연하게 학습할 수 있는 AI 모델을 설계하고 적용했다는 점에서 중요한 진전을 이뤘습니다.

특히 다양한 속성과 사용자 선호도를 포괄할 수 있는 모델 구조, 모델 학습에 최적화된 과학적이고 합리화된 레이블링 방식, 속성 미보유 상품과 카테고리에 대한 추천 커버리지를 100%로 확대 그리고 관련된 추천 화면의 실질적인 비즈니스 성과(기존 모델 대비 CTR 약 50% 개선)를 모두 달성했다는 점은 이번 프로젝트의 핵심 성과로 꼽을 수 있습니다.

또한, 카테고리 구체화와 같은 예상치 못한 파생 효과는 향후 모델의 확장성과 AI 플랫폼의 경쟁력을 더욱 높일 중요한 단서가 되었습니다. 앞으로도 올리브영 AI 플랫폼은 방대한 상품·고객 데이터를 기반으로, 더 진화된 추천 경험과 더 정교한 개인화 전략을 통해 비즈니스 임팩트를 창출하는 AI 기술 고도화에 계속 도전할 예정입니다.

앞으로의 행보가 기대되는 가운데 많은 응원과 관심 부탁드립니다. 감사합니다.

ML추천Language Model
올리브영 테크 블로그 작성 올리브영 사용자 행동 데이터로 학습한 상품 유사도 언어 모델: 전통적 속성 기반 추천을 넘어선 의미론적 유사도 모델링
🐈
안일호 |
Data Scientist
여러가지 다양한 문제를 ML로 풀고 있어요 :)