Closed nogawanogawa closed 2 years ago
検索や推薦システム、広告配信などにおいて、ランク学習は非常に重要な問題となっている。これらのモデルにおいて、複数の特徴量の組み合わせた特徴量クロスは、特徴量単体よりも表現力が高く有用と考えられる。しかし、特徴量クロスは、特徴量の種類が多い場合には組み合わせが爆発し、網羅的な探索が難しい。
歴史的には、こうしたスパースな特徴量をそのまま使う形式から、これらから変換された低次元で密な埋め込みが使用される様になってきた。この10年ほどでランク学習は線形モデルやFMベースの手法から徐々にNNベースの手法が用いられるように変化してきており、NNによって特徴量クロスを暗黙的に使用するようになってきている。 しかし、それでも、NNでは二次三次の特徴量クロスですら近似的にモデル化するのが非効率になる。これを解決するにはネットワークを深くしたり広くしたりする必要があるが、これは同時にモデルサイズを大きくし処理速度を低下させ、産業用として使用するにはハードルが高くなる。
こうした、
といった課題に対して、DCNが過去に提案されていた。ただし、これもモデルの表現力が入力に制限されるという問題が残っていた。(ランダムな特徴量クロスが作れない) さらに、DCNではクロスネットワークとDNNの二種類を組み合わせるが、これらの容量が非常に偏る。これはネットワークを大きくした際にモデルサイズが急激に増大する問題があった。
実アプリケーションで使用できるような、特徴量クロスを効果的に使用したランク学習モデルの実現 (DCNで残っていた問題を解決して、実アプリケーションで使用できるレベルにする)
DCN-V2は、明示的特徴量と暗黙的特徴量の両方を学習するネットワークになっている。この時のモデルには2種類考えていて、StackとParallelを紹介する。
上記2種類では、最下層にEmbedding Layerがあり、その後明示的特徴量をモデル化したCross Networkと暗黙的特徴量をモデル化したDeep Networkを通じて、これらを組み合わせている。
多くの入力はカテゴリ変数であるので、これらを埋め込みベクトルに変換する。 多くの先行研究ではEmbeddingのサイズは固定になっていることが多いが、本研究の手法では埋め込みは任意のサイズを受け入れられる。
また、埋め込み手法にこだわらず、ハッシュ化など他の埋め込みの手法も採用可能である。
Cross Layerでは明示的特徴量を学習する。 この時のモデル式は下記の様になっている。
概念図にすると下記の様になる。
l層のCross Networkでは次数はl+1になり、ネットワークは最高次数までのすべての特徴量クロスを反映していることになる。
Cross Networkではあくまで明示的な特徴量について学習するが、Deep Networkでは暗黙的な特徴量について学習する。
Cross/Deep Networkを組みわせる方法について、StackとParallelの二種類を上げる。 Stackは初期の入力はCross Layerにのみ通じ、その後deep networkに接続する。
Parallelは初期の入力はCross・Deepの両方に入力され、それらが最終層で結合されて、最終的な出力を得る。
Loss関数は下記のように定義している。
実アプリケーションではモデルサイズによって、オーバーヘッドが大きくなりすぎてサイズが制限されることがある。 DCN-V2では行列分解のアプローチを使用して、Cross Networkのサイズを削減する。
もともとのネットワークの計算式を下記のように変形する。
この時のUとVは細長い行列になっている。 これにより行列計算の計算量が削減される。
実際の計算グラフとしては下記のようになる。
ここで、上式の計算を一つに頼るのではなく、複数のネットワークの出力にゲート関数を組み合わせた出力の足し合わせを取ることで精度の劣化を抑えようとしている。
(モデルの圧縮の方法に関しては他の手法についても議論の余地が残されており、それらについてはFuture workとしている)
(これをやることで、Fullrank DCNV2より1/4くらいのモデルサイズになるらしい。)
RQを下記のように設定する。
モデルサイズと精度の評価のためにグランドトゥルースのデータを用いて、性能評価を行った。
DNNだと特徴量クロスを捉えるのに、ネットワークが大きくなる。
また、場の複雑性に対応できるかも確認した。
上位3パターンはすべてDCNV2であり、バイアス、元入力の有無になっている。既存手法より優れた精度が出ていることがわかる。
先行研究と比較しても、良い精度が出てそう。
実データを使った評価も行ったらしい。
MLPと比較している。(AUC Loss = 1- AUC)
シンプルにTransformer(Transformer4recとか)とかと比べてどうなんだろうか?
-> AutoIntより精度が高いので、明示的にCrossNetworkを使用したほうが(この結果を見る限りは、)性能はいいっぽい
論文URL
https://arxiv.org/pdf/2008.13535v2.pdf
著者
Ruoxi Wang, Rakesh Shivanna, Derek Z. Cheng, Sagar Jain, Dong Lin, Lichan Hong, Ed H. Chi
Google Inc.
会議
WWW '21: Proceedings of the Web Conference 2021
背景
実アプリケーションにDCNを適用したい。
目的
実アプリケーションで使用できるような、特徴量クロスを効果的に使用したランク学習モデルの実現 (DCNで残っていた問題を解決して、実アプリケーションで使用できるレベルにする)
アプローチ