-
AWS re:Invent 2018: NEW! Introducing Amazon Personalize: Real-time Personalization & RecommendationsAWS/Personalization & Recommendations 2021. 10. 28. 12:25
모든 글 내용은 re:Invent 2018 영상에서 가져왔습니다.
아마존! 초창기만 해도 아마존은 온라인 책방이었다. 하지만 지금은 세상을 움직이는 공룡기업으로 성장해, FANG(Facebook, Amazon, Netflix, Google)의 하나가 되었다. (이 이외에도 공룡 기업이 많지만, 주식에서 흔히 FANG이라는 신조어를 많이 사용해서 대표적으로 나열했다) 그 아마존에서 상품을 판매할 때 쌓았던 Machine Learning 노하우로, Auto ML, 즉 자동화된 머신러닝을 제공해주는 서비스를 런칭했다. 바로 2018년에 출시된 Personalize이다.
스타트업이나 ML(Machine Learning)인력이 없는 회사에서 추천시스템을 구축한다는것은 정말 어려운 이야기이다. 하지만 정말 많은 회사에서, 추천시스템을 도입한 이후에 많은 성장을 하는 사례들이 있다. 그렇기때문에 요즘에는 추천이 없는 서비스를 찾아보기 힘들 정도이다.
아마존의 30%이상 페이지 뷰는 recommendations에서 이루어진다고 한다. 쿠팡을 생각해보았을때, 어떤 상품을 클릭하면, 유사한 상품 또는 다른 추천 아이템들이 나온다. 또 80%의 비디오 스트리밍은 인기있는 비디오들에서 이루어진다. 하지만 많은 고객들에게 알맞는 추천을 한다는것은 쉬운일이 아니다.
실시간으로 사용자의 액션까지 고려한다는것은 정말 힘들다. 그리고 추천시스템은 보통 인기있는 작품을 주로 추천하기때문에, 유투브를 생각해보았을때, 동영상을 아무리 많이 올려도 인기있는 콘텐츠가 되기 이전에는 추천에 단 한번도 등장하지 않는 경우가 있다. 또한 cold start 유저의 경우 또는 아이템의 경우에도 문제가 발생한다. 예를들어 새로 가입한 유저에게 어떤것을 추천할것인가? 새로 등록한 상품에 어떤 연관상품 또는 '이상품을 산 사람 이상품도 샀다'를 메울것인가? 그리고 Scale또한 생각해봐야한다. 갑자기 회사가 급성장해서 천만명의 유저가 사용하는데, 이들 모두에게 추천을 해줄 수 있는 시스템을 구축할 수 있을까?
기존의 추천 시스템들은 사실 적절한 결과를 내는게 쉽지 않다. 음악 앱을 예로 들어보자. 세상의 수백 수천만가지의 음악이 담겨져있는곳에서, heize의 음악을 좋아하는 나에게, 적절한 추천을 내주려면, 어떻게 해야할까? 컴퓨터는 그녀가 한국사람인지도, 한국의 고막여친인지도, 그리고 나의 감성을 쥐어짜는 노래를 부른사람인지도 모를수도 있다. 곡에 딸려있는 정보들과 heize라는 단어에 쌓여있는 정보를 취합해서 계산하고 추론해서, 비슷한 장르, 언어 또는 음악의 진행을 검색하고, 추천을 해주어야하는데, 이는 정말 쉬운일이 아니다. 즉, 충분한 데이터가 없다면 추천시스템은 동작할 수 없다. 하지만 데이터가 너무나 많아진다면? 기존 추천 알고리즘들에서는 데이터양이 많아지면 추천의 질이 떨어지는 경우가 많이 발생했었다. 이러한 이슈들을 해결하기 위해, 추천 알고리즘에 대한 많은 시도가 이루어졌을것이다. 이 프리젠테이션에서, 아마존의 Personalization은 더 새로운 Deep Learning알고리즘을 이용한다고 말하고있고, 이 알고리즘은 데이터양이 늘어나도 퍼포먼스적으로 문제없이 모델을 잘 성장시켜서 트레이닝할 수 있다고 말하고있다.
아마존의 personalization과 추천 시스템은 Amazon.com에서 사용하고있는 실시간 서비스이다. API 콜을 통해서 이루어지는데, state-of-the-art 딥러닝 알고리즘을 이용해서 질 높은 결과를 추출한다. 그리고 auto-ML 기술을 제공하는데, 이는 데이터를 가져오는것부터 처리하는것까지 자동으로 해주는 시스템이다. 또한 실시간 personalized 추천은, 실시간으로 발생되는 행동과 클릭이벤트 데이터를 바로바로 수집해서 추천을 실시간으로 제공할 수 있도록 해준다. 게다가 가장 좋은점은, 머신러닝에 대해 아무것도 몰라도 구축할 수 있다는 점이다. 머신러닝 필드에서 일했거나 MS/PhD가 아니어도 간단한것은 몇시간만에도 구축할 수 있다.
그렇다면 어떤 추천시스템들을 구축할 수 있을까?
추천 시스템은 다양하게 사용될 수 있다. 2018년당시 Personalization은 위 네개의 서비스를 제공했다. 첫번째로 Personalized recommendataions이다. 이것은 흔하게 많은 웹/앱에서 볼 수 있는 개인화 추천이다. 내가 검색하고 구매했던 또는 흥미를 가졌던 데이터를 기반으로 추천을 해주는 알고리즘을 이용해서 구축할 수 있다. Related Items은 관련있는 상품정도로 생각하면 된다. 예를들어 쿠팡에서 어떤 물건을 선택했을때, '이 물건과 유사한 제품' 등으로 보여진다. Search reranking은 그냥 검색이 아닌, 개인화 검색으로, 개인에 맞는 검색을 해주는 기능이다. 또, Notifications and emails은 유저들에게 이메일을 보낼 때, 각자의 니즈에 맞게끔 컨텐츠를 설정해서 보내는것인데, click-through-rate가 30-40%정도라고 이야기하고있다.
AWS Personalize는 위에 보여진 모든 도메인들에 사용되어질 수 있다고 한다.
그렇다면, Personalize를 어떻게 사용하면 되는지 알아보자.
첫번째로, 데이터를 준비해야한다. 아마 모두가 가지고 있을 수 있는 사용할 수 있는 데이터를 준비해야하는데, 이에는 유저가 클릭을 했거나 구매를한 정보를 갖고있어야한다. 두번째로, 아마존 personalization에서 제공하는 알고리즘중, 니즈에 맞는것을 선택하고 AutoML에게 가장 알맞는 세팅을 알려주면 된다. 이에대해서는 문서에 자세하게 기재되어있고, 만약 잘 모른다면, default로 해도 무관하다. 또한 ML에대한 지식이 있다면, 코드를 수정하고 머신을 트레이닝할 때 들어가는 inputs, 즉 parameters들을 수정할수도 있게끔 되어있다. ML 전문가에게도 자유도를 제공하는 부분이라고 볼 수 있다. 이후, 머신을 다시 re-training하는 작업을 지속적으로 해주면, 모델의 성능을 향상시킬수 있다.
위는 실시간 추천시스템이 어떻게 작동하는지 말해준다. 기존의 Offline데이터는 유저의 정보, 아이템의 정보, 그리고 유저의 행동 데이터가 S3로 저장되어야한다. 또한 SDK를 이용해서 실시간 유저의 행동을 수집할수도 있다.
이렇게 데이터가 준비가 되고, SDK설정이 마쳐지면, AutoML을 이용하거나 알고리즘을 이용해서 모델을 트레이닝하고 실험을 시작할 수 있다. AutoML은, 알고리즘을 선택하기 힘들때, 데이터셋을 보고 자동으로 분석해서 알고리즘을 선택해준다.
선택한 알고리즘을 이용해서 campaign을 만들면, 추천시스템에 필요한 모든 인프라들이 만들어지고, personalize endpoint가 생성된다. 이후 조금 시간이 지나면, getRecommendations() 또는 getPersonalizedResults()와 같은 API를 이용해서 이 결과를 가져다가 쓸 수 있다.
personalized recommendations는 다음과 같이 사용될 수 있다. 실시간 데이터는 Amazon Personalize로 수집되고, 브라우저 또는 앱에서 추천에 대한 요청이 서버로 보내지면, 서버에서는 personalize에 그 유저에게 추천할 정보를 쿼리하고, Amazon Personalize에서는 추천된 값을 서버로 보내고, 서버에서는 그값을 가지고 알맞는 형태로 이미지등과 함께 보여주면 된다.
Personalize 콘솔에 가보면, 굉장히 쉽게 이 시스템을 구축할 수 있게 되어있다. 데이터를 등록하고, SDK를 설치하고, 솔루션을 트레이닝 하는것부터 campaign을 실행해서 추천시스템을 구동하는데까지 마우스 클릭만으로, 코딩 없이 가능하다. 물론, IaC(Infra as Code)로 테라폼으로 AWS를 관리하고 있다면 이 인프라 설정에 대한 코딩은 필요하다.
또한, 런칭된 시스템을 콘솔로 테스트도 해볼 수 있다. 위와 같이 영화를 가지고 추천시스템을 만들었다면, 추천을 받았을때 어떤것들이 나오는지 볼 수 있다. 이 시스템은 Personalize의 Getting Started에 가면 예시로 추천시스템을 구축할 수 있다.
이후에는 Personalization의 과학적인 관점에 대해, Amazon AI팀의 시니어 과학자가 설명해 주었다. 그 내용은 다음 포스트에서...
Amazon Personalize is a fully-managed service that helps companies deliver personalized experiences, such as recommendations, search results, email campaigns and notifications. It brings over 20 years of experience in personalization from Amazon.com and puts it in the hands of developers with little or no machine learning experience. Amazon Personalize uses AutoML to automate the entire process of managing and processing data, choosing the right algorithm based on the data, and using the data to train and deploy custom machine learning models — all with a few simple API calls. Join us and learn how you can use Concierge to build engaging experiences that respond to user preferences and behavior in real-time.
'AWS > Personalization & Recommendations' 카테고리의 다른 글
Recommendataion 관련 논문 & 영상정보 (0) 2021.11.05 AWS re:Invent 2018: NEW! Introducing Amazon Personalize: The Science of Personalization (0) 2021.10.28