Structured Deep Factorization Machine : Towards General-Purpose Architectures
Under review as a conference paper at ICLR 2018
요약자의 주관이 심하게 개입되어 있거나 오독한 부분이 있을 수 있고, 추후 오류가 발견되어도 귀찮으면 수정하지 않으니 싫으면 원문을 읽을것. This document comes with absolutely no warranty
일단 이건 소스가 있다. 하지만 돌아가지는 않는다. 그냥 논문 읽고 내용대로 구현하는게 빠름.
소스에서 사용되는 데이터셋은 https://www.yelp.com/dataset 에서 따로 받아야 한다. 데이터셋이 주기적으로 업데이트 되는 것으로 보이는데, 논문에서 정확히 어떤것을 썼는지는 알 수 없다. 홈페이지에서도 데이터셋의 과거버전을 따로 다운로드받을 수 있는 것 같지 않다. json, SQL 두가지 형태로 제공하는데, 압축된것이 각각 2.28G, 2.41G로 상당히 크다. 이놈들 공개한 코드에는 dataset을 모두 pkl형태로 썼는데 실제로 yelp페이지에서 그 형태를 제공하지는 않는다. 만들어쓰든지 데이터부분을 새로 작성하든지 해야 함
FM으로 하면 text처리할 때 곤란하니 그런것들에도 쓸 수 있게 일반적으로 확장해 보겠다. Main idea는 ‘FM할 때 모든 element들의 interaction을 보는데, 그걸 grouping해보겠다’. Grouping idea만 들으면 마치, 서로 연관있는 것들끼리만 interaction을 보고(=submodule에만 FM을 돌린 후) 추상화한 뒤, 맨 나중에 그것들을 모아서 fully connected net에 넣든 어디에 넣든 regression/classification을 할 줄 알았는데,[1]희한하게도 같은 group 안에 있으면 interaction을 주지 않는식으로 했다.
Rendle (2010) shows that when the feature vector \(\mathbb x\) consists only of two categorical features in one-hot encoding, Factorization Machine is equivalent to the popular Matrix Factorization algorithm (Koren et al., 2009). 이렇다는데 이것도 읽어봐야 겠다고 생각은 한다. [2]
저자들이 생각하는 FM의 단점은 두가지. ① Strong parameter sharing. 그러니까 ‘좀 더 느슨하게 엮어도 될것 같다’는 것과, ② Intractable for large feature sets. 차원이 커지면 곤란해진다는 것. [3]
그래서 자신들이 제안하는 것은, $$ \hat y (\mathbf{x; b, β, \kappa}) = ω \left( b_0 + \sum_{i=1}^n b_i x_i + \sum_{i=1}^{|\kappa|} \sum_{j=i}^{|\kappa|} λ^s(\mathbf{x; β, \kappa_i, \kappa_j}) \right) \\ λ^s(\mathbf{x; β, I, J}) \triangleq \sum_{i\in I} \sum_{j \in J} x_i\beta_i\cdot x_i\beta_j $$ \(\kappa\)는 각 그룹 하나를 나타낸다. 예를들어, 4개의 feature를 가진 모델에서, \(\kappa = \{\{1,2\}, \{3,4\}\}\)로 정의하면, feature \(x_1\)은 feature \(x_3\), \(x_4\)와 interaction을 가지게 된다. 같은그룹에 속한 \(x_2\)하고 가지는게 아니다.
세가지 유형으로 나누어보았다. ① deep-out, ② deep-in, ③ neural
deep-out
$$ω \left( b_0 + \sum_{i=1}^n b_i x_i + \color{red}{\psi\Big( }\sum_{i=1}^{|\kappa|} \sum_{j=i}^{|\kappa|} \color{red}{w_{i,j}} λ^s(\mathbf{x; β, \kappa_i, \kappa_j})\color{red}{\Big) }\right)$$ 그룹별 interaction weight따로 주고, activation(\(\psi\))으로 엮어서 비선형성을 더하겠다는 것.
deep-in
$$ω \left( b_0 + \sum_{i=1}^n b_i x_i + \sum_{i=1}^{|\kappa|} \sum_{j=i}^{|\kappa|} \phi_i(\mathbf{x_{\kappa_i}} ) \cdot \phi_j(\mathbf{x_{\kappa_j}})
\right)$$
\(\mathbf{x_{\kappa_i}}\)는 \(\kappa_i\)에 속한 모든 feature를 포함하는 subvector. 단순히 feature group 그 자체임. 즉, \(x_{\kappa_i} = [ x_i | j \in \kappa_i ] \).
공개된 코드를 보면 두번째 항(\(\sum_{i=1}^n b_i x_i \))이 아예 없다. feature group끼리 dot product구하고 말았다는 이야기. 결국 이건 latent vector자체를 쓰지 않는다. libFM은 각각의 feature element마다 latent vector(scalar → vector)에 대응시켜서 상호간 product sum을 보는 것인데, deep-in은 원래 feature를 grouping해서 각각의 group을 latent vector취급하겠다는 뜻이다. 그럼 결국 이거랑 다른게 뭐냐
\(\phi\)는 feature extraction function이다. 가장 간단하게 다음과 같이 구현하는 수도 있다. $$\phi_i (\mathbf{x_i ; \beta } )_r = \sum_{a=1}^{d_i} \beta_{r_a} x_{i_a} $$
① feature dimension이 엄청 클 때나 ② cold start에 쓸모있다. 이것도 장점인가 싶다
neural
이건 그냥 feature하나하나가 vector로 변환된다 뿐이지 neural net에 넣는것과 차이가 없다. neural net의 구조문제.
Learning from data
$$\arg\min_\theta \sum_x \mathcal{L}(y(x), \hat{y}(x; \theta)) + \gamma\parallel\theta ~\parallel^\beta$$ For labeling and classification tasks, $$ \mathcal{L}(y, \hat{y}) = -(y \log(\hat{y})) - (1-y)\log(1-\hat{y}) $$ (binary cross-entropy for \(y \in \{0, 1\}\))
For the regression tasks, $$ \mathcal{L}(y, \hat{y}) = (y- \hat{y})^2 $$
논문의 실험은, positive : negative sample수를 \(1:1\)로 맞춤. negative를 sampling해야 하는데, uniform하게 하기도 하고, positive의 분포에 따라 하기도 했다.[4]
Experimental Results
- test-train split 한번만 함. 데이터가 커서 그랬는 모양.
- classification에는 roc-auc보고, regression은 MSE
- regularization안하고 early-stopping만 함. 해봐도 regularization은 별 도움 안되었다고.
- 전반적인 결과보면 FM보다는 좋음. 대략 auc 10%정도 향상.
- classification보다 regression에 더 강한듯.
- 훈련시간은 (shallow) FM이 훨씬 빠르다
- ↑ 생각해보니 이건 또 말이 안되는게, FM의 label로 뭘 줄지가 애매하다. Backpropagation등으로 학습할 때마다 다르게 주려면 비용이 너무 크다. 그 역(먼저 다른것들로 추상화 하고 상위에서 FM)은 가능한데, 그게 본문에 나오는 deep-in형태.
- ↑ Yehuda Koren, Robert Bell, and Chris Volinsky. Matrix Factorization Techniques for Recommender Systems. Computer, 42(8):30–37, August 2009. ISSN 0018-9162. URL http://dx.doi.org/10.1109/MC.2009.263.
- ↑ 이건 그런데 단점으로 보기 조금 그런게, 모든 method공통으로 가지는 특징인데다 다른 method들에 비하면 FM은 아주 훌륭하게(\(\approx\)상대적으로 가볍고 빠르게) 처리한다.
- ↑ 구체적인 방법은 refer된 다른 논문 참조해야함