버즈니 AI LAB 리서치엔지니어 이한결

[컴퓨터월드] 1. 개요

버즈니가 운영 중인 ‘홈쇼핑모아’는 여러 홈쇼핑 채널의 상품을 한 곳에서 비교하고 구매할 수 있는 모바일 홈쇼핑 플랫폼이다. 대부분의 이커머스 서비스에 꼭 필요한 ‘상품 카테고리 분류기’는 검색 및 상품 카테고리 필터 기능과 밀접한 연관이 있다. 검색 시스템은 사용자의 쿼리와 가장 어울리는 상품을 찾아내고, 상품 카테고리 정보를 활용해 상품을 관련 카테고리별로 정리해 제공한다. 사용자들은 제공된 상품 리스트에서 쉽게 원하는 상품을 찾을 수 있다.

홈쇼핑모아 앱에는 상품 카테고리를 기반으로 한 검색 엔진과 추천 시스템이 존재한다. 두 시스템의 성능이 담보되기 위해서는 정확한 상품 카테고리 분류기가 필요하다. 정확한 상품 필터 기능은 쉽고 정확하게 상품을 찾도록 해줘 사용자 경험을 향상시켜 사용자의 구매를 높이고, 검색과 추천 시스템의 성능을 개선해 플랫폼 전반적인 성능을 향상시키는 데 중요한 역할을 한다.

본 기고에서는 버즈니에서 사용하고 있는 카테고리 분류기에 대해 자세히 소개하고자 한다.

[그림1] 홈쇼핑모아 카테고리 검색/필터
[그림1] 홈쇼핑모아 카테고리 검색/필터

2. 상품 카테고리 분류기 - 데이터

홈쇼핑모아에는 다양한 홈쇼핑사의 수많은 상품이 존재한다. 이들 홈쇼핑사의 카테고리 체계는 각기 달라, 카테고리 분류기의 훈련 데이터로 바로 사용하기 어려운 점이 있다. 이 때문에 모델 훈련에 앞서 각 홈쇼핑사에서 받은 카테고리 체계를 홈쇼핑모아의 카테고리 체계로 변환할 필요성이 있다.

예를 들어 ‘듀오 하이라이트 & 쉐딩, 블러셔’라는 상품을 홈쇼핑사 A의 경우 ‘화장품/미용;색조메이크업;하이라이터/쉐이딩’으로 구별하고, 다른 B 홈쇼핑사의 경우 ‘뷰티;메이크업;치크/하이라이터’로 구별한다. 다양한 홈쇼핑 채널들이 서로 다른 카테고리 체계를 가지고 있으므로, 이를 홈쇼핑모아 카테고리 체계로 변환해야 상품 분류기가 일관성 있게 카테고리 체계를 학습할 수 있다.

홈쇼핑모아의 카테고리는 <대분류-중분류-소분류-세부분류>의 4단계의 카테고리를 사용하고 있다. 예를 들면 ‘의류;여성의류;원피스;나시 원피스’와 같은 형식으로 구성된다. 홈쇼핑모아의 카테고리 체계와 다른 카테고리 체계를 가진 홈쇼핑사의 상품 데이터 통합을 위해, 기존에 학습된 홈쇼핑모아 카테고리 분류기를 기준으로 다른 홈쇼핑사에서 모은 데이터를 추론해 해당 홈쇼핑사 카테고리를 기준으로 가장 많이 나온 카테고리를 선택한다. 이때 아래와 같이 카테고리별 엔트로피(불순도)를 고려해, 불순도가 높은 카테고리는 변환이 불가능해 훈련 데이터에서 제외한다.

[그림2] 서로 다른 카테고리 체계 맵핑
[그림2] 서로 다른 카테고리 체계 맵핑

기존에 훈련된 3차 카테고리 분류기를 4차 카테고리 분류기로 확장하기 위해서는 홈쇼핑모아 4차 체계에 맞는 데이터를 확보해야한다. 아래의 두 단계를 통해 psuedo labeling을 진행했다.

1) ChatGPT에 아래와 같은 prompt로 질문해 검색어를 확보
2) 만들어진 검색어를 기준으로 다양한 쇼핑 플랫폼에서 검색. 검색돼 나온 상품을 훈련데이터로 사용한다.

[그림3] ChatGPT를 활용한 검색어 생성
[그림3] ChatGPT를 활용한 검색어 생성
[그림4] 생성된 검색어를 활용해 상품 제목 확보
[그림4] 생성된 검색어를 활용해 상품 제목 확보

3. 상품 카테고리 분류기 - 모델

이커머스 카테고리 분류기의 훈련 데이터는 보통 롱테일(Long-Tail) 분포를 하고 있다. 카테고리 간 훈련 데이터의 양이 균형적이지 못하다. 일부 카테고리에 대한 데이터가 충분하지 않고, 이러한 카테고리들은 분류기가 정확하게 분류하는 데 어려움을 겪게 만든다. 또 하나의 상품이 동시에 여러 카테고리에 속하게 되는 문제점도 존재한다.

예를 들어 ‘나이키양말 크루삭스 스포츠 패션 헬스 양말 스우시 양말’의 경우 ‘스포츠/레저;스포츠 잡화;기타 스포츠 액세서리;양말’, ‘잡화;패션잡화;양말;스포츠양말’, ‘잡화;패션잡화;양말;기능성양말’ 등 어느 하나의 카테고리에 속해도 말이 된다.

[그림5] 롱테일 분포
[그림5] 롱테일 분포

실제로 서비스 관점에 따라 카테고리의 분류가 달라지기도 한다. 하지만 multi-class classifier로 어느 하나로 귀결짓는 분류기 학습의 문제로 풀게 되면 입력은 동일하지만, 매번 다른 카테고리를 학습하게 되어 학습에 방해가 될 수 있다. 따라서 multi label을 지원하는 모델을 활용해야 한다.

Binary Relevance 모델의 경우 각 레이블마다 이진 분류 문제(binary classification)를 해결하는 모델을 생성한다. 예를 들어 데이터가 [고양이, 개, 새] 세 가지 레이블 중 하나 이상을 가질 수 있다면, 레이블마다 이진 분류 모델을 생성해 이진 분류 문제를 푸는 것이다.

이렇게 생성된 이진 분류 모델은 각각의 레이블이 존재하는지 여부를 판단하는 데 사용된다. 그런데 이러한 이진 분류 모델은 각 레이블마다 생성되므로, 각 레이블 사이의 상호작용을 고려하지 않는다.

따라서 이러한 모델은 레이블 간의 의존성이 없거나 상호작용이 적을 때 가장 잘 작동한다. 또한 기존의 데이터셋에서 어떤 label을 negative로 취급할지도 결정해야 하는 문제가 존재한다.

[그림6] multi-class vs multi-label
[그림6] multi-class vs multi-label

그러므로 multi label 세팅에서 실제 데이터가 positive unlabeled인 상황인 것과 레이블 간의 의존성을 고려하는 모델을 사용해야 좋은 분류기를 개발할 수 있다.

버즈니에서는 PECOS(Predictions for Enormous and Correlated Output Spaces) 모델을 활용해 카테고리 분류기 문제를 풀고 있다.

PECOS는 레이블 간의 상관관계를 고려하고, 트리 구조로 레이블을 분할하고 병합하는 방식으로 예측을 수행한다는 점에서 BR모델과는 차이가 있다. 구체적으로 레이블간의 유사도를 기준으로 hierarchical clustering을 수행하고 만들어진 트리를 기반으로 각 노드에서 개별 로컬 분류기를 학습하고, 예측을 수행한다.

[그림7] PECOS 레이블 트리
[그림7] PECOS 레이블 트리

PECOS는 positive unlabeled 상황과 long tail class의 데이터가 적은 상황에서 효과적이다. 레이블의 상관관계를 활용하기 때문에 상위 노드에서 ‘스포츠/레저;스포츠 잡화;기타 스포츠 액세서리;양말’, ‘잡화;패션잡화;양말;스포츠양말’, ‘잡화;패션잡화;양말;기능성양말’와 같은 비슷한 입력을 가지는 다른 클래스의 샘플들이 하나의 노드로 묶이게 된다.

하위 노드에서 데이터의 특성에 따라 추가적인 구별이 이루어지기 때문에 binary relevance 모델과는 달리 negative sample을 지정할 필요가 없다. partial postive label만으로도 효과적으로 상품 카테고리를 분류할 수 있다. 또 일부 데이터가 부족한 클래스에 대해서도 데이터가 많은 클래스의 샘플들로부터 배운 특성이 전이(transfer)되는 효과가 있어 데이터 희소성에 효과적인 모델이다.


4. Transformer 모델과의 결합

PECOS의 또 다른 장점으로는 TF-IDF으로부터 만들어진 sparse feature와 transformer계열의 dense embedding을 동시에 사용할 수 있다는 점이다. 로컬 분류기를 간단히 dense weight와 sparse weight로 구별을 두도록 학습하면 된다. 버즈니에서는 SetFit 방법으로 학습한 transformer backbone을 로컬 분류기로 사용해 PECOS의 성능을 향상시켰다.

[그림8] SETFIT 훈련과정
[그림8] SETFIT 훈련과정

SetFit은 Sentence Transformers와 함께하는 few-shot 학습을 위한 프레임워크다. 이는 contrastive learning을 사용해 적은 수의 라벨링된 텍스트 쌍에 대해 Sentence Transformer 모델을 미세 조정한 다음, 해당 모델이 생성한 임베딩에 대해 분류기 헤드를 학습한다. 다른 학습 방법과는 달리 적은 수의 레이블만으로도 효과적인 임베딩을 구축할 수 있다는 장점이 있다.

카테고리 라벨로 학습한 임베딩으로 클러스터링을 진행하게 되면, <그림 9>와 같이 굉장히 서로 다른 제목을 가진 상품의 경우에도 가까운 공간으로 묶어줄 수 있다.

[그림9] (왼쪽부터) ‘마비스 호랑이 선물 세트’, ‘Life Extension, 치약, 천연 민트향, 113.4g(4oz)’

Setfit의 fine-tuning은 모델의 작은 일부 매개변수만 업데이트하기 때문에 적은 리소스로도 빠르게 훈련할 수 있다. 적은 수의 샘플로 대조학습을 진행하기 때문에 원래의 가중치를 대부분 보존해 overfitting과 catastrophic forgetting의 위험을 줄일 수 있다. SetFit은 RAFT 리더보드에서도 훌륭한 결과를 보이는 finetuning 방법론이다.

[그림10] RAFT리더보드
[그림10] RAFT리더보드

5. 결론

본 기고에서는 이커머스 상품 카테고리 분류기 구축 문제를 소개했다. 카테고리 분류기 문제를 해결하기 위해서는 long-tail 분포와 multi-label classification 문제를 고려한 모델 학습이 필요하다.

버즈니에서는 PECOS 모델을 사용해 이러한 문제를 효과적으로 해결할 수 있었다. 또한, transformer 모델과의 결합을 통해 sparse feature와 dense embedding을 동시에 사용하는 PECOS 모델을 구축해 카테고리 분류기의 성능을 높일 수 있었다.

버즈니는 현재 기존 카테고리 체계에 속하지 않는 새로운 카테고리의 상품이 등장했을 때 유연하게 대처할 수 있는 모델 개발 등 더욱 발전된 카테고리 분류 기술을 구축하기 위해 노력하고 있다.

저작권자 © 컴퓨터월드 무단전재 및 재배포 금지