뛰어난 고객 경험 제공 위한 셔터스톡 ‘디지털 트랜스포메이션’ (3)
상태바
뛰어난 고객 경험 제공 위한 셔터스톡 ‘디지털 트랜스포메이션’ (3)
  • 데이터넷
  • 승인 2020.03.21 09:00
  • 댓글 0
이 기사를 공유합니다

이미지·워드 임베딩 결합…새로운 콘텐츠 검색 결과 반영되지 않는 ‘콜드 스타트’ 문제 해결

[데이터넷] 2014년부터 디지털 트랜스포메이션을 추진한 셔터스톡은 현재 클라우드, 쿠버네티스 및 컨테이너 기술 등을 활용해 새로운 서비스들을 선보이고 뛰어난 고객 경험을 제공하고 있다. 그 외에도 독보적인 이미지 검색 기능, 컴퓨터 비전, API 등을 통해 전 세계 고객이 언제 어디서나 필요한 콘텐츠를 얻을 수 있도록 지원하고 있다. 본지에서는 6회에 걸쳐 셔터스톡의 IT 개발자들이 셔터스톡의 기술과 개발 과정을 추진한 과정을 연재한다. <편집자>

<연재 순서>

1. 셔터스톡의 디지털 트랜스포메이션 추진 이유 및 과정
2. 컴퓨터 비전과 딥러닝 기술 활용
3. 기술을 통해 인기 콘텐츠와 신규 콘텐츠 사이에 적절한 밸런스를 찾아 고객에게 제안하는 법
4. 어느 기업이나 API를 통해 셔터스톡과 콘텐츠 연계 가능
5. 프런트엔드 애플리케이션 통합 테스팅
6. 자체 이미지 편집 도구인 셔터스톡 에디터의 다중언어 지원 및 이미지 필터링 기능 개발 과정

피터 실비오(Peter Silvio) 셔터스톡 CTO
피터 실비오(Peter Silvio) 셔터스톡 CTO

셔터스톡 검색 팀은 쿼리에 대한 최고의 이미지를 제공하는데 주력하고 있다. 이를 위해 셔터스톡은 다운로드 등을 비롯한 고객의 행동 데이터를 활용해 특정 검색에 대한 이미지 퀄리티를 평가한다.

이러한 접근 방식은 사용자의 집단 지능을 활용하기 때문에 좋은 결과를 얻을 수 있지만 한 가지 단점이 있다. 기고자가 올리는 새로운 콘텐츠가 검색 결과에 반영되기가 어렵다는 점이다. 이를 콜드 스타트(cold start) 문제라고 한다.

최신 이미지는 과거 데이터가 없기 때문에 검색 결과의 상단에 노출되기 어려웠으며, 가장 많은 다운로드가 있는 이미지들이 상단에 자리하기 때문에 인기 있는 이미지들도 변하지 않았다. 이는 새로운 콘텐츠를 올리고 찾는 기고자들과 고객 모두에 영향을 미쳤다.

기고자들은 사용자에게 새로운 콘텐츠를 보여줄 수 없었고, 고객은 그들이 찾는 완벽한 이미지가 이미 셔터스톡 컬렉션에 있더라도 이를 찾기 어려웠다. 이러한 콜드 스타트 문제를 어떻게 해결할 수 있을까?

한 가지 방법은 행동 데이터를 활용하지 않고 키워드나 설명 등 기고자가 제공한 데이터를 기반으로 검색하는 것이다. 그러나 기고자 제공 데이터는 이미지를 불러오는데 좋은 신호가 될 수 있지만, 키워드의 퀄리티를 서로 비교할 수 없기 때문에 이미지 순위를 매기는 데는 그다지 유용하지 않다. 결합한 모든 메타데이터보다 이미지에 대한 정보가 많은 데이터 소스가 하나 있는데, 바로 이미지 그 자체이다.

이미지 임베딩 활용

지난 몇 년 동안 딥러닝의 진보와 라벨 데이터의 폭발적인 증가로 인해 머신러닝의 이미지 이해도는 많이 발전했다. 이 중 상당수가 ‘이미지넷 대용량 영상 인식 대회(ILSVRC)’에서 예시한 대규모 이미지 분류에 중점을 두고 있다. 심층 신경망(DNN)은 현재 1000개의 클래스에서 3.57%의 Top5 정확성(모델이 제시하는 상위 5가지 답변 중 하나가 기대 답변과 일치)을 달성하고 있다.

사람은 5.1% 정확도를 보인다. 비전문가보다 더 정확하게 이미지를 분류할 수 있는 것은 좋은 일이지만, 이는 자동 키워드 제안 도구 외에 별다른 활용 방안이 없었다.

그러나 버클리 비전 및 학습 센터의 ‘일반 시각 인식을 위한 심층 컨볼루션 활성화 기능(DeCAF: A Deep Convolutional Activation Feature for Generic Visual Recognition)’ 연구는 심층신경망의 IR(Intermediate Representation)이 다양한 머신러닝 작업의 인풋으로 잘 수행된다는 것을 보여줬다. 또한 이러한 이미지 임베딩 등의 표현이 간결하며 시각적 정보와 의미적(semantic) 정보를 모두 포함하고 있다.

셔터스톡은 리버스 이미지 검색에 이미지 임베딩을 활용하고 있다. 이러한 리버스 이미지 검색은 이미지로 검색 시 IR이 잘 활용된다는 것을 보여준다.

콜드 스타트 문제를 해결하려면, 두 개의 이미지 간의 관계가 아닌 쿼리와 이미지 간의 관계가 필요하다. 로난 콜로버트(Ronan Collobert) 등의 2011년 논문인 '스크레치에서의 자연어 처리(Natural Language Processing (almost) from Scratch)'가 여기에 도움이 된다. 논문은 신경망 네트워크를 활용해 단어의 밀도 있는 벡터 표현을 만들 수 있다는 것을 보여준다. 이러한 워드 임베딩 등의 표현은 다양한 자연어 처리 작업에 활용될 수 있으며 우수한 성능을 나타낸다. 이미지와 워드 임베딩 접근은 유사한 작업을 수행한다. 둘 다 사람이 이해할 수 있는 정보를 가져와 밀도가 높은 벡터 공간에 넣어 유사한 정보가 벡터 공간에서 밀접하도록 한다.

콜드 스타트 문제 해결을 위해서는 이미지와 워드 임베딩을 결합하는 것이 자연스럽다. 셔터스톡은 이미지와 쿼리가 동일한 임베딩 공간에 있어 검색시 이미지를 바로 쿼리와 비교할 수 있길 원했다. 다양한 방식을 비교한 결과, 최종적으로 보다 간단하고 직접적인 방식을 활용하기로 했다.

접근 방식

셔터스톡 모델은 신경망 이미지 임베더와 신경망 쿼리 임베더라는 두 파트로 이뤄져 있다. 이미지 임베더를 훈련시키기 위해 셔터스톡은 이미지를 수천 개의 클래스 중 하나로 분류하는 도메인별 심층신경망 분류를 시작했다.

가장 인기 있는 검색어와 해당 검색어로 다운로드한 이미지를 매칭해서 데이터 세트를 위한 훈련 쌍을 만들었다. 그런 다음 이 모델을 활용해 앞서 설명한대로 이미지를 삽입했다.

접근 방식의 두 번째 파트는 포지티브와 네거티브 쿼리 및 이미지 쌍으로 훈련된 신경망 언어 모델을 활용한다. 포지티브 쌍은 쿼리와 고객이 해당 쿼리에 대해 선택한 이미지들을 일치시켜 생성된다. 이는 이미지 임베더를 학습하는데 사용하는 데이터의 상위 집합이다. 이전 세트에 수천 개의 쿼리가 있었다면, 이 세트는 수백만 개의 쿼리를 포함한다.

네거티브 쌍은 쿼리와 이미지를 무작위로 일치시켜 생성된다. 포지티브 및 네거티브 쌍의 차이점을 최대화하는 손실함수(loss function)를 사용해서 언어 임베더를 훈련한다.

훈련된 모델은 멀티모달 스페이스(multimodal space)라는 동일한 공간에 이미지와 쿼리를 넣어 이미지와 텍스트를 직접 비교할 수 있게 한다. 이는 오직 모델만 활용해 검색할 수 있도록 한다. 쿼리를 받으면 이를 멀티모달 스페이스의 한 지점으로 인코딩하고 셔터스톡 라이브러리 내에서 해당 지점에 가장 가까운 이미지를 찾는다.

콜드 스타트 결과

접근 방식의 테스트 방안으로는 기존 순번 방식과 조인트 임베딩 순번 방식을 통해 10만 건의 가장 인기 있는 검색에 대해 셔터스톡의 모든 이미지의 순위를 매겼다. 또한, 각 쿼리의 상위 100개 및 상위 20개 검색 결과도 고려했다. 효과적인 콜드 스타트 문제 해결을 측정하기 위해 1개월 이내 새로운 이미지와 3개월 이내의 새로운 이미지의 평균 퍼센트를 계산했다.

아래 결과에서 볼 수 있듯이, 조인트 임베딩 순번 방식은 기존 방식보다 3개월 이내 새로운 이미지를 2배 이상 검색에 노출한다. 그리고 1개월 이내의 새로운 이미지를 더 많이 노출하고 있다.

<표 1> 10만 건의 인기 있는 쿼리에 대한 기준 순번 방식과 조인트 임베딩 방식의 새 이미지 비율 비교

순번 방식 상위 100 결과 중 1개월 이내 새로운 이미지 상위 100 결과 중 3개월 이내 새로운 이미지 상위 20 결과 중 1개월 이내 새로운 이미지 상위 20 결과 중 3개월 이내 새로운 이미지
기존 0.72% 4.71% 0.28% 4.02%
조인트 임베딩 2.68% 9.6% 2.59% 9.35%

이 결과들은 10만 개의 쿼리를 각각 동등하게 고려하지만, 가장 인기 있는 쿼리는 10만 번째의 인기 쿼리보다 약 1000배 더 검색된다. 고객에게 보일 이미지를 올바르게 나타내려면, 각 쿼리의 실행 횟수를 결과에 고려해야 한다.

기존 순번 방식은 더 많은 행동 데이터가 있는 이미지를 선호하고 자주 검색되는 쿼리에 행동 데이터가 더 수집될 가능성이 크기 때문에, 이러한 쿼리에 대해 더 큰 차이점이 나타날 것으로 기대했다. 실제로 각 쿼리의 실행 횟수로 메트릭을 정규화(normalize)했을 때, 보다 큰 차이점을 확인할 수 있었다.

<표 2> 10만 건의 인기 있는 쿼리에 대한 기존 순번 방식과 조인트 임베딩 방식의 쿼리 인기를 고려한 새 이미지 비율 비교

순번 방식 상위 100 결과 중 1개월 이내 새로운 이미지 상위 100 결과 중 3개월 이내 새로운 이미지 상위 20 결과 중 1개월 이내 새로운 이미지 상위 20 결과 중 3개월 이내 새로운 이미지
기존 0.47% 4.33% 0.21% 3.07%
조인트 임베딩 2.63% 9.36% 2.54% 9.25%

조인트 임베딩 순번 방식은 기존 순번 방식보다 새로운 이미지를 더 노출한다. 이 차이는 기존 순번이 행동 데이터가 더 많은 예전 이미지를 선호하기 때문에, 인기 있는 쿼리에서 더욱 두드러졌다.

결론 및 향후 방향

조인트 임베딩 순번 방식의 결과는 매우 밝다. 보다 많은 새로운 이미지를 노출하며 더 적절한 결과를 제공한다. 그러나 조인트 임베딩도 순번 방식으로 활용할 때 몇 가지 부족한 점들이 있다.

첫 번째로는 결과의 다양성 부재이다. 쿼리를 할 때 모델은 벡터 스페이스 내 적합한 포인트를 결정한다. 그런 다음 그 포인트의 근접성에 따라 이미지를 분류한다. 불행히도 이는 종종 한 쿼리에 대한 모든 결과가 시각적으로 유사하게 만든다.

다양성의 결여는 텍스트에서 이미지 검색 문제의 중요한 사실을 드러낸다. 이미지를 단어로 표현하기는 어렵고, 쿼리에는 여러 가지 의미가 있다는 점이다. 여기에 대한 여러 가지 해결 방안이 있어 향후 작업에서 살펴볼 예정이다.

셔터스톡은 순번을 매길 때 조인트 임베딩 방식이 콜드 스타트 문제를 해결한 것을 확인할 수 있었다. 이는 단지 시작에 불과하며, 조인트 임베딩의 향후 활용 방안들이 새로운 기능을 가져올 것으로 생각한다. 조인트 임베딩 방식으로 번역, 자동 쿼리 확장, 고급 픽셀 검색, 순번 오류 감지 및 이미지 스타일 개인화를 모두 향상할 수 있다.



댓글삭제
삭제한 댓글은 다시 복구할 수 없습니다.
그래도 삭제하시겠습니까?
댓글 0
댓글쓰기
계정을 선택하시면 로그인·계정인증을 통해
댓글을 남기실 수 있습니다.