研究開発チームインターンの北田 (shunk031) です。アメリカのアラスカにて行われたKDD2019に参加・発表してきました。
KDD2019の広告分野のワークショップであるAdKDD2019では、世界を牽引するアドテク企業が複数招待講演を行いました。
その中でも Tencent Ads: Interesting Problems and Unique Challengesにおいて、テンセントの広告チーム(テンセント Ads)の取り組みが未来過ぎたため、資料に取り上げられている技術を中心にまとめて報告させていただきます。
特に驚くべきは動画に対して広告対象の商品画像を自動で合成する VideoIn Ads
は眼を見張るものがありました。ぜひこの記事を一読していただき、一緒に未来を感じてほしいです (そしてそれ以上のものを作っていきたいです)。
- テンセントの機械学習を用いたアプリケーション
- 中国語のクエリに対する分析
- Any Embedding
- DeepText: 深層言語処理に対するオープンなプラットフォーム
- Auto-Targeting
- クオリティの低い広告コンテンツの検出
- VideoIn Ads
- 広告テンプレート生成エンジン
- ユーザ表現とプロダクト表現の学習およびそれらを用いた製品検索
- テンセント Ads における広告の入札
- まとめ
テンセントの機械学習を用いたアプリケーション
テンセント Ads では大きく分けて以下の 3 つの Smart
からなる機械学習プロジェクトがプロジェクトが動いているようです。領域としては targeting
, creative
, bidding
が対象です。
- Smart Targeting
- Smart Creative
- Smart Bidding
特に広告クリエイティブに対して複数の視点から自動化を提案する Smart Creative
に力を入れているように見えます。
中国語のクエリに対する分析
テンセントは主に中国圏を中心にサービスを展開しています。したがって中国語に対する自然言語処理が鍵となります。単語分割が必要な中国語は私達の日本語と近い難しさがあり、テンセント Ads の自然言語処理に対する取り組みはとても参考になりそうです。
テンセント Ads における中国語クエリは、以下の技術を用いて分析が行わているようです。前述の通り単語分割を含め、基礎的な技術が使わているように見えます。
- Syntatic
- 単語分割 (Segmentation)
- 品詞タグ付け (PoS tagging)
- 固有表現抽出 (NER)
- Bag of Words (BoW)
- キーワード抽出・拡張
- Semantic
- LDA (潜在的ディリクレ配分法)
- 埋め込み学習
- テキスト分類
Any Embedding
テンセント Ads には NLP タスクに対する統一的な埋め込み表現の学習フレームワークが存在します。これらは構造化されていないテキストに対して適用され、様々な粒度の表現を学習することが可能となっています。タスクとしては大まかに以下のような流れになっています。
- 入力を文字レベル・単語レベルに分割
- 分割して得られた表現に対して大きな単位の表現を学習
- フレーズレベルの表現
- センテンスレベルの表現
- ドキュメントレベルの表現
- トピックレベルの表現
- 得られた表現を用いて tagging や classification, translation を実行
具体的には以下の表現学習手法が上げられています。
- word2vec*1
- sent2vec*2
- doc2vec*3
- fastText*4
- Hierarchical document vector model
- TransE*5, TransR*6
- node2vec*7
一見シンプルに見えますが、テンセント Ads が保有するデータ量は大規模であると考えると表現学習時に高速化しなければならないように思えます。そこでテンセント Ads では分散処理可能な学習システムの構築がなされています。
分散処理可能な埋め込み表現の学習システム
SkipGram におけるネガティブサンプリングとその分散処理について言及されています。特に分散処理におけるモデルの最適化を行う際の目的関数と勾配計算においてどのように計算を行うかについて説明がされていました。
目的関数
勾配計算
分散処理の方法
Network-Efficient Distributed Word2vec Training System for Large Vocabularies
*8やDistributed Negative Sampling for Word Embeddings
*9を参考に、parameter server group
, worker group
, network transmission
の 3 つの構成からなる分散処理システムについて紹介されていました。
DeepText: 深層言語処理に対するオープンなプラットフォーム
DeepText の目指すゴールとしてはテキスト分類に対してオープンな NLP の実験プラットフォームを開発することです。 2019/08/13 現在、オープンソースとして公開されていることは確認できませんでしたが、自社内でオープンなプラットフォームのことを指しているのでしょうか。今後オープンソース化も含めて期待したいです。
DeepText-Classification
DeepText におけるテキスト分類の技術スタックについて紹介されています。テキスト分類を解く場合に必要な要素が広く網羅されています。
DeepText-Matching
DeepText における対象情報同士のマッチングを予測するモデルについて紹介されています。統一的に semantic matching を行うことが可能な MatchNet*10 なる深層学習ベースのモデルが紹介されています。
Auto-Targeting
広告を配信する際はユーザーのプロフィール情報の正確な分析や理解がターゲティングの効果向上に寄与します。テンセント Ads の自動ターゲティングシステムである Auto-Targeting では以下に列挙されているプロフィール情報を元にターゲティングへの応用が行われているようです:
- デモグラ
- 親子関係、位置情報、学歴情報、結婚歴、財産情報、職歴
- デバイス
- キャリア情報、ネットワーク、帯域情報、種類、OS、価格
- 興味
- 購買意向、趣味
- 行動
- 旅行、アプリ、ネットショッピング、オフラインでの行動 (O2O)、広告のエンゲージメント、購買行動
- 追加情報
- シード、expansion、1-party labels
従来の手動によるターゲティング
広告のターゲティングが可能な属性を元に広告主が手動でターゲティングを行っているのが現状です。こうしたターゲティングは対象のユーザーに興味が合うか合わないかの 2 値 となり、ユーザの興味とのマッチング度合いが分かりづらいです。
また手動によるターゲティングの短所としてドメイン知識が必要
であったり、情報の欠落
、ターゲティング粒度が低くパーソナライズが難しい
等が上げられています。こうした短所を改善するために機械学習システムが導入されています。
AI による自動的な対象ユーザーの認識
公開されている資料には「AI による自動的な対象ユーザーの認識」というタイトルがつけられていますが、ニューラルネットワークベースの機械学習手法が使われています。
大まかなアルゴリズムとしては、まずはじめに複数のソース(1st-party からのデータ、自社の保有するユーザのコンバージョン履歴、ユーザや広告の特徴等)を用いてターゲットとなるユーザを定義します。その後機械学習モデルに推論をさせ、関連度に基づいた数値を出力するものです。このときの関連度はある種 確率値 であるため、ユーザの興味と広告とのマッチング度合いを直感的に掴むことが可能となっています。
表現学習と近傍探索
上記のようなユーザーと広告のマッチングを機械学習で行う際に鍵となるのが 表現学習
(representation learning) と 近傍探索
(approximate nearest neighbor search: ANN) です。
表現学習部分では、ユーザのベクトル表現 (user embedding) と広告のベクトル表現 (ad embedding) を学習から獲得します。このとき、ユーザの興味に合う広告を近い表現として学習させます。
こうして得られた学習済みのユーザーのベクトル表現とユーザーが触れていない未知の広告のベクトル表現に対する近傍探索を行うことで、ユーザーに興味のある広告を提示することが可能になります。
自動ターゲティングシステムの変遷
ここでテンセント Ads における自動ターゲティングシステムの歴史的変遷について言及されていたため紹介します。
- ~ 2013 (Peacock*11の時代)
- 大規模な分散 LDA をベースとしたシステム
- ~ 2014 (Logistic Regression の時代)
- ロジスティック回帰ベースのシステム
- 対象ユーザー群に対して 1 つのモデル
- オフラインで実行
- ロジスティック回帰ベースのシステム
- 2015 ~ (DNN の時代)
- Deep neural network ベースのシステム
- 複数のユーザー群を 1 つのモデルで捉える
- オンラインで実行
- Deep neural network ベースのシステム
特筆すべき点は 2015 年の段階で大規模データに対してオンラインで実行される深層学習ベースのモデルがプロダクションで運用されている点だと思います。リサーチ力もさることながら、エンジニアリング力でも圧倒的な技術力があることがわかります。
クオリティの低い広告コンテンツの検出
ここからは Smart Creative 群についての紹介です。 まずはじめに広告の審査時に必要なクリエイティブのレビュー段階を自動化する事例です。
手動で行われるクリエイティブレビューは非効率的でエラーが発生しやすいです。そこでテンセント Ads では機械学習を用いたシステムを構築し、こうしたレビューを自動化しています。
通常、クリエイティブのレビュー時にはクリエイティブのテキストや画像、ランディングページ (LP) やオフィシャルなアカウント、公開情報などを確認します。こうしたレビュー項目は多岐にわたり、複雑なルールに従って日々レビューされています。
また近年、広告クリエイティブのレビューリクエストは増加傾向にあり、人手でレビューを行っているとスケールしなかったり、レビューができる人材の育成にコストが掛かります。またいくつかの項目では人間の評価がばらついてしまうなど、統一的に評価するのは難しいです。
こうした点を踏まえ、テンセント Ads では機械学習システムを用いたクオリティの低い広告コンテンツの検出システムを構築し、自動化を行なっています。検出を行う際には検出結果とともに、リジェクトの場合はその理由を提示するようなシステムにし、各モーダルに対して複数の対応をしています。
- テキストと画像をそれぞれ個別に対応
- テキストベースの検出法
- LSTM をベースとした検出モデル
- 画像ベースの検出法
- CNN をベースとした検出モデル
- テキストベースの検出法
- テキストと画像を同時に対応
- Joint image/text model
- 画像部分とテキスト部分を認識し、各モーダルを併せた検出モデル
- Joint image/text model
広告コンテンツのレビューに対するエキスパートシステム
テンセント Ads で構築されているレビューシステムには、リジェクトの原因を提示するエキスパートシステムが含まれます。
システムによって広告コンテンツの質が低いと判定された場合にエキスパートシステムに問い合わせが行きます。エキスパートシステムには ルールエンジン
と テンプレートエンジン
から構成されており、これらから得られるルールを元にリジェクトの原因を提示します。
もしこのエキスパートシステムのルールが当てはまらない場合は Auto approval
システムにて最終的な決定がなされます。こちらも CNN をベースとしたシステムを採用しています。精度のグラフが示されていますが、precision はほぼ人間レベルです。Recall が 60%程度なので、絶対に低品質な広告を弾きたいという場合には少し考える必要がありそうです。
VideoIn Ads
今回の招待講演の目玉とも言える話です。広告の対象となる製品を自動で動画に合成するシステムである VideoIn Ads
について見ていきます。
動画に対して自動で製品を合成するにあたり、以下の点にフォーカスする必要があると考えられています:
- Ad Slot Detection
- 製品を適切に配置するための動画フレームを決定
- Object & Asset Orientation
- 配置する 3D モデルの向きを調整
- Video Tracking
- 対象フレームにレンダリングした 3D オブジェクトを配置
- Ad Creative Rendering
- 配置するオブジェクトを周囲の輝度や彩度に合わせて調整して描画
このように大きく分けて 4 つの技術を高い精度で自動的に行うための機械学習システムの構築がなされているようです。
動画フレームの検出とトラッキング
製品を動画に合成する場合、自然に合成できるシーンは限られてきます。そこでまずは合成に適した動画フレームを自動で検出およびトラッキングを行います。
動画フレームの検出については、キーフレームの集合からカメラカットを検出し、なんらかの方法で適切でないセクションを除外していると説明されています。その後残ったキーフレームのうち、最初のフレームに対して mask R-CNN*12ベースのモデルを用いてオブジェクトの検出とセグメンテーションを行います。こうして得られた結果を元に潜在的な広告合成領域を判定しているようです。
公開されている資料では、喫茶店内の動画においてフレームを検出し、テーブルに広告対象の商品を合成する例が示されています。カラークラスタリングやバウンディングボックスからテーブル上の空きスペースを検出することで広告画像の合成領域を判定しています。
オブジェクト検出やセグメンテーションのモデルを学習・予測させる際には、大きく分けると以下の 2 つの工程が存在しています。
- オブジェクトに対するアノテーション・ラベリング
- 動画コンテンツに含まれる 17 クラスに対してアノテーション
- オブジェクトの認識とセグメンテーション
- DaSlamRPN*13をベースとしたモデル
特にアノテーション作業はモデルの予測精度の観点で重要です。こうした作業には多数の人員を導入していると考えられます。
典型的な広告フォーマット
広告として入稿されてくるフォーマットは大きく分けて 3 つです:
- ユーザーが提供してきた画像
- ユーザーが提供してきた画像
- ユーザーが提供してきた 360 °画像
こうしたフォーマットに対して、テーブルのコーナーやエッジを検出し、広告画像の底部エッジをマッチさせて動画に合成を行っています。
広告テンプレート生成エンジン
前述の VideoIn Ads では動画に対して広告製品を合成する未来感の強いシステムの構築がされていました。しかしながら現在主流なのはやはり静的な広告クリエイティブによるものです。テンセント Ads では従来の広告クリエイティブに対して、人手を介せず自動的に広告クリエイティブを生成する方法が紹介されています。
広告クリエイティブの最適化
あらかじめ作られた静的な広告クリエイティブは大規模な広告枠を持つ広告主向けに最適化するの以下の 3 つの観点から難しいです:
- 刺さるか刺さらないかの 2 値 (hit-or-miss)
- 粒度の粗いターゲティング
- パーソナライズされていない静的なコンテンツ
こうした難しさに対して、個々人にパーソナライズされた広告クリエイティブの自動生成技術が必要になってきます。
DPA: パーソナライズされた広告クリエイティブの自動生成
前述にて挙げられた静的な広告クリエイティブの問題点に対して、テンセント Ads では DPA と呼ばれるパーソナライズされた広告クリエイティブの自動生成システムの構築がされています。従来の広告クリエイティブと比較すると以下のような利点があります:
- 自動的に広告クリエイティブを生成
- 広告最適化において人手のトライアンドエラーがいらない
- 細かい単位のターゲティング
- 100M 以上のターゲティング可能な商品の存在
- より詳細で正確なターゲティングが可能
- 真のパーソナライズの実現
- 同じ商品の広告でも違う体験を提供
広告クリエイティブの分析
広告クリエイティブの自動生成に際して、クリエイティブに対して 効率
, 製品
, テンプレート
, パフォーマンス
の観点から分析が行われています。
- 効率
- 製品情報とテンプレートを用いたクリエイティブの自動生成
- 製品
- 広告主の在庫から製品情報を同期するためのプログラムインターフェースの実装
- テンプレート
- AI によって自動生成される 3,000 を超える広告をカバー可能
- パフォーマンス
- を最大化
上記の条件をカバーするような自動生成システムが必要になると考えられています。
広告テンプレート生成エンジンの構築
広告クリエイティブの自動生成を行う際に重要となってくるのがテンプレートの自動生成です。テンプレートの自動生成では主に レイアウト
と クリエイティブを構成する要素
について考える必要があります。
- レイアウト
- テンプレート要素の種類、位置、サイズを定義
- 要素
- 独立したグラフィックが用意されている
- 背景グラフィック、装飾グラフィック、テキストグラフィック etc.
- 独立したグラフィックが用意されている
広告素材の組み合わせ・埋め込みを使ったテンプレート生成
ここからは具体的にテンプレート生成のアルゴリズムについてです。テンプレート生成には機械学習とエキスパートシステムを組み合わせており、大きく分けて以下のステップがあります。
- 広告素材の埋め込み表現の学習
- Deep Attention Network (DAN) による広告素材のマッピング
- 近傍探索を用いた広告素材の検索
- 上位 K 個の広告素材の選択
- デザインの提案
- スタイル・配色の提案
- 組み合わせの決定と追加の広告素材選択
このステップを経て生成されたテンプレートは 5.5M 個以上になっているようです。 また生成されたテンプレートを人手で評価した結果、73% 程度がプロのデザイナーと同様のクオリティがあったと報告されています。
Deep Attention Network (DAN) による広告素材のマッピング
今回の資料で取り上げられている DAN*14 についてまとめます。 予め選択している 個の広告素材の埋め込み表現を SNet*15に入力し、得られた特徴表現を結合し、テンプレートの特徴表現を得るように学習する Deep Attention Network が用いられています。
公開されている資料からは読み取れませんでしたが、訓練時に同じテンプレートで使われているような広告素材の表現が近くなるような学習がなされていると考えられます。資料にある Demo of Generated Templates
のページにはテンプレートの生成結果が示されています。さまざまなバリエーションの広告クリエイティブが生成されていることが確認できると思います。
ユーザ表現とプロダクト表現の学習およびそれらを用いた製品検索
テンセント Ads ではユーザの閲覧・クリック履歴から興味のある製品の検索が行える機械学習システムについても言及がありました。
ベースとなるモデルのアーキテクチャは公開されている資料の Product Retrieval based on Learned User and Product Representations
を参考にしてください。以下はアーキテクチャのまとめです:
- プロダクトのベクトル表現の学習部分
- 入力と得られる埋め込み表現
- プロダクト画像 -> CNN で特徴抽出 ->
image embedding
- プロダクトカテゴリ ->
one-hot embedding
(orcategorical embedding
) - プロダクト名 -> TextCNN で特徴抽出 ->
name embedding
- プロダクト画像 -> CNN で特徴抽出 ->
- 中間表現から得られる埋め込み表現
- 複数の埋め込み表現を結合 -> 隠れ層 ->
product embedding
- 複数の埋め込み表現を結合 -> 隠れ層 ->
- 入力と得られる埋め込み表現
- ユーザーのベクトル表現の学習
- 入力と得られる埋め込み表現
- プロダクト閲覧履歴の時系列データ -> LSTM ->
browsed product embedding
- 地理情報 ->
geo embedding
- ...
- キーワード ->
keyword embedding
- プロダクト閲覧履歴の時系列データ -> LSTM ->
- 中間表現から得られる埋め込み表現
- 複数の埋め込み表現を結合 -> 隠れ層 ->
user embedding
- 複数の埋め込み表現を結合 -> 隠れ層 ->
- 入力と得られる埋め込み表現
- 出力
product embedding
とuser embedding
の コサイン距離(=コンバージョンしたかしないか)を学習- クリックデータや閲覧履歴データから距離を学習
商品検索時には対象ユーザーのベクトル表現に対してプロダクトのベクトル表現の近傍を探索し、距離が近いものをユーザーに提示する形となります。
テンセント Ads における広告の入札
ここからはSmart Bidding群についての紹介です。Smart Biddingでは主に正確な広告の効果予測にフォーカスしています。
oCPA を用いた入札とその改善
Optimized Cost per Acquisition (oCPA) により広告主は最適化するコンバージョンタイプを指定可能です。広告主はコンバージョンあたりの目標費用を指定しますが、システムは予測されるコンバージョン率 (pCVR) に基づき、広告主に代わって入札単価を調整します。
したがって、予算内で最も多くコンバージョンを獲得するためには pCVR の正確な予測が重要となります。
テンセント Ads の入札システムでは以下のデータが主に入力されます:
- トラッキングデータ
- ユーザー情報
- ランディングページ情報
- 商品データ情報
- 過去のコンバージョンデータ
こうしたデータをもとに大規模な分散学習システムと SmartBid、pCTR を合わせて pCVR の予測を行います。こうして得られた pCVR をもとに広告のインプレッションを設定し、最終的なコンバージョンを得る流れです。このシステムでは pCVR を改善するための継続的なフィードバッグがなされるループが構築されています。
"深いコンバージョン"の遅延に対する対策
CVR を予測する場合、広告をクリックしてからコンバージョンするまでには比較的長い時間を要するため、正確な予測が難しいです。特にテンセント Ads では広告対象がアプリの場合、以下の工程を経てようやくコンバージョン情報を得ることができます:
- ダウンロードリンクをクリック
- app store からアプリをダウンロード
- アプリを起動
- アプリ内でユーザー登録
テンセント Ads ではこの問題に対して CVR 予測モデル (conversion model) と遅延を予測するモデル (delay model) を組み合わせたモデルを用いたシステムの構築がされています。通常の CVR 予測モデルの出力に対して行動履歴の系列を使って訓練させた delay モデルの予測で調整を行うようなアーキテクチャになっています。
このような conversion model と delay model の組み合わせにより遅延があっても正確な CVR 予測を実現しています。
まとめ
AdKDD2019 の招待講演における、テンセント Ads の取り組みについてまとめました。丁寧に自然言語処理を行なっている点は同じ漢字を主とする言語を扱う私達にとっても参考になると思います。特に直近ではテンセントの取り組みが自然言語処理のトップカンファレンスに多数採択されており*16、かなり自然言語処理に力を入れているように思います。
また VideoIn Ads といった動画をターゲットとした広告の自動生成はとても先進的で刺激的でした。どのサービスでも大規模なデータセットを賢く分散処理し、埋め込み表現同士の近傍探索に落とすようなアーキテクチャが多く、とても勉強になります。こうした取り組みを参考に、更に良い広告体験を提供できるようなシステムを作っていきたいです。
Gunosyでは論文執筆・投稿を目的として研究に全力で取り組むリサーチインターンを募集しています。今回KDD2019の参加および発表を通じて様々な最先端の研究に触れることができました。ぜひご興味がある方は応募してみてください。
*1:[1310.4546] Distributed Representations of Words and Phrases and their Compositionality https://arxiv.org/abs/1310.4546
*2:[1703.02507] Unsupervised Learning of Sentence Embeddings using Compositional n-Gram Features https://arxiv.org/abs/1703.02507
*3:[1405.4053] Distributed Representations of Sentences and Documents https://arxiv.org/abs/1405.4053
*4:[1607.04606] Enriching Word Vectors with Subword Information https://arxiv.org/abs/1607.04606
*5:Translating embeddings for modeling multi-relational data https://dl.acm.org/citation.cfm?id=2999923
*6:Learning entity and relation embeddings for knowledge graph completion https://dl.acm.org/citation.cfm?id=2886624
*7:[1607.00653] node2vec: Scalable Feature Learning for Networks https://arxiv.org/abs/1607.00653
*8:[1606.08495] Network-Efficient Distributed Word2vec Training System for Large Vocabularies https://arxiv.org/abs/1606.08495
*9:Distributed negative sampling for word embeddings https://dl.acm.org/citation.cfm?id=3298609
*10:詳細は不明
*11:[1405.4402] Peacock: Learning Long-Tail Topic Features for Industrial Applications https://arxiv.org/abs/1405.4402
*12:[1703.06870] Mask R-CNN https://arxiv.org/abs/1703.06870
*13:[1808.06048] Distractor-aware Siamese Networks for Visual Object Tracking https://arxiv.org/abs/1808.06048
*14:詳細は不明
*15:詳細は不明
*16:Publications -- NLP Research, Tencent AI Lab https://ai.tencent.com/ailab/nlp/publications.html