LoopRec는 추천 이력 항목별로 필요한 재귀 깊이를 학습해 계산을 배분한다
Think Harder Where It Matters: Item-Level Adaptive Recursion for Sequential Recommendation
무엇인가
이 논문은 순차 추천 모델이 사용자 이력의 모든 항목에 똑같은 계산 깊이를 배정하는 관행을 문제로 삼는다. 실제 이력에는 반복 구매처럼 예측 신호가 약한 항목과 탐색적·전환적 항목이 섞여 있는데, 고정 깊이는 이런 차이를 반영하지 못한다. 저자들은 3층 SASRec을 Amazon Office Products에서 진단해, 전체 항목의 76.14%가 1층 만에 Top-30 추천 집합을 바꾸지 않을 만큼 포화되고 93.28%가 2층 이내에 포화되지만, 6.72%는 3층까지 가야 포화된다는 점을 보였다. 또한 최근 5개 항목의 깊이를 1·2·3층 중에서 유연하게 고르는 오라클 실험에서 고정 깊이가 최적인 경우는 4.6%뿐이었고, 유연 배정은 NDCG@20 7.1%, MRR@20 6.5%, HR@20 8.8% 개선됐다. 즉 같은 시퀀스 안에서도 필요한 계산량이 크게 다르며, 고정 깊이는 이미 수렴한 항목에 계산을 낭비하고 깊은 처리가 필요한 소수를 제대로 다루지 못한다는 주장이다.
어떻게 동작하나
LoopRec의 구조는 하나의 가중치 공유 블록을 여러 번 재귀 적용하는 방식이다. L층 블록을 최대 R회 재귀하는 LxRy 설정에서, 먼저 전체 시퀀스에 공유 블록을 한 번 적용해 초기 문맥 상태를 만든다. 이후 각 재귀 경계에서 항목별 라우터가 현재 상태와 재귀 인덱스 임베딩을 입력으로 점수를 계산하고, 시그모이드로 종료 확률을 구해 0.5 이상이면 그 항목은 현재 깊이에서 멈춘다. 계속할 항목만 다음 재귀에서 공유 블록을 다시 통과하며, 멈춘 항목은 상태를 유지한다. 마지막 재귀에서는 남은 항목을 모두 강제 종료한다. 최종 표현은 입력 토큰에 선택된 깊이의 상태를 깊이별 읽기 가중치로 더하는 residual 형태로 만들며, 순전파에서는 항목별 하드 깊이를 고르지만 이 읽기 가중치로 라우터 확률에 대한 미분 가능성을 유지한다. 별도의 깊이 레이블 없이 항목별 깊이가 학습되는 구조다.
무엇과 다른가
학습 목표는 추천 손실에 두 가지 라우터 정규화를 더한다. 하나는 깊이 붕괴를 막는 부하 분산 항목으로, 각 항목이 실제 경로에서 차지하는 소프트 깊이 질량과 하드 배정 빈도를 맞춰 특정 깊이에만 몰리지 않게 한다. 다른 하나는 라우터 z-loss로, 이진 게이트의 로그 파티션을 벌점화해 학습 초기에 게이트가 너무 일찍 확신하지 않도록 한다. 추가로 W_router 에폭 동안은 모든 항목을 최대 깊이로 강제하고 라우팅과 정규화를 끄는 warm-up을 적용한 뒤 라우팅을 켠다. 이 설계는 특정 백본에 묶이지 않고 SASRec 같은 어텐션, BSARec, NextItNet, LRURec에 얹을 수 있다.
어떻게 쓰나
실험은 Amazon Reviews 2023의 Software, Office Products, Patio, Lawn & Garden에서 진행됐다. 사용자당 최소 10개 상호작용, leave-one-out 분할, 최대 시퀀스 길이 50, full-ranking MRR@10·20과 NDCG@10·20이 사용됐다. 네 백본과 세 데이터셋을 조합한 48개 백본-데이터셋-지표 비교에서 LoopRec은 모두 양의 개선을 냈고 44개가 통계적으로 유의했으며, 상대 개선폭은 0.69%에서 49.07%에 이르렀다. 어텐션 계열에서는 SASRec의 NDCG@20이 2.19~5.68%, BSARec이 0.97~3.48% 개선됐다. 한 설정에서는 Patio의 NDCG@20이 0.0192에서 0.0263으로 올랐고, 백본 평균 NDCG@20 개선은 Software 3.92%, Office 4.55%, Patio 11.14%로 가장 희소한 Patio에서 가장 컸다.
전제와 한계
라우팅 분석은 학습된 깊이가 최근 항목과 희소 항목에 더 깊게 배분되는 경향을 보여준다. 학습 빈도 구간별 평균 선택 깊이는 단일 등장 항목 2.160에서 100회 초과 항목 1.330으로 낮아졌고, 깊이 1 배정 비율은 50.3%에서 88.6%로, 깊이 4 배정 비율은 29.1%에서 10.7%로 줄었다. 포화 깊이 진단에서도 최근 분위의 평균 포화 깊이가 1.76으로 앞선 세 분위의 1.16·1.17·1.20보다 높았고, 단일 등장 항목은 평균 1.873에 전체 깊이 포화 비율 18.0%를 보인 반면 100회 초과 항목은 평균 1.197, 전체 깊이 포화 5.7%, 깊이 1 비율 86.1%였다. 절제 실험에서는 시퀀스 수준 루프가 Software와 Office에서 바닐라보다 나았지만 Patio에서는 개선이 없었고, 항목별 깊이 배분을 포함한 LoopRec이 세 데이터셋 모두에서 가장 높았다. warm-up을 제거하면 평균 MRR@20 4.03%, NDCG@20 3.11%가 떨어졌고, 두 정규화를 모두 제거하면 각각 5.36%, 4.25%가 떨어졌다. 측정된 설정에서 선택 연산량은 고정 깊이 기준의 0.407~0.755배였지만 인코더 지연은 0.869~0.995배로, 계산 절감이 벽시계 시간 이득으로 완전히 이어지지는 않았다.
개발자 관점에서 이 논문은 이력 항목의 중요도가 고르지 않고 데이터가 희소할수록 고정 깊이의 비효율이 커질 수 있다는 점을 보여준다. 공유 블록을 재사용해 깊이가 달라도 같은 표현 공간을 유지하고, 항목별 종료 게이트를 학습하되 warm-up과 부하 분산·z-loss로 라우팅을 안정화하는 패턴은 추천 외의 시퀀스 모델에도 참고할 만하다. 다만 실제 서빙에서는 선택 연산량 감소가 지연 감소로 얼마나 이어지는지, 최대 재귀 예산을 어떤 값으로 둘지, 게이트 임계값과 정규화 강도가 데이터 희소성에 따라 어떻게 달라지는지 확인해야 한다.
저자들이 밝힌 한계는 최대 재귀 예산이 모델 학습 전에 설정별로 고정된다는 점이다. 또한 계산량은 줄지만 지연 이득은 설정에 따라 달라지며, 향후 과제로 희소성 인식 커널과 최대 재귀 예산 자체를 학습하는 방법을 제시한다. 라우팅이 최근·희소 항목에 더 깊은 계산을 준다는 결과는 평균적 경향이며 항목별 절대 규칙은 아니라는 전제도 함께 읽어야 한다.