← notes

음악의 반복 소비 성향을 이용한 Sequential Recommendation

2025-07-11 · recsys, music-rec, sequential-rec

[!tip] about 음악 소비 시 반복 청취 성향을 Sequential Recommendation에 이용한 논문 2개 / 둘다 RecSys’24 / 음악은 원래 꽂히면 무한반복재생이지!

Enhancing Sequential Music Recommendation with Personalized Popularity Awareness (2024)

💻 code: https://github.com/sisinflab/personalized-popularity-awareness

개인화된 인기도 (PPS)

p^P(j)=cj+ϵmax(C+ϵ)z=1Ncz+ϵmax(C+ϵ). \hat{p}_P(j) = \frac{c_j + \epsilon max(C + \epsilon)}{\sum_{z=1}^{N} c_z + \epsilon max(C + \epsilon)}.

Softmax 사용시,

모델이 생산하는 점수는

pM(ji)=softmax(xji)=exjiz=1Nexjzp_M(j_i) = \text{softmax}(x_{ji}) = \frac{e^{x_{ji}}}{\sum_{z=1}^{N} e^{x_{jz}}}

PPS는

p^P(j)=cj+ϵmax(C+ϵ)z=1Ncz+ϵmax(C+ϵ)=eln(cj+ϵmax(C+ϵ))eln(z=1Ncz+ϵmax(C+ϵ))=ej~z=1Nez~.\hat{p}_P(j) = \frac{c_j + \epsilon max(C + \epsilon)}{\sum_{z=1}^{N} c_z + \epsilon max(C + \epsilon)} = \frac{e^{\ln (c_j + \epsilon \max(C + \epsilon))}}{e^{\ln (\sum_{z=1}^{N} c_z + \epsilon \max(C + \epsilon))}} = \frac{e^{\tilde{j}}}{\sum_{z=1}^{N} e^{\tilde{z}}}.

softmax 함수의 형태에 맞춰 Personalized Popularity 확률을 재구성하기 위한 변형 중간 단계라고 생각하면 됨..

j~=ln(cj+ϵmax(C+ϵ))\tilde{j} = \ln \left( \frac{c_j + \epsilon}{\max(C + \epsilon)} \right)

결론적으로 위 점수가 각 jj에 대한 PPS 점수라고 할 수 있고 이를 모델이 생성하는 점수에 더해서 최종 예측 확률이 나오게 됨!

pM(ji)=exijej~z=1Nexizez~p'_{M}(j_i) = \frac{e^{x_{ij}} \cdot e^{\tilde{j}}}{\sum_{z=1}^{N} e^{x_{iz}} \cdot e^{\tilde{z}}}

Sigmoid 사용시,

모델이 생산하는 점수는

pM(ji)=sigmoid(xji)=11+exjip_M(j_i) = \text{sigmoid}(x_{ji}) = \frac{1}{1 + e^{-x_{ji}}}

비슷하게 계산하면

j~=ln(1p^P(j)p^P(j))\tilde{j} = -\ln \left( \frac{1 - \hat{p}_P(j)}{\hat{p}_P(j)} \right)

xij=xij+j~x'_{ij} = x_{ij} + \tilde{j} 이 통합된 점수를 다음과 같이 최종 예측 확률에 사용

Result

![[pps-sequential-recommendation-experiment.png|625]]

Transformers Meet ACT-R: Repeat-Aware and Sequential Listening Session Recommendation (2024)

💻 code: https://github.com/deezer/recsys24-pisa (tensorflow implementation + Deezer dataset)

![[transformer-actr-illustration.png|625]]

Architecture

![[transformer-actr-architecture.png|625]]

ACT-R 프레임워크 + Session Embedding

3가지 구성요소

BLv(u)=softmaxs(u)(k(treftk(u,v))α)\text{BL}^{(u)}_v = \text{softmax}_{s^{(u)}} \left( \sum_k (t_{ref} - t^{(u,v)}_k)^{-\alpha} \right) SPRv(u)=vs(u),vvCvv\text{SPR}^{(u)}_v = \sum_{v' \in s^{(u)}, v' \neq v} C_{vv'} Pv(u)=vs(u),vvmvmv\text{P}^{(u)}_v = \sum_{v' \in s^{(u)}, v' \neq v} m_v^\top m_{v'}

최종적으로 세션 임베딩은 각 곡 임베딩의 가중합으로 계산되고,

ms(u)=vs(u)wvmvm_{s^{(u)}} = \sum_{v \in s^{(u)}} w_v m_v

가중치는 각 컴포넌트의 선형조합으로 계산됨. 이때 3종류의 가중치는 learnable global parameter

wv=wBLBLv(u)+wSPRSPRv(u)+wPPv(u)w_v = w_{BL} \text{BL}^{(u)}_v + w_{SPR} \text{SPR}^{(u)}_v + w_P \text{P}^{(u)}_v

User Embedding

각 사용자는 장기 선호도와 단기 선호도의 조합으로 표현

mu=βmushort+(1β)mulongm_u = \beta m^{short}_u + (1 - \beta) m^{long}_u

장기 선호도: 사용자의 과거 청취 기록에서 BL값이 가장 높은 상위 20개 노래의 임베딩 벡터의 가중평균

mulong=vTop-BL(u)BLuvmvm^{long}_u = \sum_{v \in \text{Top-BL}^{(u)}} \text{BL}_u v m_v

단기 선호도: Transformer 아키텍쳐 사용

Training

Lsong(Θ)=S(u)Sl=1L1vsl+1(u),vol+1(u)ln(1+e(mu,lmvmu,lmv))\mathcal{L}_{\text{song}}(\Theta) = \sum_{S^{(u)} \in \mathcal{S}} \sum_{l=1}^{L-1} \sum_{v \in s^{(u)}_{l+1}, v' \in o^{(u)}_{l+1}} \ln \left( 1 + e^{- (m_{u,l}^\intercal m_v - m_{u,l}^\intercal m_{v'})} \right) Lsession(Θ)=S(u)Sl=1L1(1mu,lmsl+1(u))\mathcal{L}_{\text{session}}(\Theta) = \sum_{S^{(u)} \in \mathcal{S}} \sum_{l=1}^{L-1} \left( 1 - m_{u,l}^\intercal m_{s^{(u)}_{l+1}} \right)

Result

![[transformer-actr-result.png|625]]