상위 목록: 하위 목록: 작성 날짜: 읽는 데 9 분 소요

암시적 피드백(Implicit Feedback)

행렬 분해(Matrix Factorization)까지는 사용자가 직접 남긴 평점, 즉 명시적 피드백(Explicit Feedback)을 가정했습니다. 그러나 추천 시스템이란?에서 다룬 것처럼, 실제 서비스에 쌓이는 데이터의 대부분은 클릭, 구매, 장바구니 담기, 시청 시간 같은 암시적 피드백(Implicit Feedback)입니다. 평점을 남기는 사용자는 일부이지만, 서비스를 이용하는 모든 사용자는 행동의 흔적을 남깁니다.

암시적 피드백은 양이 압도적으로 많고 사용자의 실제 행동을 반영한다는 장점이 있지만, 명시적 피드백과는 성질이 다른 데이터입니다. 평점 데이터에서 잘 동작하던 방법을 그대로 적용하면 제대로 학습되지 않습니다. 이 강좌에서는 암시적 피드백이 가진 문제와, 그 문제를 다루기 위해 고안된 방법들을 살펴봅니다.



암시적 피드백의 특성

암시적 피드백은 명시적 피드백과 비교해 다음과 같은 특성을 가집니다.

  • 부정적 피드백이 없습니다. 평점 데이터에서는 1점이라는 값으로 싫어한다는 사실을 알 수 있지만, 암시적 피드백에서 관측되는 것은 대부분 클릭이나 구매처럼 긍정적인 행동뿐입니다. 사용자가 싫어하는 아이템은 행동이 없는 빈칸으로 남습니다.
  • 빈칸의 의미가 모호합니다. 사용자가 어떤 아이템을 클릭하지 않았다면, 그 아이템을 싫어해서일 수도 있고, 단지 본 적이 없어서일 수도 있습니다. 빈칸 대부분은 후자에 해당합니다.
  • 값이 선호의 강도가 아닙니다. 어떤 노래를 열 번 재생했다면 한 번 재생한 노래보다 좋아할 가능성이 높지만, 열 배 좋아한다는 뜻은 아닙니다. 자동 재생 목록에 들어 있어 반복 재생되었을 수도 있습니다. 값은 선호의 크기보다 그 관측을 얼마나 믿을 수 있는지에 가깝습니다.
  • 잡음이 많습니다. 실수로 누른 클릭, 선물로 산 상품, 다른 가족이 대신 본 영상이 모두 기록됩니다. 반대로 구매 후 반품했거나 시청 직후 이탈한 경우처럼, 관측된 행동이 오히려 불만족을 뜻하기도 합니다.


이 중 가장 근본적인 것은 첫 번째와 두 번째 특성입니다. 관측된 값이 모두 긍정이고 부정은 빈칸에 섞여 있으므로, 이 문제를 단일 클래스 협업 필터링(One-Class Collaborative Filtering)이라 부릅니다. 지도 학습(Supervised Learning)의 분류 문제로 보면, 정답 레이블이 1인 데이터만 있고 0인 데이터는 레이블이 없는 데이터 속에 섞여 있는 셈입니다.



관측되지 않은 칸을 다루는 문제

명시적 피드백의 행렬 분해는 관측된 칸에서만 오차를 계산했습니다. 이 목적 함수를 암시적 피드백에 그대로 적용하면 어떻게 될까요? 관측된 칸은 모두 1이므로, 모든 사용자 벡터와 아이템 벡터의 내적이 1이 되도록 학습하면 오차가 0이 됩니다. 모델은 모든 아이템을 좋아한다고 예측하게 되고, 추천은 의미가 없어집니다.

반대로 관측되지 않은 칸을 모두 0으로 채우고 전체 행렬에 대해 오차를 계산하면, 사용자가 아직 보지 못한 아이템까지 싫어하는 아이템으로 학습합니다. 추천 시스템의 목적이 바로 사용자가 아직 보지 못한 아이템 중에서 좋아할 만한 것을 찾는 것이므로, 이 가정은 목적과 정면으로 충돌합니다.

또한 빈칸은 무작위로 생긴 것이 아닙니다. 사용자는 자신이 관심 있을 만한 아이템을 주로 찾아보고, 추천 시스템이 보여 준 아이템을 주로 클릭합니다. 이처럼 값이 관측되지 않는 이유가 그 값 자체와 관련 있는 경우를 무작위가 아닌 결측(Missing Not At Random, MNAR)이라 합니다. 따라서 관측되지 않은 칸은 모두 같은 의미가 아니며, 관측된 칸과 관측되지 않은 칸을 어떻게 다르게 대할지가 암시적 피드백 학습의 핵심 문제가 됩니다.

이 문제에 대한 접근은 크게 두 가지입니다. 하나는 모든 빈칸을 0으로 보되 낮은 신뢰도를 주는 것이고, 다른 하나는 빈칸 중 일부만 표본으로 뽑아 부정적인 예로 사용하는 것입니다.



가중 행렬 분해(Weighted Matrix Factorization)

2008년 이팡 후(Yifan Hu), 예후다 코렌(Yehuda Koren), 크리스 볼린스키(Chris Volinsky)는 암시적 피드백을 선호(Preference)와 신뢰도(Confidence)라는 두 값으로 나누어 표현했습니다. 사용자 \(u\)가 아이템 \(i\)와 상호작용한 양을 \(r_{ui}\)라 하면, 선호는 상호작용이 있었는지만 나타내는 0 또는 1의 값입니다.

\[p_{ui} = \begin{cases} 1 & r_{ui} > 0 \\ 0 & r_{ui} = 0 \end{cases}\]


신뢰도는 그 선호를 얼마나 믿을 수 있는지를 나타내며, 상호작용의 양이 많을수록 커집니다.

\[c_{ui} = 1 + \alpha \, r_{ui}\]


\(\alpha\)는 상호작용의 양을 신뢰도로 바꾸는 비율로, 원 논문에서는 40 정도가 좋은 결과를 보였습니다. 어떤 프로그램을 3번 시청했다면 선호는 1이고 신뢰도는 \(1 + 40 \times 3 = 121\)입니다. 한 번도 시청하지 않은 프로그램은 선호가 0이고 신뢰도는 1입니다. 즉, 관측되지 않은 칸도 0으로 학습하지만, 그 오차는 관측된 칸보다 훨씬 작은 가중치로 반영됩니다.

목적 함수는 신뢰도로 가중치를 준 제곱 오차를 모든 칸에 대해 더합니다.

\[\min_{X, Y} \sum_{u, i} c_{ui} \left( p_{ui} - \mathbf{x}_u \cdot \mathbf{y}_i \right)^2 + \lambda \left( \sum_{u} \lVert \mathbf{x}_u \rVert^2 + \sum_{i} \lVert \mathbf{y}_i \rVert^2 \right)\]


\(\mathbf{x}_u\)와 \(\mathbf{y}_i\)는 각각 사용자 벡터와 아이템 벡터입니다. 명시적 피드백의 행렬 분해와 달리 합이 관측된 칸이 아니라 모든 칸에 걸쳐 있다는 점이 다릅니다. 이 방법을 가중 행렬 분해(Weighted Matrix Factorization, WMF) 또는 교대 최소 제곱법으로 학습한다는 뜻에서 Implicit ALS라 부릅니다.


모든 칸을 계산하는 방법

모든 칸을 합에 포함하면 칸의 수가 \(10^{13}\)개에 이를 수 있으므로, 확률적 경사 하강법으로 하나씩 갱신하는 것은 불가능합니다. 이 문제는 행렬 분해에서 다룬 교대 최소 제곱법의 구조로 해결합니다. 아이템 벡터를 고정했을 때 사용자 벡터의 해는 다음과 같습니다.

\[\mathbf{x}_u = \left( Y^{\top} C^u Y + \lambda I \right)^{-1} Y^{\top} C^u \mathbf{p}_u\]


\(Y\)는 모든 아이템 벡터를 쌓은 행렬이고, \(C^u\)는 사용자 \(u\)의 신뢰도 \(c_{ui}\)를 대각 성분으로 갖는 행렬, \(\mathbf{p}_u\)는 사용자 \(u\)의 선호 벡터입니다. 여기서 핵심은 \(Y^{\top} C^u Y\)를 다음과 같이 나누어 쓸 수 있다는 점입니다.

\[Y^{\top} C^u Y = Y^{\top} Y + Y^{\top} \left( C^u - I \right) Y\]


첫 번째 항 \(Y^{\top} Y\)는 사용자와 무관하므로 한 번만 계산해 모든 사용자가 공유할 수 있습니다. 두 번째 항의 \(C^u - I\)는 사용자 \(u\)가 상호작용한 아이템 위치에서만 0이 아니므로, 그 아이템들만 계산하면 됩니다. 마찬가지로 \(\mathbf{p}_u\)도 상호작용한 아이템에서만 1입니다. 결과적으로 모든 칸을 목적 함수에 포함하면서도, 계산량은 관측된 상호작용의 수에 비례하게 됩니다.

  • Tip : 가중 행렬 분해는 구현이 간단하고 성능이 안정적이어서 지금도 암시적 피드백 추천의 강력한 기준 모델로 쓰입니다. 최근의 재현 연구들에서도 하이퍼파라미터를 잘 조정한 가중 행렬 분해가 많은 신경망 기반 모델과 비슷하거나 더 좋은 성능을 보인다는 결과가 보고되었습니다.



네거티브 샘플링(Negative Sampling)

두 번째 접근은 빈칸 전체를 다루는 대신, 빈칸 중 일부를 무작위로 뽑아 부정적인 예로 사용하는 것입니다. 관측된 상호작용은 정답 1로, 뽑힌 빈칸은 오답 0으로 두고 학습합니다. 이는 단어 임베딩(Word Embedding)에서 다룬 네거티브 샘플링(Negative Sampling)과 같은 방법으로, 함께 등장한 단어 쌍 대신 사용자와 아이템의 상호작용 쌍을 정답으로 사용한 것입니다.

빈칸 중에는 사용자가 실제로 좋아할 아이템도 섞여 있으므로, 뽑힌 예가 잘못된 오답일 수 있습니다. 그러나 아이템이 수백만 개이고 사용자가 좋아할 아이템은 그중 극히 일부이므로, 무작위로 뽑은 아이템은 대부분 실제로 관심 없는 아이템입니다. 가끔 섞이는 잘못된 오답은 잡음으로 감수합니다.

네거티브 샘플링의 성능은 어떤 분포에서 뽑느냐에 크게 좌우됩니다.

  • 균등 샘플링(Uniform Sampling) : 모든 아이템을 같은 확률로 뽑습니다. 단순하지만 대부분의 아이템이 롱테일의 꼬리에 있으므로, 사용자가 존재조차 모르는 아이템이 주로 뽑힙니다. 모델은 인기 아이템과 비인기 아이템을 구분하는 것만으로 대부분의 오답을 맞힐 수 있으므로, 결과적으로 인기 아이템을 추천하는 모델이 되기 쉽습니다.
  • 인기도 기반 샘플링(Popularity-based Sampling) : 인기 있는 아이템일수록 더 자주 뽑습니다. 인기 아이템이 오답으로도 자주 등장하므로, 모델은 인기만으로 구분할 수 없고 사용자의 취향을 학습해야 합니다. 단어 임베딩의 네거티브 샘플링이 빈도를 그대로 쓰지 않고 완만하게 조정한 분포에서 뽑았듯, 인기도에 0과 1 사이의 지수를 씌워 사용하는 경우가 많습니다.
  • 하드 네거티브(Hard Negative) : 현재 모델이 높은 점수를 주었지만 실제로는 상호작용이 없는 아이템을 오답으로 사용합니다. 모델이 헷갈리는 예를 집중적으로 학습하므로 효과가 크지만, 그중에는 사용자가 아직 보지 못했을 뿐 실제로 좋아할 아이템이 많이 섞여 있어 학습이 불안정해질 수 있습니다.


  • Tip : 하나의 배치 안에서 다른 사용자의 정답 아이템을 오답으로 사용하는 배치 내 네거티브(In-batch Negative)도 널리 쓰입니다. 별도로 뽑을 필요가 없어 효율적이며, 배치 안의 아이템이 상호작용 빈도에 비례해 등장하므로 자연스럽게 인기도 기반 샘플링이 됩니다. 검색 증강 생성(Retrieval-Augmented Generation)에서 다룬 대조 학습에서도 같은 방법을 사용합니다.



순위 학습 관점

평점 데이터에서는 평점 값을 맞히는 것이 자연스러운 목표였습니다. 그러나 암시적 피드백에는 맞혀야 할 정확한 값이 없고, 추천에서 중요한 것은 결국 어떤 아이템을 위에 놓느냐입니다. 그래서 암시적 피드백에서는 값을 예측하는 대신 순서를 학습하는 관점이 널리 쓰이며, 학습의 단위에 따라 세 가지로 나뉩니다.

방식 학습 단위 목표 예시
점 단위(Pointwise) 사용자-아이템 쌍 하나 각 쌍의 값 또는 확률을 맞힘 가중 행렬 분해, 이진 분류
쌍 단위(Pairwise) 아이템 두 개 두 아이템의 상대적 순서를 맞힘 BPR
목록 단위(Listwise) 아이템 목록 전체 목록 전체의 순서를 최적화 소프트맥스 손실


점 단위(Pointwise) 방식은 각 사용자-아이템 쌍에 대해 독립적으로 1 또는 0을 맞힙니다. 앞에서 다룬 가중 행렬 분해와, 네거티브 샘플링한 쌍으로 이진 분류를 학습하는 방식이 여기에 속합니다. 쌍 단위(Pairwise) 방식은 같은 사용자에 대해 두 아이템 중 어느 쪽이 위에 와야 하는지를 학습합니다. 목록 단위(Listwise) 방식은 정답 아이템과 여러 오답 아이템을 함께 놓고, 정답의 확률이 가장 높아지도록 소프트맥스(Softmax)로 학습하는 방식이 대표적입니다.



BPR(Bayesian Personalized Ranking)

2009년 스테펜 렌들(Steffen Rendle) 연구진이 발표한 BPR(Bayesian Personalized Ranking)은 쌍 단위 방식의 대표적인 방법입니다. BPR의 가정은 단순합니다. 사용자는 상호작용한 아이템을 상호작용하지 않은 아이템보다 선호한다는 것입니다. 상호작용하지 않은 아이템을 싫어한다고 가정하지 않고, 단지 상호작용한 아이템보다는 덜 선호한다고만 가정하므로 암시적 피드백의 성질에 잘 맞습니다.

학습 데이터는 사용자 \(u\), 사용자가 상호작용한 아이템 \(i\), 상호작용하지 않은 아이템 \(j\)의 세 쌍 \((u, i, j)\)로 만듭니다. 사용자 \(u\)가 아이템 \(i\)에 대해 갖는 점수를 \(\hat{x}_{ui}\)라 하면, BPR은 \(i\)의 점수가 \(j\)의 점수보다 높을 확률을 시그모이드 함수 \(\sigma\)로 나타내고, 이 확률을 최대화합니다.

\[\min_{\Theta} \sum_{(u, i, j)} - \ln \sigma \left( \hat{x}_{ui} - \hat{x}_{uj} \right) + \lambda \lVert \Theta \rVert^2\]


\(\Theta\)는 모델의 모든 매개변수입니다. 손실은 두 점수의 차이에만 의존하므로, 점수의 절대적인 크기가 아니라 상대적인 순서만 학습됩니다. 점수 \(\hat{x}_{ui}\)를 계산하는 모델은 무엇이든 될 수 있으며, 행렬 분해의 내적 \(\mathbf{p}_u \cdot \mathbf{q}_i\)를 사용하는 경우를 흔히 BPR-MF라 합니다.

예를 들어 상호작용한 아이템의 점수가 2.0이고 상호작용하지 않은 아이템의 점수가 0.5라면, 차이는 1.5이고 \(\sigma(1.5) \approx 0.818\)이므로 손실은 \(-\ln 0.818 \approx 0.201\)입니다. 반대로 상호작용하지 않은 아이템의 점수가 1.5만큼 더 높다면 \(\sigma(-1.5) \approx 0.182\)이므로 손실은 약 1.701로 크게 늘어납니다. 순서가 맞으면 손실이 작고, 순서가 틀릴수록 손실이 커집니다.

BPR은 세 쌍을 하나씩 뽑아 확률적 경사 하강법으로 학습합니다. 가능한 세 쌍의 수는 매우 많지만, 대부분의 세 쌍은 이미 순서가 맞아 손실이 0에 가까우므로 학습에 기여하지 않습니다. 그래서 학습이 진행될수록 순서가 틀리기 쉬운 오답을 골라 뽑는 것이 중요해지며, 이는 앞에서 다룬 하드 네거티브와 같은 문제의식입니다.

  • Tip : BPR의 손실은 정답 하나와 오답 하나로 이루어진 소프트맥스 손실과 수학적으로 같습니다. 오답의 수를 하나에서 여러 개로 늘리면 목록 단위의 소프트맥스 손실이 되므로, 세 방식은 서로 완전히 분리된 것이 아니라 한 번에 비교하는 오답의 수가 다른 것으로 볼 수도 있습니다.



관측의 편향

암시적 피드백에는 사용자의 선호뿐 아니라 무엇이 사용자에게 보였는지가 함께 기록됩니다. 사용자는 화면에 보인 아이템만 클릭할 수 있으므로, 클릭 기록에는 사용자의 취향과 당시 추천 시스템의 결정이 섞여 있습니다. 이를 노출 편향(Exposure Bias)이라 합니다.

같은 아이템이라도 목록의 첫 번째에 놓였을 때와 스무 번째에 놓였을 때의 클릭률은 크게 다릅니다. 사용자가 위쪽부터 보고 아래쪽은 잘 보지 않기 때문이며, 이를 위치 편향(Position Bias)이라 합니다. 위에 놓여서 클릭된 아이템을 선호도가 높은 아이템으로 학습하면, 모델은 다시 그 아이템을 위에 놓고, 그 아이템은 다시 더 많이 클릭됩니다.

이러한 순환은 추천 시스템이란?에서 다룬 인기도 편향을 강화하고, 새로운 아이템이 노출될 기회를 줄입니다. 그래서 실제 서비스에서는 노출되었지만 클릭되지 않은 아이템을 부정적인 예로 활용하거나, 노출 위치를 모델의 입력으로 넣어 위치의 효과를 분리하거나, 일부 트래픽에서 무작위로 아이템을 노출해 편향 없는 데이터를 수집하는 등의 방법을 함께 사용합니다.

  • Tip : 노출되었지만 클릭되지 않은 아이템은 단순히 관측되지 않은 아이템보다 훨씬 믿을 만한 부정적인 예입니다. 사용자가 그 아이템을 보고도 선택하지 않았다는 정보가 있기 때문입니다. 노출 기록을 남기는 서비스라면 이 데이터를 우선적으로 활용하는 것이 좋습니다.



암시적 피드백 정리

방법 빈칸을 다루는 방식 학습 단위 특징
가중 행렬 분해 모든 빈칸을 0으로, 낮은 신뢰도 부여 점 단위 교대 최소 제곱법으로 효율적 계산
네거티브 샘플링 빈칸 중 일부를 뽑아 오답으로 사용 점 단위 샘플링 분포가 성능을 좌우
BPR 상호작용한 아이템을 더 선호한다고 가정 쌍 단위 순서만 학습, 점수 모델과 무관
소프트맥스 손실 정답 하나와 여러 오답을 함께 비교 목록 단위 배치 내 네거티브와 함께 사용

암시적 피드백의 핵심은 관측되지 않은 것을 어떻게 해석하느냐입니다. 가중 행렬 분해는 빈칸을 약하게 믿는 부정으로, 네거티브 샘플링은 일부만 뽑은 부정으로, BPR은 부정이 아니라 상대적으로 덜 선호하는 것으로 해석했습니다. 해석은 서로 다르지만, 모두 빈칸을 무시하지도 그대로 믿지도 않는다는 점은 같습니다.

암시적 피드백에서는 예측 값과 비교할 정확한 평점이 없으므로, 평점의 오차로 모델을 평가할 수도 없습니다. 모델이 사용자가 실제로 상호작용한 아이템을 얼마나 위에 놓았는지로 평가해야 하며, 다음 강좌에서는 추천 시스템을 평가하는 지표와 방법을 다룹니다.



  • Writer by : 윤대희

댓글 남기기