【論文紹介】FAT-DeepFFM: Field Attentive Deep Field-aware Factorization Machine(ICDM2019) - 6月 17, 2019 こんにちは、ぐぐりら(@guglilac)です。 ICDM2019のFAT-DeepFFM: Field Attentive Deep Field-aware Factorization Machineを読んだので、まとめ記事を書きました。 論文リンク 例によってFactorization Machines関連の論文です。 Field-aware + FM + Attention + deepというもりもりのモデルであるFAT-DeepFFMを提案した研究になります。 よろしくお願いします。 ## 3行まとめ CV系のAttention機構であるSEnetを改良して交互作用項にする前の段階(embeddingの段階)にAttentionをかけるCENetを考案し、Field-awareなFactorization MachineとDeepを合わせたDeepFFMと組み合わせたField Attentive(FAT) DeepFFMを提案。二つの実データセットで実験を行い精度の向上を示した。 ## 関連研究 ## Field-aware Factorization Machine (FFM) Recsys2016 Factorization machineのembeddingを、fieldごとに異なるembeddingを学習することでfieldを考慮した交互作用をモデリングした研究。 詳しくは以下の記事を参照のこと 【論文紹介】Field-aware Factorization Machines for CTR Prediction (RecSys2016) ## DeepFFM FFMをdeepに組み合わせたもので、もともとYangらがTencent Social Ads competition 2017でレポートしたDeepFFMを使っている。 本論文や詳しい説明が探してもなかったので、この論文中で改めてDeepFFMの説明がなされている。 基本的にはDeepFMのFMがFFMになったモデルで、Field分のembeddingを各特徴量分だけ作って、それらで交互作用を表す。 交互作用はembeddingのInner ProductとHadamard Productの二種類で考えるとしていて、どちらがいいかは今回の実験でも検証されている。 交互作用を出したらそれをconcatして一本のベクトルにして、MLPに突っ込む。 MLPの出力を線形項と足してsigmoidかけて分類に用いるのは既定路線。 今回の研究はこのDeepFFMの構成そのままに、embeddingの部分にattentionを加えて性能向上を狙ったものになっている。 (疑問) DeepFMでは、embeddingしたベクトルをconcatしてDNNに入れていて、FMの部分は直接出力層に繋げていて上に層は積んでいない。 一方DeepFFMではembeddingしたベクトルの内積やアダマール積を取った後にそれらをconcatしてDNNに入れている。 DeepFMの実験結果(DeepFMとPNNを比べるとDeepFMの方が強い)から、交互作用を明示的に扱ったものの上に層を積んでいくのはあまり良くなかった気がするのだけれど、この構成でいいのだろうか? ## Squeeze-excitation net (SEnet) CVPR2018 画像分類で性能の高いSEnetのattentionのかけ方を参考にしている。 これも読んで紹介記事を書いているので参考にしてみて 【論文紹介】Squeeze-and-Excitation Networks(CVPR 2018) ## Attentional Factorization Machine (AFM) IJCAI2017 FMにAttentionをつけた研究。 特徴量の組に対してembeddingの内積を計算するのがFMだが、重要な組もそうでない組も同じくらい予測に使っている。Attentionの機構を取り入れて、重要な組にのみ焦点を当てる手法としてAFMを考案。 attentionの計算は、各特徴量のembeddingの内積を並べたベクトルを入力としたMLPで行う。 出力は組み合わせ分の長さを持つattentionベクトルで、各組み合わせの内積と掛け合わせることで重要な組をハイライトする。 FAT-DeepFFMとの違いとしては、Attentionをかける部分がembeddingの時点(交互作用の前)なのか、内積を取ってcross featureにした後なのか、という違いである。 もちろん前か後のどちらがいいのかを検証する実験も行っていて、論文中ではFAT-DeepFFM(すなわちembeddingの時点でattentionを考える)方がいい結果が出たと結論づけている。 ## Compose and Excitation Net(CENet) 提案手法であるFAT-DeepFFMはDeepFFMのembedding部分をattentinalにしたものなので、attentionalにしている部分のCENetについて紹介する。 CENetの構成はこちら。 CENetはSEnetからヒントを得て作ったと言っていて、確かにとても似ている。 SEnetはsqueeze partとexcitation partから成るが、CENetはcompose partとexcitation partから成る。 squeezeではglobal average poolingを行って一本のベクトルに潰すが、composeでは1x1のConvolution1dを用いて一本のベクトルにする。潰す方向はembedding dimの方向。squeezeではchannel方向に潰していた。 excitationは同じで、二層のMLPに通してattentionベクトルを得る。一回次元を落とすところもSEnetに忠実。 できたattentionベクトルを入力のembeddingベクトルとscaleさせて重み付けしたembeddingたちをDeepFFMと同じように次の層に渡す、という接続の仕方になっている。 FAT-DeepFFM全体のモデル構成はこちら。 ## 実験 ## dataset 安定の二つ * Criteo * Avazu ## 比較手法 * Logistic regression * FM * FFM * FNN * DeepFM * AFM * Deep&Cross network(DCN) * xDeepFM * DeepFFM これらと、提案手法のFAT-DeepFFMを比べる。 ## RQ1(精度的にどうなの?) FAT-DeepFFM(Hadamard Product)が最強だった。 AUCでもloglossで見ても最強だった。 (疑問) こういう比較実験って、査読の時に結果が他の研究とconsistentじゃないとハネられるのかなあ。 例えばxDeepFMがDeepFMに負けたりする結果が出ていたりすると、あれ?ってなるよね。その論文で主張したいことと直接関わりがなくても。 ## RQ2(AFMと提案手法のattention対決) AFMのように、cross featureにした後にattentionを考えるものと提案手法のようにembeddingの時点でattentionを考えるのの比較実験。 実験は * DeepFFM(no attention) * MLP-DeepFFM * CE-DeepFFM * FAT-DeepFFM の四つをそれぞれInner productとHadamard productで比較。(計8つ) MLP-とかCE-っていうのがcross featureにした後にattentionをかけるやつで、最後のは提案手法。 結果、MLPでもCEでも、先にattentionをつけた方がいい結果が得られた。 むしろ、Inner productの場合にAFMのように後ろにattentionをつけるとAttention無しの場合よりも性能が落ちることが確認できる。原因解明はは今後の課題としたい、らしい ## RQ3(Inner product vs Hadamard product) これまでの結果の表から、 * Attention無しならどっちでもだいたい同じ性能 * AttentionありならHadamard Productが強い ことがわかる ## まとめ ICDM2019に出たFAT-DeepFFMを読んで記事にしました。 個人的には、好きで読んでいたDeep + FM 関連の論文に偶然別で読んでいたCV系のAttentionの論文であるSEnetが出てきたのが面白かったです。 Deep + FMが進化するのと同時期にFFMが出てきたので、Deep + FMの組み合わせ方の工夫とは別に、そのFMをFFMに置き換えたらどうなる?系の研究も増えるのかなあ、と感じました。そうなるとだいぶカオスですが笑 Deep + FM関連の論文はxDeepFMでだいぶ出切ったのかな、と思っていたのですがまだまだ続きそうですね。。。 せっかく詳しくなってきたのでもう少し調べつつまとめていきたいです。 ありがとうございました。 この記事をシェアする Twitter Facebook Google+ B!はてブ Pocket Feedly コメント
コメント
コメントを投稿