Yahoo! JAPANにおけるオンライン機械学習実例 #streamctjp

31
Yahoo! JAPANにおける オンライン機械学習実例 http://www.yahoo.co.jp/ ヤフー株式会社 野村 拓也 2016年07月22日

Transcript of Yahoo! JAPANにおけるオンライン機械学習実例 #streamctjp

Yahoo! JAPANにおけるオンライン機械学習実例

http://www.yahoo.co.jp/

ヤフー株式会社 野村 拓也

2016年07月22日

自己紹介

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止2

自己紹介

野村 拓也

• 業務

• 社内向けストリーム分散処理基盤の開発

• 機械学習を用いたシステム改善

• Hadoop/Stormなどの分散処理アプリの開発

• 趣味

• 苔

• ボルダリング

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止3

目次

• 今日話すこと

• 背景・動機・問題設定

• ストリーム処理

• ログ処理

• 機械学習

• 結果

• まとめ

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止4

目次

• 今日話すこと

• 背景・動機・問題設定

• ストリーム処理

• ログ処理

• 機械学習

• 結果

• まとめ

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止5

今日話すこと

• 広告配信にオンライン機械学習を試験的に採用

• KPIが数%向上

• 構築したシステムについて

• ストリーム基盤でのログの処理

• ストリーム機械学習

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止6

目次

• 今日話すこと

• 背景・動機・問題設定

• ストリーム処理

• ログ処理

• 機械学習

• 結果

• まとめ

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止7

背景・動機

RecSys 2013

Tencent

hourlyバッチ処理をリアルタイムに変更

→ 34%のCTR改善

(資料が見つからなかったので

聴講者の写真で代用)

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止8

https://twitter.com/torbenbrodt/status/390284591266668544

背景・動機

• Yahoo! JAPANのシステムに適用を検討したい

• 特にリアルタイム性

• → 広告配信(YDN)のCTR予測

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止9

問題設定 - YDNについて

10

http://promotionalads.yahoo.co.jp/service/ydn/

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

問題設定 - CTR予測

11

• YDNは「クリック課金」の課金モデル

• 期待収益の高い広告を配信したい

• 期待収益 = 広告クリック確率 × クリック単価

• クリック率(CTR: Click Through Rate)予測

• 現状バッチ処理で予測モデルを構築

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止

広告主が設定未知・状況で変化

目次

• 今日話すこと

• 背景・動機・問題設定

• ストリーム処理

• ログ処理

• 機械学習

• 結果

• まとめ

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止12

再掲: 一般的なストリーム処理システム構成

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止13

キューサーバ

ストリーム処理

サービス ログ回収

今回のシステム構成

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止14

Kafka

Storm

内製ログ回収基盤

配信サーバ

クリックサーバ

KVS

モデル配布サーバ

ログ転送経路

モデル転送経路

〜〜

scpscp

Webページ

広告配信リクエスト

広告クリック

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止15

Spout(クリックログ) Spout(配信ログ)

Bolt(ログ結合)

Bolt(学習)

モデル

Topology

Stormクラスタ

ディスクに書き出し

ストリーム処理

ログ処理 - ログ結合

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止16

• ログ結合

• オンラインでログ結合

• JavaのLinkedHashMapを利用

• クリックログと紐付いたものは正例とする

• そうでないログはサンプリングした上で負例とする

Bolt(ログ結合) Bolt(ログ結合)

Spout(クリックログ) Spout(配信ログ)

Bolt(ログ結合)

ユニークIDでシャッフル

ログ処理 - 正例・負例の排出 - 課題

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止17

1. 広告配信の有効期間=24時間のログ保持

– 有効ログを保持するとTBオーダーのメモリが必要

2. 負例の生成タイミング

– クリックされないと確定するまで24時間かかる

ログ処理 - 正例を排出するための調査

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止18

• 累積クリック数の遷移

• 配信後10分待てば95%を捕捉でき十分

学習データの生成 - 正例・負例の排出 - 課題への対応

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止19

1. 広告配信の有効期間=24時間のログ保持

– 有効ログを保持するとTBオーダーのメモリが必要

– → 10分程度の配信ログを保持すれば十分

2. 負例の生成タイミング

– クリックされないと確定するまで24時間かかる

– → 上記の保持期間を過ぎたものを負例候補とする

目次

• 今日話すこと

• 背景・動機・問題設定

• ストリーム処理

• ログ処理

• 機械学習

• 結果

• まとめ

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止20

機械学習 - バッチとの比較

バッチ学習 ストリーム

モデル Logistic Regression

学習手法 Linear SVM SGD

ハイパーパラメータ調整 Grid Search AdaDelta等

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止21

• ストリーム処理は逐次処理

• → 精度検証に課題

目次

• 今日話すこと

• 背景・動機・問題設定

• ストリーム処理

• ログ処理

• 機械学習

• 結果

• まとめ

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止22

試験結果: KPI変化

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止23

• 一部配信面・一部トラフィックでA/Bテスト

• iCTR向上 = ユーザに合った広告の配信ができた

• CPC低下 = 広告主視点ではコスト削減

• RPR向上 = 売上向上

KPI 意味 KPIリフト

iCTR ≒クリック率 4.1%

CPC クリック単価 -2.5%

RPR 1リクエストの売上 1.5%

• 配布直後のKPIが増加傾向

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止24

試験結果: モデル配布後のKPI変化

RPR

配布後の経過時間

目次

• 今日話すこと

• 背景・動機・問題設定

• ストリーム処理

• ログ処理

• 機械学習

• 結果

• まとめ

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止25

まとめ

• CTR予測モデルの更新をリアルタイムに

• ストリーム処理ならではの課題

• ログ結合、ハイパーパラメータ調整

• 試験結果としてはCTRが4%向上

• 更新間隔を短くすることでさらなる向上の可能性

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止26

質疑応答

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止27

Appendix

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止28

機械学習 - 素性とモデル

• Logistic Regression

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止29

Webページ

ユーザ

配信サーバ

広告配信リクエスト

• 性別: 男性• 年代: 30代• 興味カテゴリ: 車、料理

• ドメイン: yahoo.co.jp• 配信面ID: 12345

AD1

• 広告主ID: 123• 広告ID: 1234567• 過去実績: 0.1

𝑓 男性, 30代,車,料理, … =𝑠𝑖𝑔𝑚𝑜𝑖𝑑 𝑤𝑎 ∙男性 +𝑤𝑏 ∙ 30代 +𝑤𝑐 ∙車+⋯

機械学習 - 学習手法

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止30

• SGD(確率的勾配降下法)

• オンライン機会学習の学習手法

While(! 収束条件): 𝑓𝑜𝑟 𝑦𝑖 , 𝑥𝑖 𝑖𝑛 𝑑𝑎𝑡𝑎:

𝑤𝑡+1 = 𝑤𝑡 − 𝜂𝑡𝛻𝑙 𝑦𝑖 , 𝑤𝑡 , 𝑥𝑖

学習率:1回の勾配移動量を調整基本は順次小さくする

例) 𝜂𝑡+1= 0.9 ∗ 𝜂𝑡

勾配:wnの修正値

機械学習 - ハイパーパラメータの調整

Copyright (C) 2016 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止31

While(! 収束条件): 𝑓𝑜𝑟 𝑦𝑖 , 𝑥𝑖 𝑖𝑛 𝑑𝑎𝑡𝑎:

𝑤𝑡+1 = 𝑤𝑡 − 𝜂𝑡𝛻𝑙 𝑦𝑖 , 𝑤𝑡 , 𝑥𝑖

学習率:1回の勾配移動量を調整基本は順次小さくする

例) 𝜂𝑡+1= 0.9 ∗ 𝜂𝑡

勾配:wnの修正値

終わらない

• not オンライン、but ストリーム

学習率の自動調整→ AdaDelta等