SmartNews TechNight Vol.5 : SmartNews Ads の配信最適化の仕組みはどうなってるの? (エンジニア / SmartNews Ads : 小宮 篤史)

0 views

Published on

SmartNews Ads の広告配信の裏側では、ユーザにはよい広告体験を、そして広告主にはより多くの成果を適切なコストで提供することを目的に、実に様々な最適化の仕組みが動いています。 限られたコンピューティングリソースとレイテンシの制約、そしてアプリに特化した広告配信において、どのような配信の最適化がされているのか、この一年の歴史を紐解きながら現在の最適化の仕組みまで赤裸々にお話しちゃいます。

Published in: Technology

SmartNews TechNight Vol.5 : SmartNews Ads の配信最適化の仕組みはどうなってるの? (エンジニア / SmartNews Ads : 小宮 篤史)

  1. 1. SmartNews Ads の 配信最適化の仕組みは どうなってるの? SmartNews TechNight Vol.5 2016-01-14 KOMIYA Atsushi
  2. 2. 「おまえだれよ?」
  3. 3. • 広告システムの
 サーバサイドエンジニア • アドオークションの設計 • 機械学習や最適化を活用した 機能のアドサーバへの導入 • その他バッチ処理の整備 KOMIYA Atsushi
  4. 4. Agenda
  5. 5. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. 予算スムージング配信
  6. 6. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. 予算スムージング配信 1. SmartNews における 広告配信の事情
  7. 7. ビジネス的な背景
  8. 8. 広告事業者としての立ち位置 • 広告主とメディアの両者を取り持つ Platform • 広告在庫と広告枠在庫の両方を預かる立場 • SSP RTB DSP のようにカオスマップ的に 分業化された世界とはちょっと異なる • 当然、必要とされる技術的知識も異なる
  9. 9. UI / UX の特性
  10. 10. 広告は「事前」に取得する (プリフェッチ) • スマートニュースの記事更新は1日4回(朝、 昼、夕、晩) • 広告は、この記事更新のタイミングで合わせ て取得する • タブをめくる前にはすでに、広告が配置され ている
  11. 11. 広告枠は複数存在する
  12. 12. その他の細かな制約 • チャンネルごとに掲載できる広告の種別が異なる • チャンネルと広告の親和性を考慮するため • 全チャンネルを通じて、同じ広告主の広告が
 たくさん出過ぎないようにする • 広告主ごとに、プリフェッチで配信される
 広告の個数に上限を設定している
  13. 13. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. スムージング配信 2. SmartNews Ads の 配信最適化
  14. 14. 広告システムを開発する 当初に考えたこと
  15. 15. 最適な広告配信とは何か? ユーザにはよい広告体験を 広告主にはより多くの成果を メディアには多くの収益還元を
  16. 16. 目的関数が複数ある = 多目的最適化
  17. 17. 広告配信は リアルタイム・オンライン
  18. 18. この多目的最適化を オンラインで実現する!
  19. 19. この一年余りの振り返り • 2014/09 頃、多目的最適化で悩む • 2014/10 頃、CTR 予測・推定で悩む • 2015/01 頃、アロケーション最適化で悩む • 2015/08 頃、CPA 最適化で悩む • 2015/10 頃、予算スムージング配信で悩む
  20. 20. Filtering Auction Allocation Delivery
  21. 21. Filtering Auction Allocation Delivery クリエイティブ最適化 CPA 最適化 アロケーション最適化 予算スムージング配信
  22. 22. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. 予算スムージング配信 3. オークション設計
  23. 23. 広告とオークション • 広告の世界では、オークションに基づく
 広告配信はわりと一般的 • RTB のセカンドプライスオークションや Google AdWords など • 世間一般の習わしに従って、まず最初に
 オークションの仕組み広告配信に導入した
  24. 24. オークション方式 by sweet_redbird https://www.flickr.com/photos/18261299@N00/4471631533/
  25. 25. 一言にオークションと言えど その方式はいっぱいある • 第一価格オークション (First-price auction) • Overture が採用していた • 第二価格オークション (Second-price auction) • RTB でお馴染みのオークション • VCG オークション • Facebook が採用している
  26. 26. 第一価格オークションと 第二価格オークション Aさん Bさん Cさん ¥100! ¥80! ¥60! 第一価格オークション →¥100 第二価格オークション →¥81 (¥80 + 1)
  27. 27. 一言にオークションと言えど その方式はいっぱいある • 第一価格オークション (First-price auction) • Overture が採用していた • 第二価格オークション (Second-price auction) • RTB でお馴染みのオークション • VCG オークション • Facebook が採用している
  28. 28. 一般化第二価格オークション (Generalized second-price auction, GSP) • 通常の第二価格オークションでは、一つの
 広告枠をみんなで競り合う = 勝者はただ一人 • 一般化第二価格オークションでは、複数個の 広告枠を競り合う = 勝者は複数人 • 複数の広告枠が存在する場合に適してる • 上位者から順に広告枠を割り当てる
  29. 29. アドオークションの評価額 • SSP RTB DSP の世界では、入札価格を
 評価額としたオークションが開催されている • Google AdWords や Facebook Ads などの
 広告プラットフォームでは、入札価格 * 品質 スコアで計算される広告スコアを評価額とし たオークションが開催される
  30. 30. 「品質スコア」? from https://support.google.com/adwords/answer/2454010?hl=ja
  31. 31. 「品質スコア」? from https://support.google.com/adwords/answer/2454010?hl=ja
  32. 32. 「広告スコア」? • 入札価格 * 広告のクリック率 ≈ 1imp の価値 • 「広告のクリック率 (すなわち CTR)」を
 正しく予測することは、健全なオークションを 開催する上で非常に重要 • 当初は Thompson sampling で代用 • CTR 予測の詳細はこのあと Lan が解説!
  33. 33. SmartNews Ads の アドオークション • 一般化第二価格オークションを採用 • 入札価格 * 品質スコア = 広告スコアが評価額 • 品質スコアは予測 CTR + α で算出 • ユーザ・広告主・メディアの三者の
 多目的最適化をこのオークションで実現する
  34. 34. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. 予算スムージング配信 4. クリエイティブ最適化
  35. 35. クリエイティブ最適化の背景 • アドオークションで広告枠を獲得するために は、まずは高い CTR を獲得する必要がある • 広告の CTR の良し悪しは、クリエイティブ
 (画像・テキスト) の内容によって左右される • いわゆる「勝ちクリエイティブ」
  36. 36. クリエイティブ最適化の背景 • 広告配信時は勝ちクリエイティブを求めて、 複数のクリエイティブが入稿される • 勝ちクリエイティブを探すには、パフォーマ ンスの悪いクリエイティブも同時に配信しな ければならない • 広告主にとって、獲得機会の損失に繋がる
  37. 37. 多腕バンディット問題 として解く by Jeff Kubina https://www.flickr.com/photos/kubina/347687569/
  38. 38. Thompson sampling で CTR を推定する • いわゆる多腕バンディット問題に対するアルゴリズムの一 つ • クリエイティブそれぞれについて、ベータ分布 B(α, β) から 数値をランダムサンプリングして、それを推定 CTR とする • α はクリックされた数、β はクリックされなかった数
 (インプレッション数 - α) を設定する • 最も高い推定 CTR のクリエイティブを配信に利用する
  39. 39. Java での Thompson sampling 高速化 • commons-math3 の BetaDistribution#sample() を
 利用すると、実装的には楽できる • ただし累積分布関数の逆関数を呼び出していたり
 乱数生成がイケてなくて速度性能がよろしくない • ベータ分布からのランダムサンプリング機能を自前実 装した • 結果的に 100 倍ぐらいは高速化できた ☺
  40. 40. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. 予算スムージング配信 5. アロケーション最適化
  41. 41. アロケーション = 広告配置 • SmartNews には広告枠がたくさんある • 最適な広告を、最適な広告枠に配置したい • 広告主により多くの成果を提供する • メディアにもより多くの収益を還元する • ユーザごと・アプリ利用のタイミングごとに最適 な広告枠は異なる
  42. 42. プリフェッチにまつわる悩み • ユーザがまさに今、見ようとしているタブ
 (チャンネル)を把握できない • すなわち、最適な広告を最適な広告枠に
 配置するのが難しい • 一方で広告ログから、どの広告枠が見られやす いかを定量的に、視認確率として推定できる
  43. 43. Greedy な アロケーションアルゴリズム? • 最適な広告枠から順に、オークションで
 勝利した上位の広告を配置すれば OK か? • 答えは No. 数々の制約がそれを阻む • チャンネルごとの広告種別の制限 • 広告主ごとの広告数上限の制限
  44. 44. 最小費用フロー問題 に置き換えて解く by Sean https://www.flickr.com/photos/skez/111816806/
  45. 45. 最小費用フロー問題 (Minimum cost flow problem) from http://lpsolve.sourceforge.net/5.5/DIMACS_maxf.htm
  46. 46. 最小費用フロー問題 (Minimum cost flow problem) source sink • 頂点に広告と広告枠を配置し、辺に {容量: 1、 費用: -1 * 広告スコア * 広告枠の視認確率} を 設定する 広告 広告枠
  47. 47. 最小費用フロー問題 (Minimum cost flow problem) • 最小費用フロー問題のソルバーには Successive shortest path アルゴリズムを採用 • https://www.topcoder.com/community/data- science/data-science-tutorials/minimum- cost-flow-part-two-algorithms/ • このアロケーション最適化の導入により、
 CTR は約1.15倍、収益は約1.1倍に改善 ☺
  48. 48. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. 予算スムージング配信 6. CPA 最適化
  49. 49. 運用型広告における 広告主・代理店のジレンマ • ROAS を高めたい → CPA を低く抑えたい • CPA を低く抑えたい → CPC を低くする • CPC を低くする → 広告スコアが下がる • 広告スコアが下がる → 配信ボリュームが減る • 配信ボリュームが減る → 獲得が減る ☹
  50. 50. 獲得数をなるべく維持しつつ CPA を抑えたい
  51. 51. どうするか?
  52. 52. ユーザごとに CVR を予測する • CPA = CPC / CVR • 目標とする CPA とその時点の CPC から逆算し、
 最低限必要な CVR を推定できる • ユーザごとの CVR 予測結果から、配信する・し ないをフィルタリングで制御 • CVR 予測の詳細はこのあと Lan が解説!
  53. 53. 予測 CVR の分布 例えばこんな分布
  54. 54. CPA 最適化の戦略 目標の CPA から逆算された 平均的に必要となる CVR の 下限値
  55. 55. CPA 最適化の戦略 予測 CVR がこの下限値を 超える場合は積極的に配信
  56. 56. CPA 最適化の戦略 予測 CVR がこの下限値を 下回る場合は段階的になるように 確率的に絞り込んで配信
  57. 57. CPA 最適化の戦略 実績 CPA 的に余裕があれば CVR の許容下限値を下げる
  58. 58. 獲得数を維持しながら CPA を 最適化できるようになった☺
  59. 59. 1. SmartNews における広告配信の事情 2. SmartNews Ads の配信最適化 3. オークション設計 4. クリエイティブ最適化 5. アロケーション最適化 6. CPA 最適化 7. 予算スムージング配信 7. 予算スムージング配信
  60. 60. 予算スムージング配信の背景 • ターゲティングメニューが充実してきた • 男女推定、Lookalike、キーワード… • 代理店各社の広告運用が洗練されてきた • クリエイティブワーク、広告キャンペーンの 細分化、ターゲティングの活用… • 広告予算の利用は Greedy
  61. 61. 予算スムージング配信の背景 • その結果、1日の広告予算を十分に利用しき れないキャンペーンが多く生じてきた • 広告主的には、獲得機会の減少に繋がる • メディアとしても、収益機会の損失になる • 広告予算の利用を最適化したい…
  62. 62. 線形計画問題? • maximize: 利用した広告予算の総額 • subject to: • 各広告の1日あたりの予算制約 • 各広告が得られる想定クリック数 • ターゲティングを考慮 • その他制約…
  63. 63. 線形計画問題? • 制約条件を厳密に与え、オフラインにて
 LP ソルバーで解けば最適解は得られる • しかし、状況はオンラインで刻々と変化する • 新たな広告キャンペーンの入稿 • 広告予算の変更、ターゲティングの変更…
  64. 64. オンライン二部 マッチング問題として解く by Ashleigh W https://www.flickr.com/photos/108099221@N02/10751884266/
  65. 65. オンライン二部マッチング問題 (Online bipartite matching problem) from https://www.youtube.com/watch?v=JpapV5DrBek
  66. 66. オンライン二部マッチング問題 (Online bipartite matching problem) • 二部グラフの一方の頂点集合のみが事前に与えら れる • もう一方の頂点が1つずつ順に到着する • 両サイドの頂点同士を辺 (エッジ) でつなぐ • 辺をつなぐ際に、各種制約が存在する • 辺の数をできるかぎり最大化する
  67. 67. オンライン二部マッチング問題 (Online bipartite matching problem) from https://www.youtube.com/watch?v=JpapV5DrBek 広告 広告枠 (逐次到着) 予算制約 etc
  68. 68. MSVV アルゴリズム • オンライン二部マッチング問題を一般化した AdWords problem に対するアルゴリズム • http://web.stanford.edu/~saberi/adwords.pdf • シミュレーション結果より、CTR・収益ともに約 1.02 倍に改善 ☺ • この MSVV をベースにした最適化アルゴリズムを 実証実験中
  69. 69. まとめ
  70. 70. 要求されるのはハイレベルな エンジニアリング能力 • SmartNews の広告配信は一筋縄ではいかない • オークションに対する深い造詣 • 最適化問題に関する知識 • エコシステムの設計能力
  71. 71. 要求されるのはハイレベルな エンジニアリング能力 • オンライン・リアルタイム環境という制約 • 必要ならば「車輪の再発明」も辞さない • ただし「高速な車輪の再発明」
  72. 72. 要求されるのはハイレベルな エンジニアリング能力 • チームメンバーもとにかくハイレベル • アロケーション最適化はインターンの成果 • 最適化問題やオークションのエキスパートな 方と一緒にお仕事したいと思っております!
  73. 73. ありがとうございました!

×