기존에 있던 FFM 모델에 DNN(Deep Component)를 추가해서 DeepFFM 모델을 만들었습니다
Change Log
To Reviewer
DeepFM과 비슷하게 FFM과 DNN(Deep Component)가 같은 임베딩을 공유합니다. 하지만 FM과 다르게 FFM은 필드 별로 임베딩이 있기 때문에 DNN(Deep Component)에 입력으로 하나의 임베딩이 아니라, 여러개의 임베딩이 나옵니다. 따라서 이들을 평균을 내는 방법과, 더하는 방식, 곱하는 방식으로 기본 세팅으로 모델 학습을 진행해봤습니다.
avg_xs = torch.stack(xs, dim=0).mean(dim=0)
위 코드에 각각 mean과 sum, prod를 사용했습니다.
mean: 2.4645
sum: 2.4665
prod: 2.4829
실험 결과
DNN(Deep Component)를 추가하면 유의미한 성능 개선이 있을 것이라고 생각했는데 기존 2.47에서 큰 성능 개선이 없었습니다.
mean이 sum이나 prod에 비해 높은 성능이 나온 이유는 더하기나 곱하기로 임베딩 값을 합치면 값이 커집니다.
이 커진 값을 고려해서 임베딩이 학습되면서 같은 임베딩을 공유하는 FFM의 학습을 방해하는 것으로 판단됩니다.
Overview
Change Log
To Reviewer
위 코드에 각각 mean과 sum, prod를 사용했습니다.
실험 결과
추가로 실험해볼것
Issue Tags