e-CLIP: 네이버쇼핑의 멀티모달 사전학습 모델

t.k.woo
네이버 쇼핑 개발 블로그
19 min readSep 6, 2022

쇼핑의, 쇼핑에 의한, 쇼핑을 위한 사전학습 모델을 소개합니다.

요즘, 물건을 사고 싶을 때 어디에서 검색하세요?

저도 그렇지만 많은 분들께서 네이버에서 검색한 후 가격대를 확인하고 구매합니다. 네이버로 들어오는 검색어 중 쇼핑으로 유입하는 비율이 높다보니 최근 몇년동안 자연스럽게 쇼핑 관련 검색어와 상품의 데이터가 급증했습니다.

어느덧 네이버는 15억개의 상품정보를 다루고 처리하며 운영하고 있습니다. 이 데이터를 바탕으로 높은 품질의 쇼핑검색 경험을 위해 동일 상품에 대한 가격비교를 꾸준히 운영하고 있고 사랑받는 서비스가 되고 있다고 생각합니다.

[네이버쇼핑의 다양한 사용 형태] Query-based search: 검색어 기반 상품 탐색. Filter-based search: 상품 속성기반 검색. Price Comparison: 여러판매자에 대한 동일상품 가격비교.

사용자의 유입이 늘어난 만큼 서비스 추가 기능에 대한 요구도 점차 늘어나고 있습니다.

  • 상품의 카테고리 분류
  • 상품 속성 추출
  • 상품 옵션 인식
  • 동일 상품 매칭과 동일 상품 군집 자동화
  • 성인 상품 등 부적절한 컨텐츠 제거
  • 유사상품, 관심상품 추천

이전까지는 머신러닝 모델로 풀 수 있는 문제의 수가 적어 각 문제마다 모델을 새로 만드는 것이 부담이 되지 않았습니다. 하지만 최근 서비스가 고도화 될 수록 풀어야하는 문제가 많아졌고 엔지니어 한 명이 여러 모델을 처음부터 만들어가야하는 것이 점차 큰 부담으로 다가오기 시작했습니다.

최신의 컴퓨터비전, 자연어처리 분야에서는 저희와 같은 문제를 해결하기 위해 사전 훈련된 네트워크(pretrained model)를 사용한 전이학습(transfer learning) 기법을 사용합니다. 이 방법은 “충분히 크고 일반적인 데이터셋을 이용해 잘 훈련된 모델을 만든다면 그 모델은 데이터의 일반적인 경향을 가지고 있다” 라는 가정에서 시작합니다. 분야를 가리지 않고 성공적으로 머신러닝 모델의 성능을 끌어올리는 결정적인 역할을 하고 있다는 것이 NeurIPS, CVPR, EMNLP 등 저명한 국제 학술대회에서 증명되고 있습니다.

NAVER Commerce AI 에서도 사전학습된 모델을 만든다면 각각의 세부문제의 성능을 전반적으로 향상시키는 성과를 낼 수 있을 것이라 생각했습니다. 온라인 쇼핑만의 일반성을 잘 나타낼 수 있도록 쇼핑 데이터를 사용한 사전학습 방법인 e-CLIP 을 제안하고 사전학습 모델을 사용해 5개의 세부 문제(downstream task)에서 성능이 향상되는 것을 보였습니다. 제안한 방법은 정보, 지식관리 방법론을 다루는 CIKM 2022 에 게재가 확정되어 10월에 발표될 예정입니다.

e-CLIP 이 필요한 이유

앞서 말씀드렸듯이 쇼핑에는 상품정보를 풍부하게 사용할 수 있도록 다양한 세부문제를 해결하고 있습니다. (논문에서는 downstream task 라고 부릅니다.) 주로 구매자가 원하는 상품 / 원하지 않는 상품을 빠르게 필터링 할 수 있는 기능을 만드는 것을 목표로합니다. 적용되는 과정을 보기 위해서는 아래 네이버쇼핑 전체 시스템 구조를 참고해주세요.

[네이버 쇼핑의 시스템 구조도] 구매자는 검색시스템을 통해 상품을 조회, 판매자는 상품정보를 등록하면 자체 구축한 데이터 관리 플랫품을 통해 분산데이터베이스에 반영된다. 이렇게 생성된 데이터들의 정보를 더 풍부하게 사용할 수 있도록 머신러닝 모델들을 적용하고 있다.

각 세부문제마다 데이터 전처리, ML 모델링, 서빙을 모두 완료해야 비로소 서비스에 적용할 수 있습니다. 네이버쇼핑은 매우 큰 데이터를 다루고 있기 때문에 각각의 모델을 관리하는 것이 매우 번거로운 일입니다.

따라서 만들어야할 문제의 단계를 줄일 수 있다면 개발과 유지보수 시간을 크게 단축시킬 수 있습니다. 잘 만들어진 사전학습 모델을 이용하면 세부 문제에 대한 데이터셋(fine-tuning dataset) 구축 시간을 줄이는 것과 모델 관리 방법을 통일 할 수 있다는 장점이 있기 때문에 저희 팀에서는 Unified model 를 만드는 것이 매우 중요한 업무라고 모두 공감했습니다.

또한 가지고 있는 대부분의 데이터는 사람이 생각하는 추상적인 의미(label)가 할당되어 있지 않기 때문에 수 많은 unlabeled 데이터를 어떻게하면 잘 활용해야할 수 있을지 수년간 고민해오고 있었습니다. 이 문제들을 해결하기 위해 label이 필요없는 사전학습 모델을 사용하려는 시도를 했고 OpenAI 에서 제안한 CLIP 을 기반으로한 e-commerce CLIP, e-CLIP 을 만들어낼 수 있었습니다.

사전학습 모델

일반적으로 사전학습 모델은 영상이면 영상 자체의, 자연어라면 자연어 자체의 단일 모달리티에 대한 사전정보를 학습하는 것을 목표로 합니다. 현재의 사전학습은 label 이 없는 대규모 데이터를 효율적으로 학습할 수 있도록 supervision 정보로 자기자신 데이터를 사용합니다. 이를 self-supervised learning 이라고 합니다.

컴퓨터비전 분야에서는 “원본 이미지와 원본 이미지로부터 증강된 이미지는 동일하며 다른 이미지와 구분된다” 를 가정으로 학습합니다. 주로 contrastive learning 기법을 사용하며 관련된 연구로는 MoCo, SimCLR, BYOL, ViT 와 같은 방법들이 있습니다.

자연어처리 분야에서는 언어모델(언어라는 현상을 모델링, 문장 내 단어들이 나타날 수 있는 확률을 정의)을 학습하는 방법으로 사전학습을 수행합니다. 언어모델을 이해한 모델은 다른 세부적인 문제를 더 효과적으로 풀어낼 수 있다는 가정이 있으며 ELMo 부터 시작된 방법이 self-attention 모듈로 성능을 대폭 향상시켜오고 있습니다. Transformer, BERT, ELCTRA, RoBERTa, GPT 같은 방법들이 있으며 이 방법은 엔지니어 개인의 주장이긴 해도 사람 수준의 의식이 있다는 논란(사람 수준으로 언어능력이 좋아지고 있다는 의미)이 될 정도인 LaMDA 모델에서도 사용되고 있습니다. [기사]

이와 같이 각 도메인에서 사전학습 모델들이 큰 성능 향상을 이뤄오고 있지만 이 기술을 e-commerce 분야에 그대로 적용하기는 어렵습니다. 아래 상품을 예시로 살펴보겠습니다.

[상품 예시] 네이버쇼핑에서 “티셔츠” 를 검색하면 볼 수 있다.

상품명이 “여자 크롭티 탑 루즈핏 반팔” 로 되어 있습니다. 상품명을 살짝 변형해서 “반팔 탑 크롭티 루즈핏 여자” 로 변형하면 어떻게 느껴지시나요? 위 상품의 상품명을 대체할 정도로 자연스럽다고 느껴질 것 같습니다. 이처럼 상품 텍스트는 일반적으로 생각하는 문법 구조가 적용되지 않고 대체로 11단어 이내로 작성되는 짧은 문장이기 때문에 언어모델 기반의 자연어처리의 사전학습이 어렵습니다. 따라서 학습된 self attention 모델을 적용하더라도 쇼핑에서 큰 성능향상을 기대하긴 어렵습니다. (물론 self attention 기반 모델들이 많은 파라미터를 가지고 있고 약한 문맥은 존재하므로 약소하게 성능이 향상되긴 합니다.)

그렇다면 쇼핑에 알맞는 사전학습 방법은 어떤 것이 있을까요? 위 상품예시처럼 상품에는 다양한 정보가 함께 존재합니다. 상품이미지와 상품명이 가장 먼저 눈에 들어오네요. (제가 쇼핑할 때 가장 먼저 살펴보는 영역입니다.) 상품을 가장 잘 나타낼 수 있는 정보인 상품이미지와 상품명을 함께 학습하면 가장 좋겠다는 생각을 합니다. 또한 상품은 항상 이 데이터들이 짝(pair)으로 존재한다는 특징도 활용해야합니다.

2021년 1월 OpenAI 는 이미지-텍스트를 함께 학습하는 CLIP(Contrastive Language-Image Pre-training) 이라는 연구를 발표했습니다. 일반적인 이미지와 이미지를 설명하는 글(캡션) 을 사용해서 학습하는 방법으로 “쌍으로 이루어진 이미지와 텍스트는 같은 값을 가지며 다른 쌍과 구분되어야 한다” 의 가정을 사용합니다. 매우 직관적이면서도 간단한 이 방법은 zero-shot transfer 을 통해 pair 기반 사전학습 방법이 유효하게 동작한다는 것을 보여줬습니다. CLIP 의 동작방식이 유효하다는 것이 증명된 후 LiT, ALIGN 과 같은 multimodal 학습 방법이 차례로 발표되고 있습니다.

저희도 CLIP 기반 방법이 쇼핑 도메인에 아주 적합하다고 판단했습니다. 직관적이면서 간단한 방법을 유지하는 것과 우수한 성능이 주요했고 특히 두 도메인을 함께 학습하면서도 최종 모델로는 각각의 모달리티에 해당하는 모델들을 분리해서 독립적으로 사용할 수 있는 점, label 이 없는 다량의 이미지-텍스트 쌍 데이터를 사용해서 성능을 끌어올릴 수 있는 점을 큰 장점으로 생각했습니다.

여러 검토와 데이터 준비 끝에 CLIP 기반의 쇼핑에 알맞는 사전학습 모델을 만들기로 결정했습니다.

e-CLIP 의 동작 방식

네이버의 e-commerce CLIP, e-CLIP 은 이전에 설명드린 것처럼 CLIP 을 기반으로 합니다. CLIP은 동일한 이미지-텍스트 쌍의 정답을 1로, 정답이 아닌 것을 0으로 목표로하는 사전학습을 진행합니다. e-CLIP 도 비슷한데요, 3억개 이상의 상품 중 동일한 pair 가 다른 쌍들과 구분되도록 정답을 설정해서 학습합니다. 이렇게 학습하면 이미지, 텍스트 모델이 모든 상품에 대한 사전정보를 학습할 수 있다고 생각했습니다. 모델이 데이터를 경험하게 하는 것은 성능에 큰 영향을 줄 것이라 생각하고 모든 상품을 한 번 경험한 모델이라면 쇼핑 도메인을 일반화하는 모델이 될 것이라는 믿음이 있었습니다.

각 세부문제에서는 아래 그림처럼 사전학습된 e-CLIP 모델의 이미지 모델 / 텍스트 모델을 가지고 와서 추가로 세부문제에 맞도록 미세조정 학습(fine-tuning)합니다. 여러 세부문제를 가리지 않고 e-CLIP 모델 하나만을 이용해서 약간의 조정 작업만 거치면 우수한 성능의 결과를 얻을 수 있기 때문에 모델 개발시간을 상당히 단축시켜줄 수 있습니다. 실제로 개발 이후 팀에서 새로운 문제가 생성되면 일단 e-CLIP 을 사용해서 해결하고 있습니다.

[e-CLIP 의 구조도] CLIP 기반의 사전학습 방식에 쇼핑에 알맞는 테크닉을 추가했다. 사전학습된 이미지, 텍스트 모델은 Unified model 로써 각 세부문제에 적용된다.

e-CLIP 은 CLIP 기반이지만 쇼핑에 맞도록 학습 방법에 변형이 있었습니다.

CLIP 은 캡션데이터이기 때문에 대량의 데이터에서 동일한 데이터가 한번에 학습될 일이 잘 없는 편입니다. 반면 쇼핑은 사람의 선호가 명확하게 반영되는 분야이기 때문에 인기도가 높은 상품군의 경우 중복상품의 빈도가 굉장히 높은 편입니다. 중복상품을 어떻게 처리하면 효율적으로 학습할 수 있을까요? 쉽게 이해하기 위해 아래 예시를 살펴보겠습니다.

쇼핑데이터를 CLIP 학습 방법으로 표현해보면 아래와 같이 나타낼 수 있습니다.

[쇼핑데이터와 CLIP의 예시] I 는 이미지 임베딩, T는 텍스트 임베딩을 의미한다. 동일한 상품을 나타내는 쌍이 positive 로 학습하게 된다.

각 상품이미지에 해당하는 상품명에 맞는 pair 만 유사도가 높도록 $I_i=T_i$ 일 때만 양의 값을 가지게 학습합니다.

미니 배치를 구성할 때 서로 다른 상품들만 선택되면 CLIP loss 를 적용하기 쉽습니다. 하지만 쇼핑에서는 같은 상품이더라도 다양한 판매자가 다른 이름으로 상품을 등록하는 경우가 많은 비중을 차지합니다. 같은 아이폰 13 을 판매하더라도 판매자에 따라 Apple 아이폰 13 미니 128GB 가 될 수도 있고 아이폰13 미니 128GB MLK13KH/A 로 설정할 수 있습니다.

[아이폰13 미니와 e-CLIP 예시] 실질적으로 동일한 상품이지만 상품명, 상품이미지가 달라 중복처리를 위해 동일 상품을 인식해야할 필요가 있다.

미니 배치내에 상품이 중복되는 경우 동일한 상품이지만 index 가 달라 CLIP 기반 방법에서는 이런 케이스를 서로 다른 label (=negative) 로 판단합니다. 자연스럽게 pre-training 성능이 저하되는 문제가 발생합니다.

쇼핑 도메인을 잘 학습하기 위해서 동일한 상품을 잘 반영하는 것이 중요합니다. 위 그림에서 $I_2$$T_2$$T_N$ 과 모두 유사도가 높게 나오도록 디자인해야 정확하게 쇼핑 도메인을 반영하는 것이겠죠.

따라서 저희는 데이터셋 내의 동일상품을 인식하고 해당 샘플들이 배치내에 동시에 등장할 경우 등장하는 수 만큼 확률을 동등하게 나누어서 soft label 을 구성합니다. 예를 들어 배치내에 동일상품 ID 값을 가지는 상품이 4개가 등장할 경우 각 이미지-텍스트 임베딩 쌍에 0.25씩 label 이 할당됩니다. 동일한 상품ID 는 기존에 최저가 비교를 위한 동일 상품 매칭모델로부터 자동으로 생성되는 ID 를 사용했습니다.

또한 동일 상품 pair 인 positive pair 와 서로 동일하지 않은 pair 인 negative pair 를 구성하는 방법에도 일부 변형이 있었습니다. positive, negative sample 들을 사용하는 constrative learning 은 negative pair 의 경우의 수가 훨씬 많기 때문에 negative pair 들의 품질에 따라 성능의 영향을 크게 받습니다. 수억개 이상의 데이터에서 배치를 구성하면 일반적으로는 서로 큰 연관이 없는 데이터들이 주로 선택됩니다. 모델입장에서는 너무 쉬운 negative sample 들만 선택되는 것이죠. 우리가 수학문제를 풀 때 차근차근 교과서부터 풀어나가듯이 쉬운 샘플은 학습초기에 모델이 수렴할 수 있도록 돕습니다. 하지만 어느정도 문제들을 배우고 나면 더 어려운 문제를 풀어야 한 단계 더 성장할 수 있게 됩니다. 쇼핑에서는 카테고리가 그 역할을 수행할 수 있다고 생각했습니다. 서로 다른 카테고리에 속한 상품들 사이의 관계는 negative 가 명확하여 구분이 쉬운 문제이지만 동일 카테고리 내의 상품들은 모델입장에서 어려운 문제로 느껴집니다.

예를 들어 위 그림에서 사과복숭아 상품이미지를 보면 상대적으로 사과아이폰을 보다 비슷하게 느껴집니다. 모델 입장에서 더 어려운 negative pair 가 되는 것이죠. 따라서 e-CLIP은 학습이 어느정도 진행되었을 때 카테고리 기반의 negative sample 을 뽑아서 배치를 구성하는 방법을 추가했습니다. Contrastive learning 에서 이 방법을 hard negative sampling 이라고 부릅니다.

e-CLIP 의 pre-training 방법을 정리하자면,

  1. 상품 이미지와 상품명의 동일함을 기준으로하는 contrastive learning
  2. 동일 상품 ID 를 사용한 soft labeling
  3. (Optional) 카테고리 기반의 hard negative sampling

으로 말씀드릴 수 있습니다.

💡 [참고] e-CLIP 의 구현 방법

NAVER Commerce AI 에서는 NVIDIA A100, V100 등 우수한 성능의 GPU 장비를 사용하고 있지만 수억개의 데이터를 학습하기위해 컴퓨팅 자원의 한계를 빈번히 느꼈습니다. 한계를 극복하고자 gradient accumulation 기반의 multi-stream accumulation, batch size scheduler, floating point 변경 등 다양한 엔지니어링 실험을 함께 수행했습니다. 자세한 내용은 논문을 참고해주세요!

Downstream task 의 평가

Pre-training 을 통해 쇼핑 도메인이 학습된 e-CLIP 모델을 이용해 각 세부문제에 적용할 수 있습니다. e-CLIP 평가를 위해 아래 5개의 downstream task 를 정했습니다.

  1. Product matching: 동일 상품 매칭
  2. Product clustering: 동일 상품 클러스터 생성
  3. Attribute extraction: 상품 속성 추출
  4. Category classification: 상품 카테고리 분류
  5. Adult product recognition: 성인 상품 탐지
Downstream task 예시들

5개의 문제 모두 온라인 쇼핑 경험에 직접 연관되는 핵심적인 문제들입니다. 동일 상품 매칭과 클러스터링은 최저가 가격비교, 상품 속성은 필터링 검색과 판매 옵션 인식, 상품 카테고리 분류는 기본적인 상품 정보로서의 역할과 필터링 검색, 성인 상품 탐지는 부적절한 상품의 노출 차단을 위해 사용되는 세부 문제들입니다.

성능 평가에서 가장 중요하게 증명하려고 했던 점은

  1. 여러 task 에서 e-CLIP 이 unified model 로 사용할 수 있을 정도의 성능향상이 있는가?
  2. Downstream task 의 데이터가 없을 때, task-specific data 로 모델 일부를 학습할 때, 전체 학습할 때 모두 성능이 향상되는가? 즉, task 를 풀어나가는 초기에 backbone 으로 사용할 수 있는 모델인가?
  3. 다른 pre-training 방법들보다 유의미한 성능 향상이 있는가?

였습니다.

1번 증명을 위해 쇼핑의 가장 중요한 5가지 downstream task 에 e-CLIP 을 적용했고 2번 증명을 위해 task 에서 zero-shot transfer, linear probe, fine-tuning 을 성능을 비교, 3번 증명을 위해 일반 텍스트에서 학습된 single modality pretraining(BERT), multi-modal model(CLIP, KELIP), 쇼핑 데이터로 학습된 최신 연구 모델(e-LiT) 의 성능 비교를 수행했습니다.

Task 가 5개인 만큼 상당히 많은 실험 결과가 나왔는데요, 네이버쇼핑의 핵심 기능인 동일 상품 매칭의 성능을 살펴볼까요?

e-CLIP 이 기존 방법보다 single modality 기준으로는 약 5~40%p, multi-modality 기준으로는 4~40%p 의 성능 향상이 있음을 확인할 수 있었습니다. 실험을 하면서 저도 e-CLIP 이 unified model 로써 다른 방법들 대비 쇼핑 문제를 풀기 위한 backbone 으로 사용할 수 있다는 확신도 이 때부터 생겼던 것 같습니다.

성인 상품 인식 실험에서도 뚜렷한 성능향상이 있었습니다. 성인 상품 인식 문제는은 동일 상품 매칭과 다르게 이미지를 구별해내는 문제이기 때문에 텍스트 모델 실험이 없고 영문으로 학습된 CLIP 과도 비교적 동일한 조건에서 비교실험을 할 수 있었습니다.

Downstream 데이터, 모델 환경을 가정할 수 있는 zero-shot, linear probe, finetuning 실험 모두 뚜렷한 성능 향상이 있었습니다. Zero-shot transfer 에서는 CLIP 에 비해 약 12%p, 전체 학습(finetuning)에 비해서는 4~5%p 높은 성능을 얻을 수 있었습니다.
한국어로 학습된 KELIP 에 비해서도 약 4~10%p 정도의 성능향상을 보였습니다. 쇼핑이라는 특정 환경에서의 멀티모달 사전학습 방법이 더 적합한 학습 방법이라는 것을 증명할 수 있었습니다. (더 자세한 실험 내용은 논문을 참고해주세요!)

[참고] Zero-shot multi-modal downstream task 를 어떻게 수행했을까?

CLIP 에서는 downstream task 를 평가할 때 single modality 만 평가해서 multi-modal downstream task 는 생소하게 느껴질 수 있습니다. 아래는 카테고리 분류의 zero-shot 예시입니다.

카테고리 분류의 zero-shot transfer 방법

카테고리에 해당하는 prompt 를 생성해서 텍스트 임베딩을 생성한 후, 입력 데이터(이미지, 텍스트) 임베딩의 평균과 유사도를 구하는 형태로 동작합니다.

앞으로,

e-CLIP 은 CIKM 2022 Applied Research Track 에 게재 예정입니다. 모든 리뷰어들이 공통적으로 “쇼핑 환경에 맞는 사전학습 구성 방법” 과 “쇼핑에 중요하면서 도메인 전체를 아우를 수 있는 downstream task 실험”, “잘 구성된 글과 모델 세부 설명” 에서 좋은 평가를 주셨고 한 번에 accept 될 수 있었습니다. (리부탈이 없는 것에 저자 모두 감격의 눈물을 흘렸습니다..)

순수 연구와는 다르게 서비스에 머신러닝을 적용할 때는 unseen data 가 없도록 만드는 것이 성능을 향상시키는 가장 빠른 길입니다. 하지만 서비스에서 label 기반 방법은 데이터에 불균형이 존재하기 때문에 지도학습 기반 방법은 unseen data 가 많이 생길 수 밖에 없죠. e-CLIP 은 상품 텍스트와 이미지를 이용한 self supervised learning 이기 때문에 모델이 모든 상품을 균등하게 학습할 수 있게 합니다. 따라서 상품 정보를 가장 잘 표현하는 모델을 만들었다고 말할 수 있습니다.

이제 네이버쇼핑은 어떤 task 가 들어와도 backbone 으로 사용할 수 있는 모델을 얻었다고 생각합니다. 앞으로 서비스 측면에서는 한국에서 생성되는 새로운 task 뿐만 아니라 네이버쇼핑의 해외진출을 위해 multilingual backbone 모델을 빠르게 만들려고 합니다. 연구적으로는 쇼핑에서 극심한 데이터 불균형과 노이즈가 함께 공존하는 문제를 겪고 있어서 이 문제를 e-CLIP 통해 해결해보려고 합니다.

정확하고, 빠르고, 쉽게 만들어가는 쇼핑 경험을 위해 달려 보겠습니다.
파이팅~!

연구의 부족한 점, 더 나아갈 방향에 대한 조언이 있으시다면 연락주세요. 환영합니다. 특히, “이거 내가 만들면 더 잘할 수 있겠는데~?” 를 매우 좋아합니다. 함께하실 분을 언제나 기다리고 있습니다!

논문 정보

e-CLIP: Large-Scale Vision-Language Representation Learning in E-commerce
, Wonyoung Shin, Jonghun Park, Taekang Woo, Yongwoo Cho, Kwangjin Oh, Hwanjun Song

--

--