페이스북이 뉴스 피드 랭킹을 만들고 개선하는 방법

최근에 페이스북 피드 랭킹 팀과의 인터뷰를 통해 피드 랭킹에 사용되는 데이터와 알고리즘을 상세하게 소개하는 글이 있어 소개합니다. 사용자의 질의어 대신 선호도를 바탕으로 동장하는 검색엔진에 비유할수도 있겠습니다. 이 글은 지속적으로 발전하는 온라인 서비스를 위한 다양한 교훈을 제공합니다.

요약하면, 사용자 행동 / 패널 / 피드백은 보완적인 시그널을 제공하며, 따라서 사용자 행동에 대한 정교한 로깅, 그리고 사용자가 간단한 피드백을 제공할 수 있는 채널 확보, 그리고 사용자를 대변하는 패널을 통한 상세한 피드백 청취는 모두 필요하다는 점입니다.

아래 핵심 내용을 간추려 보았습니다:

  • 사용자가 접속할때마다 평균 1500개의 피드가 랭킹 대상이 된다. 이 숫자는 사용자의 친구 수 및 활동성 정도에 따라 달라진다.

  • 초기에는 클릭이나 LIKE같은 사용자 행동에 기반한 랭킹 시그널만을 사용했다. (즉, LIKE 수를 가장 높이는 피드의 순서를 계산한다) 특히 페북 초기에 LIKE는 클릭보다 훨씬 좋은 시그널이 되었다.

  • 하지만 클릭된 피드가 꼭 좋으리라는 보장은 없고, (제목은 현란하지만 실제 광고 / 스팸성 글들) LIKE역시 스팸 가능성이 높다. 또한 주변 사람들의 안좋은 소식은 중요하지만 LIKE되지는 않는다.

  • 점차 행동 기반의 시그널의 맹점을 인식하면서 사용자의 실제 선호도를 대변할 수 있는 패널을 사용하기 시작했다. 처음에는 미국 한 지역에 있던 패널이 전미 각 지역으로, 그리고 전세계로 퍼져서 패북 사용자의 다양한 취향을 반영하고 있다.

  • 페북은 패널과 함께 실제 사용자들이 자신의 피드에 보이는 내용을 통제할 수 있는 옵션을 제공하기 시작했다. 피드를 감추거나 사용자의 선호도를 표현할 수 있게 한 것이다. 이 내용은 당연히 피드 랭킹에 직접 반영된다.

  • 하지만 이렇게 선호도를 표시하는 사용자는 일부에 불과하며, 어떤 사용자들은 읽은 피드를 모두 감추는 행동을 보였다. 따라서 피드 랭킹 알고리즘은 이런 데이터의 불균형성도 고려해야 했다.

  • 행동 기반 시그널도 진화를 거듭하여, 피드를 클릭하여 읽은 시간, LIKE를 눌렀을 때 피드를 읽고 눌렀는지 안읽고 눌렀는지 등에 따라 차등을 두고 있다. 당연히 읽고 누른 LIKE가 좀더 확실한 시그널이다.

  • 피드 알고리즘에 대한 모든 개선사항은 오프라인 테스트, 내부 테스트, 사용자 대상의 A/B 테스트를 거치며, 알고리즘이 실제 서비스에 반영된 이후에도 개선된 알고리즘의 영향을 받지 않는 Hold-out 그룹을 두어 신규 알고리즘의 long-term effect를 검증한다.

업데이트 (2/1): 오늘 자로 페이스북이 피드 랭킹 알고리즘을 다시 바꾼 모양입니다. 이번에는 평가단의 조사 결과를 적극 반영했다고 하네요. 클릭이나 라이크와 같은 행동 기반의 시그널이 악용될 소지가 많다는 판단에 페이지 품질 기반의 시그널의 비중을 높인 것으로 보입니다.