← notes

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

, ,

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)=exji∑z=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)=exij⋅ej~∑z=1Nexiz⋅ez~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+e−xjip_M(j_i) = \text{sigmoid}(x_{ji}) = \frac{1}{1 + e^{-x_{ji}}}

비슷하게 계산하면

j~=−ln⁡(1−p^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

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

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

Architecture

ACT-R 프레임워크 + Session Embedding

3가지 구성요소

BLv(u)=softmaxs(u)(∑k(tref−tk(u,v))−α)\text{BL}^{(u)}_v = \text{softmax}_{s^{(u)}} \left( \sum_k (t_{ref} - t^{(u,v)}_k)^{-\alpha} \right) SPRv(u)=∑v′∈s(u),v′≠vCvv′\text{SPR}^{(u)}_v = \sum_{v' \in s^{(u)}, v' \neq v} C_{vv'} Pv(u)=∑v′∈s(u),v′≠vmv⊤mv′\text{P}^{(u)}_v = \sum_{v' \in s^{(u)}, v' \neq v} m_v^\top m_{v'}

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

ms(u)=∑v∈s(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=∑v∈Top-BL(u)BLuvmvm^{long}_u = \sum_{v \in \text{Top-BL}^{(u)}} \text{BL}_u v m_v

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

Training

Lsong(Θ)=∑S(u)∈S∑l=1L−1∑v∈sl+1(u),v′∈ol+1(u)ln⁡(1+e−(mu,l⊺mv−mu,l⊺mv′))\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)∈S∑l=1L−1(1−mu,l⊺msl+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