기록하는삶
[추천 시스템/RecSys] CAR(Context-aware Recommendation), FM, FFM 본문
[추천 시스템/RecSys] CAR(Context-aware Recommendation), FM, FFM
mingchin 2022. 3. 15. 00:12CF(Collaborative Filtering)은 유저와 아이템, 그리고 유저-아이템의 상호작용 정보(평점 등)를 활용해 Top-K 추천이나 선호도 예측 등을 하는 방법론이다. 이를 기반으로 파라미터의 학습을 필요로하지 않는 Memory-based CF에서 Model-based CF로 발전하며 그 성능이 개선되기도 하고, SVD가 적용된 MF(Matrix Factorization) 기법과 유저의 클릭과 같은 implicit feedback을 반영할 수 있는 ALS(Alternative Least Square) 등이 등장하기도 했다. 이러한 CF 기반 방법론들은 상황에 따라 준수한 성능을 보이기도 하지만, 유저-아이템의 상호작용 데이터를 꼭 필요로 하기 때문에 처음 서비스를 접하는 유저들에 대한 추천이 어려우며(cold start), 유저와 아이템 그리고 유저-아이템 상호작용 데이터 외에도 존재하는 유저의 데모그래픽 정보, 아이템 카테고리와 태그 등의 feature들을 모델이 예측에 활용하도록 하는 데에 어려움이 있다. 이러한 문제를 해결하기 위한 방법론이 CAR(Context-aware Recommendation)이다.
Context-Aware Recommendation은 CF가 사용하는 유저, 아이템, 유저-아이템 상호작용 데이터 뿐만 아니라 context 정보를 feature로 함께 사용한다. 위처럼 x의 vector를 input으로 하여 y의 값을 추론하는 일반적인 예측 문제의 형태를 띄기 때문에(General Predictor) Regression, Binary Classification, Ranking 등의 다양한 문제를 해결할 수 있다. 실제 광고 효율을 판단하는 지표 중 하나인 CTR(Click-Through Rate _ 유저가 주어진 아이템을 클릭할 확률)을 예측하는 데에 우수한 성능을 보인다고 한다.
이진 분류(Binary Classification)을 기준으로 생각하면 위의 수식이 가장 기본적인 형태가 될 수 있겠다. input vector x에 대해 linear layer를 통과시킨 값을 non-linear activation을 거치게 하면 된다. 다만 이는 필연적으로 존재할 input vector들 사이의 관계성을 전혀 반영하지 못한다.
이에 무작정 모든 input vector 사이의 곱을 인자로 추가한다면 그 관계성이 반영되는 기본 모델이 된다. 다만 이는 파라미터 수가 기하급수적으로 늘어나 현실적으로 연산이 불가능하며, sparse한 input vector에 대해 그 성능이 떨어질 수 밖에 없다는 단점이 남아있다. 이에 파라미터 수를 줄이되 input vector 사이 관계성을 반영할 수 있는 FM과 같은 방법론이 등장하고, sparse vector를 만들어내는 원핫 인코딩 대신 Item2Vec, Latent Dirichlet Allocation (Topic Modeling), BERT 등의 임베딩을 거친 임베딩 벡터를 input으로 활용한다.
1) FM(Factorization Machine)
FM은 CAR의 기법 중 하나로 딥러닝 등장 이전에 추천 모델에서 좋은 성능을 보이던 SVM(Support Vector Machine)과 CF의 MF계열 모델의 장점을 결합한 방법이다.
위처럼 유저, 아이템, 유저-아이템 상호작용 데이터 뿐만 아니라 context 정보를 feature로 활용하되, 그대로 모든 정보를 활용하고 input vector간의 관계를 weighted sum으로 표현하지 않고, 아래의 수식과 같이 표현한 것이 그 특징이다.
여기서 v_i는 x_i의 feature를 k개의 factor로 표현한 벡터(factorization parameter)를 말한다(일종의 임베딩이라 봐도 무방하다.). 이때 두 factorization parameter의 내적을 일종의 weight로 활용함으로써, 서로 연관 있는 정보만이 input vector간의 관계를 표현할 수 있도록 한다. 예를 들어 위 데이터가 주어진 상황에서 유저 A의 영화 ST에 대한 평점을 예측하고 싶다고 가정하자.
① i=5, j=6 (보라색): 유저 B, C는 영화 SW와 영화 ST를 모두 평가했다. <v_5, v_6>*(X_5 × X_6)을 통해 영화 SW와 ST의 차이가 유저 B, C의 데이터로부터 학습된다고 볼 수 있다.
② i, j= (3,4,7) choose 2 (분홍색): 세 유저 A, B, C가 모두 평가한 영화 SW의 평점 데이터를 통해 유저 B, C와 유저 A의 차이가 학습된다고 볼 수 있다.
이렇게 FM은 각 input vector x를 대표하는 factorization parameter를 만들고, 이것이 input vector들간의 관계성을 학습하도록 함으로써 파라미터의 수는 줄이되, 관계성을 표현하고자 하는 목적은 달성하고자 했다. FM의 장점은 아래와 같다.
- 매우 sparse한 데이터를 가지고도 높은 예측 성능을 보인다.
- O(kn) 선형 복잡도로 가볍다. (k: factor dimension, n: input dimension)
- 회귀, 분류, 랭킹 등 여러 문제에 범용적으로 활용할 수 있다.(General Predictor다.)
- context 데이터를 모델의 feature로 사용 가능하다.
논문에 따르면 본래 O(kn**2)의 복잡도를 가지는 연산을 단순 변형하여 O(kn)의 선형 복잡도로 계산할 수 있는데, 그 과정은 아래의 그림으로 이해할 수 있다.
즉, 실제 수행하는 연산은 아래와 같이 간략화된다. (X: input, V: factorization parameter matrix)
2) FFM(Field-aware Factorization Machine)
FM을 발전시킨 모델로, PITF(Pairwise Interaction Tensor Factorization) 모델에서 아이디어를 얻었다고 한다. FM이 하나의 input vector를 다른 input vector와의 관계성을 표현하기 위해 k개의 factor로 표현했다면, FFM은 input vector를 f개의 필드로 구분하고 각각의 필드에 대해 각각 k개로 factorize함으로써(f*k) 필드 간 관계성을 보다 독립적이고 정확하게 표현하고자 하였다.
여기서 필드(field)란 같은 의미를 같는 변수의 집합으로 아까와 동일한 예시로 본다면 User, Movie, Other Movies rated, Time, Last Movie rated, ... 등등이 해당되겠다. 이 모든 필드를 포함해 하나의 size k짜리 factor로 표현할 것이냐, 각각 필드별로 size k의 factor를 f개 두어 field 사이의 관계성을 보다 세밀하게 표현할 것이냐가 FM과 FFM의 차이다.
따라서 연산 및 구현 과정은 거의 동일하며, factorization matrix인 V의 구성이 조금 달라질 뿐이다. 다만 위와 같이 계산하기 위해 input vector를 FM처럼 원핫 인코딩 형태로 두는 것이 아니라, field를 정의하고 이 field 중 어디에 속하는 지를 input으로 활용한다.
구현 난이도도 올라가고, 다루는 파라미터의 수도 훨씬 많아지는 것에 비해 성능이 눈에 띄게 좋은 것 같지는 않다.
'AI > 추천시스템(RecSys)' 카테고리의 다른 글
[논문 리뷰] Neural Collaborative Filtering(2017) (0) | 2022.03.19 |
---|---|
[추천 시스템/RecSys] 딥러닝을 활용한 추천 모델 DeepFM, DIN, BST (0) | 2022.03.17 |
[추천 시스템/RecSys] KNN과 ANN / ANNOY, HNSW, IVF 등의 방법론 (0) | 2022.03.12 |
[추천 시스템/RecSys] 다양한 거리와 유사도 측정법 (0) | 2022.03.11 |
[추천 시스템/RecSys] 연관 규칙 분석 관련 용어 정리(support, confidence, lift) (0) | 2022.03.08 |