ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ scikit-surprise ] SVD Regularization Terms 알아보기
    AI-ML 2024. 5. 18. 17:55
    728x90
    반응형

     

    - 목차

     

    키워드.

    • - scikit-surprise
    • - SVD
    • - Lasso Regularization


    함께 보면 좋은 글.

    https://westlife0615.tistory.com/844

    [scikit-surprise] SVD Model 알아보기 ( Singular Value Decomposition )

    - 목차 키워드.scikit-surpriseMatrix FactorizationSVDLatent Space 함께 보면 좋은 글.https://westlife0615.tistory.com/851 [scikit-surprise] Dataset 이해하기- 목차 키워드.scikit-surpriseCollaborative FilteringRecommender Systemmoviele

    westlife0615.tistory.com

    https://westlife0615.tistory.com/858

    [scikit-surprise] SVD 모델 생성하기

    - 목차 키워드.scikit-surpriseSVDMatrix Factorization  들어가며.SVD 에 대해서 설명하는 이전 글과 이어지는 내용입니다. https://westlife0615.tistory.com/844 [scikit-surprise] SVD Model 알아보기 ( Singular Value Decomposi

    westlife0615.tistory.com

     

    들어가며.

    이번 글에서는 scikit-surprise 라이브러리의 SVD 모델이 사용하는 Regularization 에 대해서 알아보려고 합니다.
    scikit-surprise 의 SVD 알고리즘은 Matrix Factorization 기법을 활용합니다.
    scikit-surprise 의 SVD 알고리즘이 사용하는 Matrix Factorization 방식을 간단히 설명하자면 아래의 그림 설명과 유사합니다.
    왼쪽은 Matrix 는 다른 2개의 Matrix A, Matrix B 의 분해할 수 있고,
    Matrix A 와 Matrix B 의 Dot Product 로써 원본의 Matrix 를 복원할 수 있습니다.
    아래의 표시한 분홍색, 초록색, 보라색 Cell 들은 서로 간의 관계를 표현합니다.

     
    SVD 방식의 Matrix Factorization 은 학습을 반복하면서 원본 Matrix 의 Cell 이 2개의 Matrix 들로 분해될 수 있도록 학습을 반복합니다.
    이 과정에서 MSE Loss 를 최적화하는 방식으로 학습이 진행되는데요.
    이번 글에서는 MSE Loss 를 최적화하는 과정에서 사용되는 Regulalization 에 대해 알아봅니다.
     

    SVD 관련 수학적 증명 살펴보기.

     
    먼저 추천 시스템에서 사용되는 여러 표현들에 대해서 알아봅니다.
    아래와 같은 user - item - rating 의 평점 데이터셋을 기준으로 설명하도록 하겠습니다.
     

     
    $ r_{ui} $ 은 user u 가 item i 에 부여한 평점을 의미합니다.
    $ \hat{r_{ui}} $ 는 user u 가 item i 에 부여할 예상 평점을 의미합니다.
    추천 시스템에서 모든 사용자가 모든 아이템에 대해서 평점을 부여하거나 상호작용을 하지 않는다는 점이 중요합니다.
    그래서 $ \hat{r_{ui}} $ 와 같은 예측값 이 중요하게 활용됩니다.
     
    $ b_{u} $ 는 User 의 Bias Term 에 해당합니다.
    이는 사용자마다 고유한 bias 가 있다는 가정입니다.
    어떤 사용자는 평점을 후하게 주는 경향이 있고, 어떤 사용자는 그렇지 않을 수 있죠.
    이러한 개개인의 bias 를 반영합니다.
    만약 user 의 수가 1000 명이라면 $ b_{u} $ 는 length 가 1000 인 Vector 가 됩니다.
    그리고 각 user 에 해당하는 Bias Value 가 존재합니다.
     
    $ b_{i} $ 는 Item 의 Bias Term 입니다.
    $ b_{u} $ 와 마찬가지로 item 별 bias 를 고려한 결과이며, item 의 수만큼의 length 를 가지는 Vector 표현됩니다.
     
    $ P_{u} $ 는 User 의 Latent Matrix 를 의미합니다.
    아래와 같이 User - Item Matrix 를 User Latent Matrix 와 Item Latent Matrix 로 행렬분해를 하였을 때에
    User Latent Matrix 가 $ P_{u} $ 이 됩니다.
    또한 $ P_{i} $ 는 Item Latent Matrix 에 해당합니다.

     
    $ p_{u} $ 는 $ P_{u} $ 인 User Latent Matrix 에서 특정 사용자의 Latent Vector 에 해당합니다.
    위 그림에서 분홍색 영역이 첫번째 user 의 Latent Vector, 초록색 영역이 세번째 user 의 Latent Vector,
    보라색 영역이 5번째 user 의 Latent Vector 가 됩니다.
     
    이처럼 $ q_{i} $ 는 $ Q_{i} $ 인 Item Latent Matrix 에서 특정 item 의 Latent Vector 가 됩니다.
    위 그림에서 분홍색 영역이 첫번째 item 의 Latent Vector, 초록색 영역이 2번째 item 의 Latent Vector,
    보라색 영역이 5번째 item 의 Latent Vector 가 됩니다.
     
    참고로 User 를 P 로, Item 을 Q 로 표시하는 것은 그냥 하나의 컨벤션으로 이해하시면 좋을 것 같네요.
     

    Regularization 이란 ?

    Regularization 은 머신러닝, 딥러닝 분야에서 흔히 사용됩니다.
    이는 이론적으로는 모델의 Overfit 을 방지하는 목적으로 사용됩니다.
    그럼 SVD 에서 어떻게 과적합을 방지하는지 수학적으로 알아봅니다.
    SVD 는 MSE Loss 를 Loss Function 으로써 사용합니다.
    이는 수학적으로 아래와 같습니다.
     
    $$ \hat{r_{ui}} = b_{u} + b_{i} + p^{T}_{u} \times q_{i} $$
    위의 표현은 어떤 user 가 어떤 item 에 몇 점의 평점을 부여할지에 대한 예측값이구요.
    이 과정에서 Bias 와 Latent Matrix 의 연산이 사용됩니다.
     

     
     
     
    $$ Loss = \sum (r_{ui} - \hat{r_{ui}})^{2} + \lambda ( b^{2}_{u} + b^{2}_{i} + ||p||^{2}_{u} + ||q||^{2}_{i} )$$
    ( 참고로 $||p||^{2}_{u}$ 는 user 의 Latent Vector 의 제곱합을 의미합니다. )

    그리고 Loss Function 을 Bias 와 Latent Vector 를 기준으로 미분을 취합니다.
     
    $$ \frac{\delta loss}{\delta b_{u}} =  \sum 2 \times -(r_{ui} - \hat{r_{ui}})+ \lambda \times 2 \times b_{u} $$
    $$ \frac{\delta loss}{\delta b_{i}} = \sum 2 \times -(r_{ui} - \hat{r_{ui}})+ \lambda \times 2 \times b_{i} $$
    $$ \frac{\delta loss}{\delta p_{u}} =  \sum 2 \times -(r_{ui} - \hat{r_{ui}}) \times q_{i} + \lambda \times 2 \times p_{u} $$
    $$ \frac{\delta loss}{\delta q_{i}} =  \sum 2 \times -(r_{ui} - \hat{r_{ui}}) \times p_{u} + \lambda \times 2 \times q_{i} $$
     
    SVD 에서 사용되는 4개의 Parameter 인 User Bias, Item Bias, User Latent Vector, Item Latent Vector 는
    Loss 에 대한 위와 같인 미분결과를 가집니다.
    결과적으로 아래와 같은 구조로 Parameter 가 재조정되면서 학습이 수행되게 되는데요.

    모든 Parameter 는 Loss 가 클수록 재조정의 크기가 커지게 됩니다. 
    반면 Regularization Term 이 추가되었기 때문에 User Bias 와 Item Bias 는 Bias 값이 클수록 그 재조정의 폭이 줄어들게 됩니다.
    그래서 Bias 가 변화하는 것에 대해 Penalty 가 부여되어, 과적합되는 것을 방지하게 됩니다.
    또한 User Latent Vector 와 Item Latent Vector 마찬가지로 동작합니다.
    하지만 $ \frac{\delta loss}{\delta p_{u}} $ 는 $ (r_{ui} - \hat{r_{ui}}) \times p_{u} $ 와 같이 Loss 와 Item Latent Vector 곱이 관여하기 때문에 User Latent Vector 와 Item Latent Vector 는 재조정 과정에서 서로에게 영향을 끼치게 되죠.
     
    참고로 SVD 에서 사용된 Regularization 은 L2 Regularization 방식을 사용합니다.
     
     

    마치며.

    제가 이번 글을 작성하면서도 내용이 어려웠던거 같습니다.
    혹시나 이해가 어려운 내용에 대해서 피드백주시면 답변드릴 수 있도록 하겠습니다.
    감사합니다.
     
     

    반응형
Designed by Tistory.