

Velog를 작성하기 시작하면서 논문리뷰를 주기적으로 해야겠다라고 생각을 해왔는데 첫번째 논문은 나에게 있어 의미있는 논문으로 하고 싶었다. 선택한 논문은 내가 처음으로 접한 추천시스템 논문이다. Pinterest의 연구원 Stephanie deWat, Jifan Ou가 작성한 "Finding Uses Who Act Alike: Transfer Learning for Expanding Advertiser Audiences"은 KDD 2019에 발간되었다. 이 논문은 모델이나 구조적으로 새롭다기보다 기존에 구축된 플랫폼을 어떻게 활용할 수 있을지의 관점에서 많은 인사이트를 얻을 수 있는 논문이다.
기존의 광고 타겟팅의 경우에는 특정 키워드를 검색하거나 특정 주제에 대해 관심을 표시한 유저에게 광고를 제공하는 방식으로 진행되었다. 이 때, 유저에 대해 광고주가 타겟팅 기준을 마련하여 광고를 송출하였다. 본 논문에서는 기존의 방식을 넘어 타겟 고객의 범위를 넓히고 휴리스틱한 기준이 아닌 데이터 기반의 모델링을 통해 타겟을 선정하는 방식을 제언하였다.
광고주가 광고 플랫폼에 본인의 고객 리스트인 시드 리스트를 제공하고 플랫폼은 플랫폼 유저들을 기반으로 비슷한 행동 양상의 유저들을 찾는 방법이다. 해당 방식의 경우 광고주가 광고 타겟을 고르는데 까지 신경을 쓰지 않아도 되는 장점이 있으나 몇 가지 고려해야 할 부분이 있다.
본 논문에서 제언하는 모델의 경우, 유저들에 대한 embedding을 생성하여 이를 기반으로 유사도를 측정하는 방식을 사용한다. 그리고선 활동 로그를 기반으로 학습된 모델을 특정 광고주에 대해 transfer learning을 적용하여 특정 광고주에 맞는 유저 리스트를 제공하게 된다. 또한 해당 모델의 경우 경량화된 feature selection 단계를 사용하여 새로운 광고주에 대해 빠른 속도로 적용이 가능하다. Embedding-Based Model과 Classifer-Based Model을 앙상블하여 Blended Model을 개발하는 방식에 대해서도 설명해준다.
전체적인 과정을 살펴보면, User Embedding Model을 활용하여 핀터레스트 상의 방대한 활동 로그를 embedding한다. 활용하는 User Embedding Model은 StarSpace 방식에서 유저와 pin 토픽을 같은 벡터 공간에서 embedding한다는 아이디어에 착안하여 진행하게 된다. 해당 모델은 과거에 관심을 갖던 토픽과 관심 분야가 유사할 것이고 유사한 토픽에 관심을 보이는 두 유저는 유사할 것이라는 가정 하에 학슴을 진행하게 된다.
유저의 인구통계학적 특징이나 유저가 관심을 갖는 토픽과 같은 이산형 피처의 경우, embedding을 위해 정수형 ID값에 매핑을 한다. 또한 길이가 다양한 embedding에 대해 집계하기 위해 pooling layer을 사용하게 된다. 과거 활동 로그나 pin impression과 같은 횟수는 연속형 피처로 볼 수 있는데, 이는 정규화되어 있고 바로 활용이 가능하다. 연속형 피처와 pooling layer을 거친 이산형 피처를 합쳐 선형 activation function으로 이루어진 dense layer을 거쳐 여러 유저의 피처를 혼합할 수 있다. Dense layer을 거쳐 나온 결과값은 user representation이 된다.
핀터레스트의 경우, 각 사이트를 설명하는 여러 토픽이 있고 이는 dictionary로 관리된다. 각각의 pin은 토픽들의 조합으로 매핑이 된다. 이 때, 여러 개의 토픽으로 매핑이 된다면 pin의 토픽을 개별 train set으로 분리한다. 이후, 각 토픽을 마지막 user embedding과 같은 길이의 벡터로 표현한다. 이 과정을 topic embedding이라고 일컷는다.

먼저, 과거 활동 로그로부터 유저와 유저가 상호작용을 한 pin의 조합인 (, ) 형태의 positive training example을 n개씩 배치로 생성한다. 이 때, 유저가 상호작용을 한 토픽은 다른 랜덤하게 뽑은 토픽보다 관심이 있다는 가정 하에 모델링은 진행된다. 이를 위해서 k-negative sampling strategy를 사용한다. 모든 토픽의 log-uniform distribution에서 각 업데이트마다 k개의 토픽을 추출한다. 이렇게 뽑은 positive training sample과 negative training sample을 비교하는 방식으로 이루어진다. 유저와 토픽간의 유사도와 margin ranking loss를 내적으로 구한다.


1. 전체 핀터레스트 유저를 seed user와 non-seed user 두 그룹으로 나눈다
2. 90%의 seed user를 known seed user인 K로 할당한다
3. 남은 seed user와 non-seed user를 짝지어 test pair를 만든다
4. 각 evaluation pair에 대해 K의 전체 셋과의 유사도를 기반으로 어떤 유저가 seed로부터 비롯된 것인지 예측한다.
5. seed user가 아닌 유저의 유사도가 seed user보다 높게 나타나면 1, 아니면 0으로 합산하여 이를 evaluation pair의 개수로 나누어 error rate를 구한 후, error rate가 더 이상 줄어들지 않으면 training을 멈춘다
학습이 끝난 모델의 경우, 자주 재학습을 진행하지 않기 위해 모델을 설계할 때부터 잘 변하지 않는 피처를 선택하곤 한다. embedding set이 빠르게 변화하지 않을 것이라는 가정 하에 비교적 긴 주기마다 재학습을 진행하게 된다.
해당 모델로 인해 광고주마다의 feature selection이나 모델링 없이도 seed user에 대한 representation을 구할 수 있게 되었다. 또한 전체 분포에 대해 한번만 계싼되고 이후에는 모든 광고주에게 공유가 되기 때문에 각 광고주마다 이전의 계산과정을 반복할 필요가 없어졌다.
LSH Partitioning은 user embedding 공간을 hyperplane으로 구분하여 각 유저를 위치시키는 방법이다. Seed user embedding의 평균을 내는 것은 seed user의 중심을 구할 뿐, 실제 seed user와 유사하다고 볼 수는 없다. LSH Partitioning 방식의 경우 Pinterest 상 비슷한 행동 양상을 가진 사람들끼리 클러스터링하여 seed user가 보다 많이 분포하는 공간을 찾는다면 모델의 목적인 seed list와 유사한 유저를 찾을 수 있다.

Voting 방식의 경우, 각 유저 스코어는 해당 공간에 놓인 seed user의 수가 된다. 해당 방식의 경우, seed user가 아닌 유저들의 분포를 고려하지 않기 때문에 density 방식이 대두되었다. Density 방식의 경우, 각 유저가 속한 공간의 seed user의 수를 공간에 속한 전체 유저의 수로 나누어 계산한다. 이 때, 적은 표본을 가진 공간에 대해 smoothing을 하고자 smoothing factor 와 를 각각 분자와 분모에 더해준다.

분산을 완화하고자 random projection 후 스코어링을 하는 과정을 반복 시행 후 affinity score을 구한다. Afinity score은 voting score 혹은 density score의 합을 반복횟수만큼 나누어 계산하게 된다. 이 때, 각 유저별로 affinity score가 도출되고 seed user와 비슷한 유저의 경우 affinity score가 높을 것으로 예상할 수 있다.

전체적인 모델 구조는 위 그림과 같다. 그림의 상단은 온라인 광고 과정이고, 하단은 오프라인 파이프라인에 대해 다루고 있다.
User embedding과 seed representation을 구하는 과정이 모델 구조 상 선행적으로 이뤄지게 된다. 학습된 User Embedding Model을 활용하여 유저의 최근 피처에 대해 embedding을 생성한다. 앞서 언급하였던 이유들로 인해 User Embedding Model의 경우, 여러차례 재학습할 필요가 없다. Seed user의 embedding을 통해 seed representation을 계산하고 이를 (region id, score)의 형태로 저장한다.
모든 핀터레스트 유저들이 활발하게 활동하는 것이 아니기 때문에, audience scoring 과정에서는 최근에 핀터레스트를 방문한 유저들로 추려 affinity score을 계산하고, 최종 expanded audience는 p% 상위 유저로 구성된다. 모델의 점수를 효율적으로 계산하고자 Bucket Sort 방식을 택한다. 이후에는 Embedding-Based Model과 Classifier Model과 앙상블하는 방식을 택하였다. 큰 규모의 seed list에서는 Embedding-Based Model의 성능이 Classifier Model에 비해 성능이 떨어져 두 가지의 모델로부터 나온 결과를 앙상블하는 방식을 고안하였다. 앙상블을 할 때에는 두 모델에서 공통으로 나오는 대상들을 우선적으로 선택하고, 혼합 비율을 seed size를 고려하여 정하고 Classifier Model과 Embedding-Based Model 상위 스코어 후보자 중 원하는 광고 대상의 사이즈에 도달할 때까지 선택하게 된다.
실제 광고를 서빙하는 단에서는 <광고주, 유저 리스트> 형태의 튜플을 <유저, 광고주 리스트> 형태의 튜플로 바꾸어 key-value store에 저장해둔다. 여기에 속한 광고주의 광고 리스트를 추출하여 광고 후보군을 만든다. 그리고 나서 유저에 대해 모든 광고들의 순위를 매기고 second-price auction을 거친 후 최종적으로 유저에게 송출할 광고를 선택하게 된다.

이미 수집된 historical dataset을 기반으로 성능을 평가하는 방법이다. 해당 방법은 먼저, seed user 중 10%를 hold out하고 같은 수의 non-seed user을 추출한다. 이후, 유저-광고주 스코어링 모델을 나머지 90%의 seed user에 대해 적용한다. holdout set으로 빼놓았던 데이터셋에 대해 precision과 recall을 다양한 threshold에 대해 계산한다.


결과를 확인하였을 때, Blended Model이 Embedding-Based Model보다 성능이 잘 나오고 두 모델 모두 Classifier-Based Model에 비해 성능이 잘 나오는 것을 확인할 수 있다. 특히 seed list의 사이즈가 작을 때 Classifier-Based Audience Expansion Model에 비해 두 모델의 성능이 큰 폭으로 상승하는 것을 확인할 수 있다. seed size를 변화시키면서 Classifier-Based Model 대비 precision의 향상도를 확인하였을 때, seed size가 커짐에 따라 Blending Model이 Classifier-Based Audience Expansion Model과 거의 비슷한 성능을 나타내는 반면, Embedding Model의 경우 Classifier-Based Audience Expansion Model에 비해 성능이 안좋게 나오는 것을 확인할 수 있다.
Online Evaluation은 실제 비즈니스 측면에서 유저의 실제 반응을 수집하여 평가하는 방법이다. 본 논문에서는 온라인 A/B 테스트를 활용하여 모델의 성능을 평가하였다. Classifier-Based Audience Expansion Model을 대조군으로 잡아 Embedding-Based Model과 Blended Model을 비교하였다. CTR을 평가의 척도로 활용하여 세 모델의 클릭 당 비용을 평가하였다.


Embedding-Based Model은 Classifer-Based Audience Expansion Model과 비교하였을 때 5개 중 2개의 bucket에서의 CTR이 향상되었고 Blended Model의 경우 모든 bucket에서 향상을 보였다. 전체적으로 보았을 땐 Embedding-Based Model은 4.1% 가량 CTR이 감소하였으나 Blended Model의 경우 2.1% 가량 향상되었다.
본 논문에서 제안한 Embedding-Based Model의 경우, seed list의 각 사용자로부터 많은 것을 학습할 수 있어 작은 크기의 seed list를 활용할 때 Classifer-Based Model에 비해 더 잘 학습할 수 있다. 또한 seed size가 클 때, Embedding Model이 광고주별로 특화된 모델을 사용하지 않아도 Classifier-Based Technique의 precision을 거의 따라잡는 결과를 내기도 하였다. 본 논문에서는 Classifier-Based model과 Embedding-Based Model을 앙상블하여 성능을 높이는 방법에 대해 설명하기도 하였다.
마지막 부분에는 모델을 더 발전시킬 수 있는 방안에 대해 제언하였다. User Embedding Model에 대해서 multi-task learning을 도입한다면 백그라운드에 있는 더 많은 지식을 통합할 수 있을 것이다. 또한 내적이 아닌 다른 유사도를 구하는 방식을 취해 계산한다면 성능을 향상시킬 수 있을 것이다. 마지막으로 여러 유저의 피처를 더해 모델을 개선할 수 있을 것이라고 제언하였다.
LSH Partitioning에 관련해서는 region의 density를 고려하고 seed list의 특성을 고려하는 정교한 LSH Partitioning을 구현할 수 있다고 언급하였다.
End-to-end System에서는 현재의 end-to-end system을 실시간으로 반응하는 모델로 발전시켜 가장 최신의 행동을 반영할 수 있을 것이다.
본 논문에서는 현재 고객과의 유사성만을 고려하여 잠재 고객을 추정하지만 현실에 적용하였을 때는 매출에 있어 해당 고객의 미치는 영향도 중요하다고 생각한다. LSH Partitioning을 진행할 때, 집계 방식을 고객의 수가 아닌 구매 총액으로 진행해도 좋을 것 같다고 생각한다.