Neural Factorization Machines for Sparse Predictive Analytics
He, Xiangnan, and Tat-Seng Chua. "Neural factorization machines for sparse predictive analytics." Proceedings of the 40th International ACM SIGIR conference on Research and Development in Information Retrieval. ACM, 2017.
위 그림이 다인듯. embedding layer라고 표시된 부분이 latent vector. random하게 초기값을 주어도 되지만, 기본적인 FM 한번 돌린 후에 거기서 나온 latent vector쓰면 결과가 더 좋다고 한다.
B-interaction layer는 의외로 간단한데, $$ f_{BI}(\mathscr{V}_x) = \sum_{i=1}^n \sum_{j=i+1}^n x_i \mathbf{v}_i ⊙ x_j \mathbf{v}_j , $$ \(⊙\)는 element-wise product of two vectors. 그냥 내적. 별다른 tweaking 없이 모조리 다 합한다. Latent vector앞에 계수가 붙은것에 주의. Embedding에 애초 input feature vector에 있던 scalar값을 곱함.
위 식은 다음과 같이 되어 계산이 용이하다 한다. $$ f_{BI}(\mathscr{V}_x) = \frac12\left[ (\sum_{i=1}^n x_i \mathbf{v}_i )^2 - \sum_{i=1}^n(x_i\mathbf{v}_i)^2 \right] $$
뒷부분은 실험결과나 기타 학습시 쓸수있는 이런저린 테크닉(dropout, BN)이야기.
hidden layer를 하나만 써도 FM, higher-order FM, Wide&Deep, DeepCross 다 이긴다고 한다.