Generating Better Search Engine Text Advertisements with Deep Reinforcement Learning
2019/10/10
https://gyazo.com/e11e93be8e02a0581e6729abe504d0ed
KDD2019 Applied Data Sicence Track 採択論文
1. どんなもの?
2. 先行研究と比べてどこがすごいの?
広告はクリックされたときに支払いが発生するため、両者に利益のある魅力的な広告の生成が必要
ウェブサイトをスクレイピングしてきたのち、テンプレートに穴埋めする形で自動的に広告を生成する方法もある
広告の自動生成
Pros: テンプレートを用いることで文法の誤り等を無くせる可能性
Cons: 生成された広告には柔軟性はあまりなく、パターンも同じになってしまう
Pros: 効率的で文法的にも正しい広告の生成が期待できる
Cons: 検索連動型広告では既存のプロモーション素材を使用できる場面は少ない
Relevance Step
LP内で一番頻出するn-gramを探し出す
Sentiment analysis Step
ナイーブベイズを用いた感情分析を実行する
Natural language generation Step
テンプレートに対してどの部分に見つけてきたn-gramを挿入するか
➜ 結局テンプレート依存になってしまう
本研究は これまでにない RNN ベースのモデルを用いたend-to-endでデータドリブンなモデルを用いている。 要約
広告において重要なワードを適切にコピーする必要がある
ブランド名、場所、価格等の数値
これらは頻出では無いが広告においては重要な単語となりうる
より複雑なモデルを用いることで言い換えや単語の入れ替え、文のスタイルの変化などが可能
広告の自動生成で考慮しなければならないこと
https://gyazo.com/d46213851163da9f1f34e21640b38713
生成した広告テキストの 正確さ
広告の CTR
本研究ではこの2つのポイントにフォーカスした検索連動型広告の自動生成モデルを提案。
3. 技術や手法の"キモ"はどこにある?
問題設定
既存のLPのテキスト情報$ {\bf x}^{*} から要約タスクを解くように広告のテキスト情報 $ {\bf y}^{*} を予測
$ L_{XE} = - \sum_{x, y \in {\bf x}^{*}, {\bf y}^{*}}^{} \sum_{i=1}^{m+m'} \log{p_{\theta}} (y_i | y_{1:i-1}, x)
CTRの期待値を最大化
$ L_{CTR} = - \sum_{x \in {\bf x}^{*}}^{} \mathbb{E}_{\hat{y} \sim p_{\theta}(\cdot|x)} CTR({\bf \hat{y}})
Parallel Encoder / Decoder
LPのタイトルと本文を元に広告のタイトルと本文を予測するparallelなencoder-decoderアーキテクチャを使用
https://gyazo.com/590fccb5b9918912e449efd62861ddb7
Attention
単語の繰り返し問題
言語生成モデルにおいてしばし同じ単語が連続して出力される時がある
各decoderが確率0で単語を繰り返すような、各出力で繰り返される単語に対するhard maskingを適用
Self Critical Sequence Traning
$ \nabla_{\theta} L_{CTR} \approx {\rm CTR}({\bf \hat{y}}) \nabla \sum_{}{} \log{p_{\theta}}(\hat{y}_i | \hat{y}_{i:i-1}, {\bf x})
しかしこのままだと報酬 $ {\rm CTR}({\bf \hat{y}}) の分散が大きく、学習が不安定
Self Critical Sequence Traningでは
現時点でのモデルパラメータ$ \thetaで広告文を生成した最良の $ \bar{y} の評価 $ {\rm CTR}(\bar{y}) を使用
$ \nabla_{\theta} L_{CTR} \approx ({\rm CTR}({\bf \hat{y}}) - {\rm CTR}({\bf \bar{y}})) \nabla_{\theta} \sum_{}^{} \log{p_{\theta}}(\hat{y}_{i} | \hat{y}_{i:i-1}, {\bf x})
Self-critical sequence = $ {\rm CTR}(\bar{y}) を閾値として、正負が逆転する
$ {\rm CTR}(\bar{y}) より良い広告文が増える
$ {\rm CTR}(\bar{y})より劣る広告文が減る
https://gyazo.com/fa72ac4727f60bcde9fbdd45ff28a26e
最終的に、モデルの損失は以下のように定義できる:
$ L_{\rm total} = \gamma L_{XE} + (1 - \gamma)L_{CTR}
4. どうやって有効だと検証した?
データセット
Bing Adsのデータを使用
600,000 のLPと広告の対をサンプリング
各ドメインにおいて5回以上出現するデータを削除
少数の広告主が広告の大部分を構成しているためこの前処理は重要
広告主の多くは同じような広告テンプレートを使っているため
最終的に、train: 303,387 、valid: 10,000 、test: 10,000 をデータセットとして使用した
各splitで重複して現れるドメインは無い → train setにあらわれていない未知のドメインでの汎化性能を確認可能
https://gyazo.com/448c50552ed001954436c42f0d4bfa4b
学習方法と報酬
あらかじめcross entropyのみでモデルを事前学習
一番良いパラメータを使って $ L_{\rm total} を最小化するよう学習を行う
学習時にCTRを推定するためにoracle modelを用意
テキストを入力するとCTRを予測するモデルを事前学習させておく
このoracle modelは広告自動生成モデルの学習時には再学習されない
5. 議論はあるか?
自動評価
oracle modelを用いたCTRの変化
oracleの他に広告自動生成に使用したデータセットと同じ文で異なる期間のデータセットで学習したDNNも合わせて使用
人間が作成した広告よりかはCTRは低いが、ベースラインよりも高いCTRを示した
通常の損失とCTR期待値を整序する$ \gamma を調節する必要がありそう
https://gyazo.com/1d1275a2e7c92571e47696ae90696ab1
人手評価
訓練されたエキスパートを集めて生成された広告に対して評価を行った
ある広告(ground truthやベースライン、SCSTで生成された広告)と関連するLPを見せて以下の質問に答えてもらう
質問内容:
不要な繰り返しのある単語やフレーズがあるか?
上記の広告タイトルと広告コピーは、人間によって書かれたように見えるか?
広告タイトルとコピーに関する評価を入力してください
Good (perfect grammar)
Fair (Slight grammar errors or repeats)
Bad (Major grammar errors or repeats)
Nonsense or Broken (including foreign language or landing page not loading)
ランダムにサンプリングされた2000件のデータに対して評価を行ってもらった
繰り返しの単語が現れないようにマスキング処理を行うことで、文法的・人間らしさの両方に対する評価が向上
SCSTモデルで生成した広告は多くの場合でベースラインよりも人間らしい広告を生成することが可能
https://gyazo.com/eaea4dda39fc834e9db6600193331f58
生成された広告の例
Landing Pageを入力したときのベースラインモデル Baseline の生成例とSCSTを導入したモデル SCST の生成例
SCSTを導入したモデルでは、無料のサービス (freeが含まれている) や具体的な数値がより多く含まれている
https://gyazo.com/2fc74dd9f12e74746d821da65520d836
6. 所感
強いoracle modelが必要
oracleが真のCTRを予測できるかで生成モデルの良し悪しが決まりそう
oracle modelにオーバーフィットする危険性が常にある
新しいoracle modelを使った報酬の学習をしないと、少し古いユーザー行動を元にした広告が生成されてしまう可能性
LPの前処理どうしてるんだろう?
不要なタグとか意味わからない装飾文字みたいなのを丁寧に取り除かないとモデルがそういったノイズに引っ張られそう
CTRを報酬としてる
クリックベイト的なタイトルや説明文が生成されたりしそう
CVR も報酬に入れる?スパース過ぎて難しそうではある