Category-Specific CNN for Visual-aware CTR Prediction at JD.com
https://gyazo.com/7fe1986205b36818cafdc8a77e54604f
中国のECサイト(規模は中国国内第2位相当の規模感)
最近面白かった発表
Airbnbは2018年から検索&深層学習で3年連続KDDにアクセプトされている。いまや常連校、KDD界の花巻東か
1. どんなもの?
これまでの広告画像特徴の扱いを見直し、end to endでlow-latencyな CTR予測 のためのCategory-specific CNN (CSCNN)を提案 2. 先行研究と比べてどこがすごいの?
これまでの広告画像の扱い方に疑問
一般的な学習方法
学習済み深層学習モデルで画像特徴を抽出
カテゴリカル変数 (商品のカテゴリやユーザー情報)
上記をconcat (late fusion)してMLPでCTRを予測する 学習済みモデルの懸念点
学習済みモデルは画像のカテゴリを当てられるように画像特徴を学習している
CTR予測ではカテゴリに当たるような情報はlate fusionして予測するのが一般的
カテゴリ情報以外でCTRに寄与するような情報を捉えられていない可能性がある
End to end で low-latencyなモデルの開発
広告のカテゴリ情報を効果的に扱えるように early fusionすることを考える
本研究の貢献点
画像特徴やそれ以外の特徴をlate fusionするモデルが実はマイナスの影響がある点に着目した最初の研究
CTR予測のための新しいモデルであるCategory-specific CNN (CSCNN) を提案
CSCNNをさまざまなオフライン評価やA/Bテストによるオンライン評価を実施
3. 技術や手法の"キモ"はどこにある?
CTR予測システムのアーキテクチャ
Category-specific CNN
CTR予測システムのアーキテクチャ
特徴量間の相互関係を効果的に学習可能
https://gyazo.com/ce2f271f7d2b5b6945eebfffc684dbfb
Non-visual Feature Embedding
one-hotはそのまま使うとスパースになりすぎるためembeddingを学習させる
使った特徴量
Ad情報: カテゴリ、タイトル、レビュー内容
User情報: 商品のクリック、購入履歴、場所
Context情報: 検索クエリ、閲覧時間
Category-specific CNN
従来のCTR予測モデルで使われている画像特徴は学習済みのCNNモデルが使われていた
学習済みモデルは画像を分類するように学習しているが、CTR予測ではカテゴリ情報は予めわかっている
https://gyazo.com/152e46cf31ef26e60663a258f53deccd
カテゴリ情報を埋め込み、それを使って畳み込み層を学習させる新しいCNNを提案
Specifically, the category prior knowledge is encoded as categoryembeddings (trained jointly with the CTR model) and incorporatedto the CNN using a conditional attention mechanism.
Conditional attention mechanisms? 聞いたことあるな…
Category-specific Channel-wise Attention Module と Category-specific Spatial Attention Module
Category-specific Channel-wise Attention Module
チャンネル方向にcategory embeddingをconcatしてattentionを計算する
Category-specific Spatial Attention Module
空間方向にcategory embeddingをconcatしてattentionを計算する
https://gyazo.com/3c6c46e315ebc69700439b0f95e4c2f3
モデルの複雑さについて
ResNet18に提案手法のCSCNNを導入したときにモデルがどれぐらい複雑になるかを検証
https://gyazo.com/21383004c6bd38c0b8d3734458c3109c
システムへのデプロイ
オフラインでの学習
224 x 224 の画像を入力とするResNet18を使う場合
P40 GPU x 4 だと1日に177万 画像しか学習に使えない
P40 GPU x 226 で分散学習させると1日に 10億 impression を対象にできる
(言ってることがすごい)
学習を高速化するために、同広告において25 imp分 を一つのバッチに集める
同じ広告画像を何回もforwardしなくてもよくなる
これで P40 GPU x 28 で 1日分のデータを学習可能にした
オンラインでのserving
予め画像特徴は上記で学習したCNNモデルで取得しておき、広告IDで取得できるようにしておく
秒間300万アイテム閲覧に対してCPUで推論させた場合においてもレイテンシは20ms以下になる
4. どうやって有効だと検証した?
オフライン実験: 最新のモデルと比較
評価データ
Amazonのレビューデータセット
カテゴリ情報が付与されている商品情報やユーザー情報
比較対象
No Image
With Image
VBPR: BPR + fixed visual feature (画像特徴は固定)
DVBPR: BPR + dynamic visual feature (画像特徴も学習)
With Image + Category
従来モデル
DVBPR-C: DVBPR + category (late fusion)
Sherlock: DVBPR + category (カテゴリ特徴は線形変換されて使われる) He+ IJCAI16 SoTAモデル
SCA: 画像キャプション用のモデルとして提案されたもの。キャプション情報をカテゴリ情報に変更 Chen+ CVPR17 DCN + CSCNN(提案手法)
評価指標
AUC
全てのアイテム (All) と履歴情報が少ないアイテム (Cold) を比較
(以降、表の数値は基本的にAUCを指します)
https://gyazo.com/c312b280bd435c4c9b4a90eb87d50669
画像特徴が効いている (No Image vs. With Image vs. With Image + Category)
特にWith Image + Category でCold itemの予測スコアが改善
End-to-endが効果的 (VBPR vs. DVBPR)
提案手法のCSCNNが一番良いスコア
late fusionなDVBPR-Cより、early fusionなCSCNNのほうが良かった
SCAベースのDVBPRはベースラインとして強いが、それでも提案手法のほうが良かった
SVBPR-SCAはearly fusionなモデルであったが、channel間spatial間の特徴を効果的に取れるCSCNNのほうが良さそう
ネットワーク構造の違いによる性能評価
https://gyazo.com/56bc1774361ed2ce7b8d1217cf4d9327
CSCNNはさまざまなネットワーク構造に適用可能
入力層をCSCNNに置き換えることでその効果を発揮する
Inception V1 モデル(結構古いな?)にCSCNNを導入しても良いスコアであることを確認
ベースモデルのCNN-Fよりも深いモデルを使うことでより高いスコアを出す可能性がある
オンライン実験による性能評価
JD.comで実際のプロダクション環境で得られたログを元にデータセットを作成
32日間のログを学習に使い、33日目のログで評価する
データセットの概要は以下の表:
ユニークユーザー: 2億
アイテム数: 2000万
https://gyazo.com/d94c6af2a572e0e520dee379327d7570
上記のデータセットを使って実際に提案手法を学習させた結果
オフライン実験
Deep & Cross Networkに画像特徴を入れると精度 up
更に提案手法のCSCNNを加えるとより精度 up で一番良いスコア
オンライン実験
2019-02-19 から 2019-02-26 でABテストを実施
Deep & Cross Networkと + CSCNNを比較
それぞれのモデルで予測CTRを算出し、広告提示時のランキングに使用
提案手法において CTR向上、CPC削減、eCPM向上を確認
https://gyazo.com/401008951c07315a9602a0534a56e4f3
5. 議論はあるか?
CNNベースのモデルを学習させる場合、low-latencyでservingするためにはオフラインで学習させる必要がある
対象日のユーザー特徴や検索クエリ等のdynamicな特徴を使うことはできない
これらをいい感じにできればもっといい感じにできるよね、という話はまだ解決できていない
6. 所感
学習済みモデルに最初の層にCSCNNを追加すると大変なこともありそう
カテゴリ情報が織り込まれた画像特徴が必ずしも後段のCNN (今回だとResNet18) に合う表現になっているか微妙
ゼロから学習させる分にはよさそうな気もする
広告のカテゴリはそれなりに強い特徴だと思っていたので賢く埋め込む方法が提案されていてよかった
そもそもクリックされやすい・コンバージョンされやすい(逆もしかり)カテゴリがある
単純にembeddingにするのではなく、カテゴリが画像のどの部分と対応するかを織り交ぜて学習できて効率良さそう
ResNet18を画像特徴抽出器として使っていた
自分も実験でよく使っていたがあんまり論文では見ないので、今回精度と速度の面で有効そうなことは分かった
論文について
Fig. 1 がどこからも参照されていない