Branch Log · Open in interactive viewer →

13 Matrix Factorization by Optimization

GPU를 활용한 병렬화가 용이하다.


13.4 Matrix Factorization Formulation

어떤 행렬 $R$ 을, 두 개의 행렬 곱( $R'=U \times V$ )으로 근사하는 기법을 Matrix Factorization이라고 한다.

$$ E(U, V) = \sum_{m, n} (R_{mn} - R'_{mn})^2 $$

matrix example

오차를 최소화할 때, 일반적으로 기계 학습의 regularization 항을 추가한다.

$$ \underset{U, V}{\arg \min} E(U, V) = \sum_{m, n} (R_{mn} - R'{mn})^2 + \lambda \left( \sum^2 \right) $$} U_{mp}^2 + \sum_{p,n} V_{pn

Linear Algebra로 표현하면 다음과 같다. (L2 norm)

$$ \underset{U, V}{\arg \min} E(U, V) = ||R-R'||_F^2 + \lambda (||U||_F^2+||V||_F^2) $$


13.4.1 Solve with Gradient Descent

경사 하강법을 사용하여 $U$와 $V$를 업데이트할 수 있다.

**Algorithm**
*for t = 1 to infinite* { $\quad$ *for all m and p*, $U_{mp}^{t+1} = U_{mp}^t - \lambda {\left( \frac{\partial E(U,V)}{\partial U_{mp}} \right)}_{U{mp} = U^t{mp}}$ $\quad$ *for all p and n*, $V_{pn}^{t+1} = V_{pn}^t - \lambda \left( \frac{\partial E(U,V)}{\partial V_{pn}} \right)_{V{pn}=V^t{pn}}$ }

13.5 Matrix Factorization Variations

기본 형태는 다음과 같다.

$$ r_{u, i} \approx u_u \bullet v_i $$

다음은 학습 파라미터 $b_u, b_i$ (bias)를 포함하는 variation이다.

예를 들어, 영화 점수를 사람별로 매긴 행렬이 있다면, 사람 A행 B행 C행마다 bias가 다르게 존재해야 한다.

$$ r_{u, i} \approx \mu + b_u + b_i + p_u \bullet q_i $$

$$ r_{u, i} \approx \mu + b_u + b_i + p_u \bullet q_i $$

예를 들어 마지막 수식의 target function은 다음과 같다.

$$ \min_{b_{\ast}, p_{\ast}, q_{\ast}} \sum_{(u,i) \in \mathcal{R}} (r_{u,i} - (\mu + b_u + b_i + p_u \bullet q_i))^2 + \lambda (b_u^2 + b_i^2 + ||p_u||^2 + ||q_i||^2) $$

Notes: 미분 수식


13.5.1 Collective Matrix Factorization

다음은 주로 추천 도메인에서 사용하는 collective matrix factorization의 예시다.

matrix example 2

두 데이터에서, user factor $X$ 를 공유하는 조건으로 손실 함수를 modeling한다.

$$ L(X, Y, Z) = \frac{1}{2} ||I_1 \circ (A -XY^T) ||_F^2 + \frac{\alpha}{2} \circ || B - XZ^T ||_F^2 + \frac{\beta}{2} (||X||_F^2 + ||Y||_F^2 + ||Z||_F^2 ) $$