신문로
추천 알고리즘과 편향성 문제
필자의 기억에 유튜브는 원래 재미있지 않았다. 단순한 동영상 검색이 전부였다. 하지만 언제부턴가 유튜브는 우리가 보고 싶어하는 동영상을 귀신같이 추천한다. 이제는 검색보다 추천 영상들을 스크롤하다가 클릭만 하면 된다. 넷플릭스도 원래는 DVD 대여 서비스에서 시작했지만, 현재는 2억2000만명의 가입자를 가진 동영상 스트리밍 플랫폼이 되었다.
유튜브와 넷플릭스의 급성장에 큰 역할을 한 것은 추천 시스템(recommendation system)이다. 개별 사용자의 동영상 시청 데이터를 분석해 다음에 시청할 가능성이 높은 영상들을 추천해주는 것이다. 그렇다면 유튜브 또는 넷플릭스는 어떻게 우리가 보고 싶어하는 동영상을 찾아 추천하는 것일까?
넷플릭스는 2006년 추천 시스템에 대한 '넷플릭스 시상식'(netlfix prize)을 개최했다. 기존의 넷플릭스 추천 알고리즘보다 더 뛰어난 성능을 보이는 알고리즘을 개발한 우승 팀들에게 100만달러의 상금을 내건 것이다.
수학·통계 분석에 필요한 대부분의 데이터(숫자 글 이미지 그래프 등)들은 행렬(matrix)로 나타낼 수 있다. 행렬은 인공지능과 기계학습 전반에서 사용되는 기본 언어다. 우리 관심사인 추천 알고리즘 또한 행렬의 언어로 이해할 수 있다. 넷플릭스는 먼저 사용자들의 시청 기록과 평점을 모아 행에는 2만여편의 영화, 열에는 48만여명의 사용자를 나열한다. 각 행과 열에 해당하는 셀에는 시청 유무 또는 동영상에 대한 사용자의 평점이 기록된다.
1% 관측치 통해 결측치를 예측하는 시스템
분석을 어렵게 하는 것은 바로 '결측치'다. 사용자들이 넷플릭스의 모든 영화를 시청한 것이 아니기 때문에 셀 대부분은 결측치 또는 0점으로 표현된다. 분석의 목표는 결측치, 즉 사용자가 시청하지 않은 영화에 대해 어떤 평점을 줄 것인가를 예측하는 것이다. 실제로 넷플릭스 데이터에서는 1%의 셀만 관찰되었고, 나머지 99%에 해당하는 결측치를 예측해야 한다. 이것이 어떻게 가능할까?
대회 우승팀이 제시한 추천 알고리즘은 행렬분해(matrix factorization)에 기반했다. 주어진 영화-사용자 행렬 데이터를 X라고 한다면, 두 행렬 A와 B를 찾아 그들의 곱 AB가 X의 관측치들을 가능한 정확하게 근사하도록 한다. 고등학교 교육과정에 나오는 행렬의 곱을 거꾸로 하는 것이다.
여기서 첫번째 행렬 A열은 '토픽' 혹은 '장르'를 의미한다. 다시 말해 영화-사용자 행렬 X를 영화-장르 행렬 A와 장르-사용자 행렬 B의 곱으로 분해하는 것이다. 사용자마다 취향이 아무리 다양해도, 액션이나 로맨스 장르 영화를 좋아하는 사람은 비슷한 장르의 영화 역시 좋아할 확률이 높을 것이다.
1%의 관측치를 통해 두 성분 행렬 A,B를 찾으면 그들을 곱해 원래의 행렬 X를 재구성 (reconstruction) 할 수 있다. 이 과정에서 결측치는 예측된 값들로 채워지며, 이중 높은 값을 가진 예측치들은 사용자가 다음에 볼 가능성이 높은 영화로 추천영상으로 뜨는 것이다.
여기서 하나 흥미로운 점은 특정 사용자의 영화 선호도를 예측할 때 다른 모든 사용자들의 정보가 쓰인다는 것이다. 이렇게 많은 사용자들로부터 얻은 기호정보에 따라 사용자들의 관심사들을 자동적으로 예측하게 해주는 방법을 협업 필터링(collaborative filtering)이라고 한다. 행렬분해는 특이값분해(Singular Value Decomposition, SVD)와 같은 가장 기본적인 행렬 연산으로도 가능하고, 번갈아가면서 두 성분 행렬 중 하나만 최적화시키는 교차 최소제곱법 (Alternating Least Squares)을 사용해 훨씬 적은 메모리를 사용하면서 효과적으로 계산할 수 있다. 이와 같은 추천 알고리즘은 전자상거래 사이트 아마존에서도 사용자별로 최적화된 추천 아이템을 계산하기 위해 사용된다.
개인화된 서비스, 양극화 심화에도 영향
추천 알고리즘의 발전은 우리에게 더욱 흥미롭고 자극적인 동영상이나 아이템들을 제시해준다. 또 더 많은 수의 사용자들이 더 많은 데이터를 제공하면 협업 필터링 방법에 의해 추천 알고리즘들은 더욱 더 발전하게 된다.
이와 같은 개인화(pesonalization)된 서비스의 제공은 한편으로는 우리 사회 양극화를 심화시키는 데도 일정부분 영향을 미친다. 우리는 각자 구미가 당기는 콘텐츠들을 끊임없이 소비하면서, 원래 가지고 있던 생각의 틀을 알게 모르게 강화하게 되고, 다른 사고방식을 가진 사람들을 점점 더 이해하기 힘들게 된다. 생각과 기호의 다양성을 지향하는 방향으로 추천 알고리즘을 개선해보면 어떨까?