1년차 주니어가 추천 시스템 현장에서 마주한 고민

Zimin
WATCHA
Published in
9 min readApr 14, 2021

--

왓챠의 미션

머신 러닝의 여러 분야 중 추천 시스템에 가장 큰 매력을 느꼈습니다. 데이터로 사람과 사회를 다양하게 이해하고 싶은 욕망이 있는데 추천 시스템은 유저와 서비스를 연결하는 역할을 하기 때문입니다. 이 분야에서 커리어를 쌓아나가고 싶었기 때문에 “사람과 콘텐츠를 연결한다”라는 비전을 갖고 있는 왓챠(WATCHA)에서 일을 시작했고 근무한 지 1년이 조금 넘어가고 있습니다. 현장에 와보니 논문과 멈춰있는 데이터만 다룰 때는 고민하지 않았던 점들을 마주하게 되었습니다. 실제 유저와 역동하는 서비스를 처음으로 다루면서 마주한 고민들을 공유합니다.

목차

1. 데이터셋은 어디에서 오는가
2. 모든 길은 AB 테스트로 통하지만
3. 모델이 트렌드를 반영하려면
4. 추천은 무엇으로 이뤄지는가
5. 맺음말

1. 데이터셋은 어디에서 오는가

2020년의 주된 관심사는 시청기록을 활용하는 일이었습니다. 유저의 시청기록에 장, 단기 패턴이 있다는 가정 하에 다음에 볼만한 콘텐츠를 추천해주는 일인데요. 예를 들면 <라이언 일병 구하기>, <더 퍼시픽>, <아메리칸 스나이퍼> 같은 전쟁영화를 본 사람에게 <1917>을 홈화면에 보여주는 식입니다.

출처 : 왓챠 개발자 채용영상

회사에 와보니 데이터셋은 주어지는 게 아니라 직접 선별하고 의미를 부여하는 것이었습니다. 시청기록을 어떻게 정의할 수 있을까요? 직관적으로 유저가 재생을 시작한 콘텐츠라고 생각해 볼 수 있습니다. 2시간 러닝타임의 영화를 5분 시청한 기록, 1시간 시청한 기록, 엔딩 크레딧까지 시청한 기록을 같은 위상의 데이터로 취급해도 괜찮을지가 첫 고민이었습니다. 1시간 시청한 유저는 왜 반 정도만 보고 이탈했을까요. 재미가 없어서, 졸려서, 약속 시간 때문에 등등 다양한 이유가 있습니다.

TV 드라마나 예능의 경우 더 복잡해집니다. <부부의 세계>는 16개 에피소드로 구성되어 있고 방송 직후 매주 새 에피소드가 업로드되었습니다. 유저가 5화까지 보고 시청을 안 하고 있다면 유저는 <부부의 세계>를 얼마나 봤다고 말해야 할까요. <무한도전> 같은 예능은 1화부터 순서대로 보지 않고 100개가 넘는 에피소드 중 재밌는 에피소드만 골라 봅니다.

이외에도 며칠간의 기록을 사용할까? 실시간성은 얼마나 보장해야 하나? 시청기록이 적은 유저는 평가 데이터에서 빼야 하나? 등등의 명확하게 정할 점이 많았습니다. 뿐만 아니라 팀원들과 데이터에 대한 이해와 정의를 공유하고 합의해서 생각을 맞춰야 했습니다.

2. 모든 길은 AB 테스트로 통하지만

모의고사를 아무리 잘 받아도 결국엔 수능으로 승부가 나듯이 추천 모델도 결국엔 AB테스트를 통해 더 나은 모델이다/아니다를 정하게 됩니다. 실제로 테스트를 진행하려 하니 구체적으로 정해야 할 요소들이 많았습니다.

첫 번째는 “누구를 대상으로 몇 명이나 실험할까?”입니다. 모든 유저 중에 랜덤으로 뽑으면 되는 걸까요? 유저들이 서비스를 사용하는 패턴은 매우 다양합니다. 특히 서비스를 이용한 지 얼마나 되었는가에 따라 크게 달라집니다. 이제 막 가입한 신규 유저들은 대외적으로 많이 알려진 <왕좌의 게임>이나 <해리포터>, <킬링 이브> 같은 콘텐츠를 많이 봅니다. 반면 오랫동안 많이 이용한 헤비 유저들은 이미 유명한 시리즈는 다 보았을 가능성이 큽니다. 대신 신작으로 들어오는 콘텐츠나 대중적으로 많이 보지 않는 콘텐츠를 적극적으로 탐색합니다.

유저를 특정 기준으로 나누어 실험해본 결과 유저군에 따라 추천 성능이 꽤 차이 났습니다. 모든 유저가 만족하는 단일한 모델은 없다고 생각합니다. 여러 타겟 유저군을 정의하고 각 집단마다 다른 모델을 실험을 해봐야 합니다. 고민 끝에 ‘신규 유저’를 위한 추천 모델을 테스트하고 싶다고 가정하겠습니다. 몇 명을 대상으로 실험할까요? 샘플 수가 많아질수록 검정력이 강해지니 대략 10,000명으로 정했다고 해보겠습니다(수치는 예시입니다). 이런 경우 짧은 시간 내에 유저 10,000명이 가입해야 한다는 뜻이 됩니다. 서비스마다 이 수치가 쉬운 수치일 수도 있고 어려운 수치일 수도 있습니다. 서비스의 유저 흐름을 고려하여 필요한 유저의 숫자를 조정해야 했습니다.

출처 : 왓챠 개발자 채용영상

두 번째는 언제, 얼마나 오래입니다. 유저의 행동은 추천 시스템뿐만 아니라 다양한 요소에 의해 바뀝니다. 최근에는 <중경삼림 리마스터링>, <화양연화 리마스터링> 같은 왕가위 감독 특별전 영화가 마케팅을 통해 유저들에게 많이 노출되었습니다. 콘텐츠에 익숙해져서 추천에 반응을 더 쉬워졌을 수도 있고, 설 연휴처럼 쉬는 날이 많아서 서비스 이용이 늘 수도 있습니다. 따라서 유저에게 영향을 주는 요소들이 최대한 적은 날짜를 골라야 했습니다.

왓챠의 주 비즈니스 모델은 구독입니다. 나은 추천을 통해 유저의 만족도를 높여 구독 연장 비율을 늘리거나 전환 비율을 높일 수 있다면 최고의 성과로 볼 수 있습니다. “추천 모델의 성능이 구독 연장과 인과관계가 있다”라고 주장하려는 건 아닙니다. 그러나 이를 확인해보기 위해서라도 구독 지표를 보려면 최소 1달간 실험해야 합니다. 그렇다고 매번 실험할 때마다 1달씩 실험해야 한다면 실험 주기가 너무 길어지고 잘못하면 안 좋은 모델을 한 달간 실험해야 하는 상황도 생길지 모릅니다. 불상사를 방지하기 위해 구독 이외의 어떤 지표가 좋지 않을 때 조기 종료할지에 대한 계획도 세워야 했습니다.

3. 모델이 트렌드를 반영하려면

유저의 취향은 다양하고 자주 변합니다. 크리스마스에 <러브 액츄얼리> 같은 따뜻한 로맨틱 코미디 영화를 보고 싶다가도 나른한 주말에 <나이브스 아웃> 같은 미스터리 스릴러를 보고 싶기도 합니다. 서비스에서 인기 있는 콘텐츠의 트렌드도 수시로 바뀝니다. 왓챠에서는 영화나 미국 드라마뿐만 아니라 <상견니>같은 대만 드라마가 뜨기도 하고 <주술회전> 같은 일본 애니메이션이 뜨기도 합니다.

매주 5백여 편의 신작이 업데이트되고 새로운 유저, 리턴 유저가 끊임없이 유입됩니다. 추천 모델이 트렌드를 따라가려면 한 번 학습하고 끝나는 것이 아니라 지속적으로 업데이트해야 했습니다. 얼마나 자주, 어떻게 업데이트해야 할까요.

Source : S. S. Sarwar, A. Ankit, K. Roy, Incremental Learning in Deep Convolutional Neural Networks Using Partial Network Sharing, Figure 1.

얼마나 자주는 트렌드 주기와 맞추려 했습니다. 동영상 콘텐츠는 뉴스처럼 시간 단위로 새로운 콘텐츠가 생기거나 인기가 변하지 않습니다. 그렇다고 엄청 느리지도 않습니다. 코로나가 시작될 무렵부터는 <컨테이젼> 같은 바이러스 소재의 영화가 급상승하여 순위를 유지하고 <기생충>이 오스카를 휩슬 때 봉준호 감독의 다른 영화들이 인기를 얻었습니다. 정량적, 정성적인 근거를 바탕으로 업데이트 주기를 정해야 했습니다.

어떻게를 선택할 때는 속도(업데이트 주기를 맞출 수 있는가)와 성능(최근 트렌드를 학습하느라 장기적인 트렌드를 잊어버리지 않는가)이 기준이었습니다. 방법은 크게 두 가지로 나눠 생각해볼 수 있습니다. 학습된 모델에 새로 얻은 데이터를 추가로 학습하는 방법과 아예 처음부터 모든 데이터를 재학습 하는 방식입니다.

전자의 방식은 속도는 빠르지만 최근 데이터에 집중하느라 오래된 데이터를 잊을 수 있을뿐더러 콘텐츠의 수가 늘어나는 경우도 대비해야 합니다. 단점을 극복하기 위한 알고리즘을 설계해야 하는데 구조가 다른 모델에서 범용적으로 작동하는 방식을 찾아야 했습니다. 후자의 방식은 전자의 단점을 피할 수 있지만 처음부터 다시 학습하는 만큼 시간과 하드웨어 리소스를 많이 소요한다는 단점이 있습니다. 속도와 성능의 트레이드 오프에 어떻게 대처할지, 둘 중 하나를 대폭 줄여서 트레이드 오프 관계를 깰 수 있을지 고민했습니다.

4. 추천은 무엇으로 이뤄지는가

새로운 방식의 추천 아이디어를 제안했다가 채택되지 않는 경우가 있었습니다. 돌이켜 보면 아이디어를 구상할 때 기술적인 면만을 고려했습니다. 추천시스템은 결국 ‘유저에게 서비스가 보유한 아이템을 선별하여 보여주는 방법’이라고 생각합니다. 유저가 회사의 서비스를 어떻게 사용하고 있는지, 서비스가 보유하고 있는 아이템의 특징은 어떤지, 서비스의 기술적, 경험적 특징은 어떤지에 따라서 추천 되는 형태가 달라집니다.

Photo by You X Ventures on Unsplash

이런 특징 때문에 Machine Learning팀만으로 추천 시스템을 운영할 수 없다는 생각이 들었습니다. 콘텐츠를 편성/운영하는 팀, 화면을 구성할 디자인팀, 로그를 쌓고 서버를 구축할 백엔드팀, 유저의 경험을 책임지는 PM팀 등 여러 팀들과의 협업, 공유, 설득이 필요했습니다.

5. 맺음말

“범용적인 추천 시스템이 존재할 수 있을까”라는 생각을 합니다. 번역 모델의 경우 어떤 회사에서 만들더라도 입력과 출력이 비슷합니다. 이미지 분류나 음성 인식도 마찬가지입니다. 추천 시스템의 경우 서비스에 따라 천차만별일 수밖에 없습니다. 뉴스, 음악, 이커머스, SNS 서비스의 추천이 같을 수 없습니다. 유저의 성향도 다르고, 모델/ 데이터도 다르고 성능을 평가하는 지표도 다릅니다.
그럼에도 불구하고 다른 회사 분들과 이야기하다 보면 공통적으로 해결해야 하는 문제점들도 있습니다. Online Test와 상관관계가 높은 Offline Evaluation 방법, 유저의 장기적인 만족도를 고려한 추천, 콜드 스타트 문제를 완화하는 방법, 다양성 문제 등등.
개개인의 사람이 특별하면서도 보편적인 특징이 있기 때문에 추천 시스템도 특수성과 보편성이 공존하고 있다고 생각합니다. 서비스에 파고들어 특수성을 고도화하고 논문을 탐독하여 보편성을 넓히는 2021년이 되었으면 합니다.

콘텐츠와 관련된 다양한 문제를 함께 고민하고 해결할 멋진 동료를 적극적으로 구하고 있습니다.

--

--