뉴스피드 알고리즘에 대해 논할 때, 우리는 그에 대한 여러가지 의견과 오해를 마주하게 됩니다. 대부분의 사람들은 뉴스피드에 알고리즘이 적용된다는 사실을 인지하고 있으며, 알고리즘에 영향을 미치는 몇 가지 요인(좋아요 클릭, 댓글 작성 등)에 대해서도 이미 알고 있죠. 그러나 뉴스피드 알고리즘에 대한 많은 오해는 여전히 계속되고 있습니다.
Facebook은 다수의 뉴스피드 세부 사항과 기능을 공개적으로 공유하고 있습니다. 하지만 좀 더 자세히 들여다보면, 뉴스피드를 지원하는 머신 러닝(ML) 순위 시스템은 생각보다 훨씬 복잡한 구성으로 이루어져 있습니다. 이에 저희는 순위 시스템이 어떻게 작동하는지에 대한 새로운 세부 정보를 공유합니다. 20억 명 이상의 이용자가 Facebook에 접속했을 때, 개개인의 기호를 반영한 의미 있는 맞춤형 콘텐츠를 볼 수 있도록 시스템을 구축하는 과정에 있어 해결해야 하는 도전과제에 대해서도 함께 말씀드리고자 합니다.
뉴스피드 관리의 도전과제
먼저, 뉴스피드 기능과 관련된 정보의 양은 상상 그 이상입니다. 현재 Facebook을 이용하는 사람들은 전 세계 20억 명 이상에 달하며, 각 이용자마다 1,000개 이상의 ‘후보’ 게시물(해당 이용자의 뉴스피드에 보여질 가능성이 있는 게시물)이 존재합니다. Facebook의 모든 이용자들을 합치면 관련 게시물은 조 단위로 늘어납니다.
각 이용자와 가장 관련성이 높다고 판단되는 콘텐츠를 결정하기 위해 Facebook이 평가해야 하는 신호 또한 수천 개에 달합니다. Facebook은 각 이용자가 자신의 피드에서 보고 싶어하는 내용을 즉각적으로 예측해야 하죠. 이용자가 Facebook 앱에 접속하는 순간, 모든 처리 과정을 완료하고 이용자의 뉴스피드를 업데이트하는 데 걸리는 시간은 단 1초에 불과합니다.
하지만 상황은 끊임없이 변화하고, 그에 따라 클릭 베이트나 잘못된 정보의 확산 등 언제나 새로운 이슈가 발생하기 때문에, 시스템이 잘 작동하도록 정비한 이후에도 지속적인 업데이트와 새로운 해결책은 늘 필요합니다. 실제 순위 시스템은 단일 알고리즘으로 운영되는 것이 아니라, 이용자 개개인에게 가장 의미 있고 관련성이 높은 콘텐츠를 예측하기 위해 여러 단계의 ML 모델과 순위 방식을 적용하고 있습니다. 순위 시스템은 각 단계 작업을 거치며 수천 개의 후보 게시물 중에서 특정 시간에 특정 이용자의 뉴스피드에 표시될 수백 개의 게시물을 추려냅니다.
어떤 원리가 적용될까요?
요약하자면, 시스템은 이용자가 관심을 갖거나 상호 작용할 가능성이 가장 높은 콘텐츠를 예측하여 뉴스피드에 표시될 게시물과 그 순서를 결정합니다. 이러한 예측은 최근의 팔로우, 좋아요, 상호 작용 등 다양한 요인에 기반합니다. 해당 작업이 실제로 어떻게 작동하는지에 대한 이해를 돕기 위해, 이용자가 Facebook에 로그인하면 어떤 일이 일어나는지를 예를 들어 살펴 보겠습니다. 이용자의 이름은 ‘후안’이라고 가정해보죠!
어제 후안이 로그인한 후, 그의 친구 웨이가 반려 동물인 코커 스패니얼의 사진을 게시했습니다. 또 다른 친구 산비는 아침에 조깅하는 영상을 올렸습니다. 후안이 좋아하는 페이지에는 밤에 은하수를 보는 가장 좋은 방법에 대한 흥미로운 기사가 올라왔고, 그가 좋아하는 요리 그룹에는 4개의 새로운 천연 발효 빵 레시피가 올라왔습니다.
후안이 이 모든 콘텐츠를 공유하는 사람 또는 페이지를 팔로우하고 있는 점을 감안했을 때, 그만큼 그가 이러한 콘텐츠를 흥미롭다고 생각할 확률이 높아지죠. 이러한 게시물 중 어떤 것이 후안의 뉴스피드에서 우선적으로 표시되어야 하는지를 결정하려면, 그에게 가장 중요한 것은 무엇인지, 어떤 콘텐츠가 그에게 가장 높은 가치를 전달하는지를 예측해야 합니다. 수학 용어로 설명하면, 후안에 대한 객체 함수를 정의하고 단일 객체 최적화를 수행하는 것입니다.
사진에 누가 태그되었는지, 언제 게시되었는지 등 게시물의 특성을 고려하면, 후안이 해당 게시물을 좋아할지 여부를 예측할 수 있습니다. 예를 들어 후안이 산비의 게시물과 자주 상호 작용(예: 공유 또는 댓글 작성)하는 경향이 있고 그녀가 게재한 비디오가 최근 것인 경우, 후안이 산비의 게시물을 좋아할 가능성이 높다고 보고 있습니다. 후안이 과거에 사진보다 비디오 콘텐츠에 더 많은 관심을 표시했다면, 웨이의 코커 스패니얼 사진에 좋아요를 누를 가능성은 상당히 낮을 것입니다. 이 경우, Facebook의 순위 알고리즘은 후안이 산비의 조깅 동영상을 좋아할 확률이 더 높을 것으로 예측하고 웨이의 강아지 사진보다 더 높은 순위를 매깁니다.
그러나 사람들이 Facebook에서 선호도를 표현하는 방법에는 좋아요만 있는 것은 아닙니다. 사람들은 매일 흥미로운 기사를 공유하거나 팔로우하는 사람, 혹은 유명인의 동영상을 보기도 하고, 친구의 게시물에 따뜻한 댓글을 남깁니다. Facebook의 주요 목표는 각자에게 의미 있고 관련성 있는 콘텐츠를 노출시킴으로써 장기적인 관점에서 이들이 느끼는 가장 큰 가치를 창출하는 것입니다. 그 외에도 Facebook이 추구하는 목표는 다양하죠. 이를 함께 고려해 시스템을 최적화하는 경우, 수학적으로 상황은 더 복잡해집니다.
다양한 ML 모델은 후안이 웨이의 사진, 산비의 동영상, 은하수 기사 또는 천연 발효 빵 레시피와 상호 작용할 확률을 계산하여 여러 가지 예측을 제시합니다. 각 모델은 후안을 위해 해당 콘텐츠의 순위를 매깁니다. 때때로 모델들끼리 상충될 수도 있습니다. 후안이 은하수 기사보다 산비의 조깅 동영상에 좋아요를 누를 가능성이 더 높을 수도 있지만, 동영상보다는 기사에 댓글을 달 가능성이 더 높을 수도 있습니다. 따라서 이러한 다양한 예측을 장기적인 가치라는 기본 목표에 최적화된 하나의 점수로 결합하는 방법이 필요합니다.
무엇이 이용자에게 장기적인 가치를 창출하는지 어떻게 측정할 수 있을까요? Facebook은 이용자에게 직접 질문하는 방식을 선택했습니다. 예를 들어, 설문 조사를 통해 친구와의 상호 작용이 얼마나 의미가 있는지, 또는 게시물이 시간을 투자해 볼 가치가 있는지 여부를 물어보고, 사람들이 즐기는 것과 의미를 두는 것에 대한 정보를 시스템에 반영합니다. 사람들이 더 의미 있고 시간을 들일 가치가 있다고 답한 행동들을 기반으로 후안을 위한 여러 가지 예측을 고려하고 판단할 수 있습니다.
각 단계별 프로세스에 대하여
실시간으로 20억 명 이상의 이용자를 위해 매일 1,000개 이상의 게시물에 순위를 매기려면, 효율적인 프로세스를 구축해야 합니다. Facebook은 해당 프로세스에 필요한 컴퓨팅 리소스를 최소화하기 위해 전략적으로 구성된 단계를 통해 시스템을 보다 신속하게 관리하고 있습니다.
먼저, 시스템은 후안의 뉴스피드를 위해 순위를 매길 수 있는 모든 후보 게시물(코커 스패니얼 사진, 재생 중인 동영상 등)을 수집합니다. 후안이 마지막으로 로그인한 이후 작성된 게시물 중 후안의 친구, 그룹 또는 페이지가 그와 공유한 삭제되지 않은 게시물 모두 해당 인벤토리에 포함됩니다. 그렇다면, 최종 로그인 전에 작성되었지만 후안이 보지 않고 지나간 게시물은 어떻게 처리될까요?
이용자가 보지 못하고 지나친 게시물의 경우, 한 번 더 기회를 주기 위해 ‘범핑(bumping) 로직’을 적용합니다. 이전 세션에서 후안을 위해 순위가 매겨져 뉴스피드에 노출됐지만 그가 미처 보지 못한 게시물은 범핑 로직이 적용된 세션의 인벤토리에 추가됩니다. 또한 액션 범핑 로직을 적용해, 후안이 이미 확인했지만 그 이후에 친구들 사이에서 흥미로운 대화가 이루어진 게시물도 인벤토리에 추가됩니다.
다음으로, 시스템은 게시물 유형, 다른 항목과의 유사성, 게시물이 후안이 상호 작용하는 방식에 부합하는 정도 등의 다양한 요인을 바탕으로 각 게시물에 점수를 매깁니다. 수십억 명의 이용자를 위해, 각 이용자 별로 1,000개가 넘는 게시물의 점수를, 그것도 실시간으로 계산하기 위해서 Facebook은 뉴스피드에 올라갈 수 있는 모든 후보 스토리에 다수의 ‘예측자(predictor)’ 모델을 동시 적용합니다.
이러한 모든 예측을 하나의 점수로 통합하기 전에, 몇 가지 추가 규칙을 적용해야 합니다. 소모되는 컴퓨팅 파워를 절약하기 위해 순위를 매길 게시물의 범위를 좁혀 첫 번째 예측이 나올 때까지 기다렸다가 다음의 단계를 진행합니다.
먼저, 모든 게시물은 ‘무결성’ 프로세스를 거칩니다. 필요한 경우, 순위를 정하기 위해 선택된 스토리의 신뢰도와 유해성을 확인하기 위해 어떤 ‘무결성’ 탐지 시스템을 적용할지 결정합니다. 그 다음에는 경량화 모델이 후안과 가장 관련성이 높은 게시물 중에서 후보 게시물 약 500개를 추립니다. 순위를 매길 스토리의 수가 적을수록 다음 단계에서 더욱 강력한 신경망 모델을 적용할 수 있습니다.
이후 점수를 매기는 단계를 거치게 됩니다. 대부분의 개인 맞춤화는 이 단계에서 이루어집니다. 각 스토리의 점수가 독립적으로 계산되고, 500개의 게시물이 모두 점수별로 정렬됩니다. 어떤 사람은 댓글보다 좋아요를 통해 자신을 표현하는 것을 좋아하기 때문에, 댓글보다 좋아요 점수가 더 높을 수 있습니다. ‘좋아요’라는 행위를 할 확률이 0에 가까운 경우와 같이, 이용자가 거의 하지 않는 행위에 대한 예측 값은 매우 낮기 때문에 순위에서 자동으로 밀려납니다.
마지막으로, 콘텐츠 유형의 다양성 규칙 같은 상황/문맥 단계가 진행됩니다. 이는 후안의 뉴스피드에 여러가지의 콘텐츠 유형을 제공하고 한 번에 여러 개의 동영상 게시물을 이어서 보여주는 일이 없도록 하기 위함입니다. 순위를 지정하는 이 모든 단계는 후안이 Facebook 앱을 여는 잠깐 사이에 이루어지며, 단 몇 초 내에 그가 둘러보고 즐길 수 있도록 점수가 매겨진 게시물이 배치된 뉴스피드로 표시됩니다.