New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

2018: Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective #139

Open
jojonki opened this Issue Oct 11, 2018 · 1 comment

Comments

Projects
None yet
1 participant
@jojonki
Owner

jojonki commented Oct 11, 2018

Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective
Yunlun Yang, Yu Gong, Xi Chen. CIKM (ACM International Conference on Information and Knowledge Management) 2018. Alibaba Group.
https://arxiv.org/abs/1810.03274

概要

Eコマースの検索エンジンを対話で行う対話検索の研究.対話検索はユーザーには魅力的で強力な手段であるが,スロットフィリング・トラッキングに注力する伝統的なタスク指向対話とはまったく異なる.
今回は実際のEコマースの対話検索のクエリトラッキングをテーマにする,つまり各インタラクションから内部的なクエリを得ることが目的である.
今回は,アテンションベースのNNでこれに取り組み,また,Eコマースのクエリトラッキングデータセットも構築した.

イントロ

伝統的なEコマースの検索のIFはステートレスに動くが,我々は短い期間での連続するクエリは関連性があることを見つけた.例えば「dress」と検索した後に「red dress」と検索するように.それゆえに,コンテキストクエリの利用はインタラクションをより効率的にできるかもしれない.
NNの登場でスマートアシスタントの技術も発展した(雑談やタスク指向).そこで本研究では,対話のテクニックを検索に導入する対話検索[6]を利用し,ユーザーの最後のクエリを考慮し,おしゃべりするような感覚で検索を行ってもらう.

Eコマース対話検索とタスク指向対話は似ている.例えばフライト予約では,ユーザーの条件(席情報,日付等)を獲得し,期待されている航空券を獲得する.これらのシステムではユーザーインプットの理解に強く依存する.タスク指向対話では,主に2モジュールからなる:スロットフィリングと対話状態追跡の2つ.ユーザー発話からスロットを抽出し,現在の対話状態(dialog state)を更新する.そして最終的な対話行動を決定する.

しかしそれでも一般的なタスク指向対話システムと大きな違いがある.

  1. ユーザー発話の複雑度はEコマースが提供する商品に応じて変わってくる.様々な商品が展開されており,ユーザーの商品に対する表現も多様である.対話検索をスロットフィリングでやろうとすると,相当数のスロットをカバーしなくてはいけないため,手作業ではあまりにも厳しい.
  2. ユーザーは異なる色,ブランド,他キーワードで目的の商品にアプローチするため,状態更新への要求はかなり高い.例えば"Adidas shoes"のあとに"Nike"と入れた場合,ユーザーの期待は既にAdidasでなく"Nike shoes"になる.一方,"fairy dress"のあとに"cute"と入れた場合,ユーザーはもしかすると"fairy and cute dress"を検索したく,どちらのスロットも活かしたいと思っているかもしれない.それ故シンプルなスロットベースの対話状態更新では,Eコマース対話検索は難しい.
  3. 現在のユーザー意図をまとめ,検索エンジンにわたすことが重要である.このユーザー意図を表すクエリを内部クエリと呼ぶことにする.この内部クエリは対話状態に相当し,各インタラクションで更新される.また検索エンジンのクエリは,キーワードは順不同なキーワードの羅列であることが一般的である.ユーザークエリと内部クエリの例を下記に示す.

screen shot 2018-10-21 at 1 44 10 pm

そのため,我々は今回の問題をコンテキストアウェアなクエリトラッキングタスクとして定式化する.ゴールは,ユーザークエリの履歴を考慮して,現在のユーザー意図を出力することである.これをマシン理解の観点を利用し,クエリトラッキングベースのNNを提案する.また内部クエリをスロットの助けなしに更新し,単語レベルのバイナリ分類問題(後ほど説明)に置き換える.

問題

  • Eコマースの対話検索の問題設定
    各インタラクションターンで,ユーザーはクエリをタイプし,クエリトラッキングのゴールは,ユーザーのクエリ履歴を対話的に考慮し,ユーザーの現在の意図となるクエリを出力することである.このクエリは内部クエリと呼ばれ,検索エンジンに流れ,検索結果を得る.内部クエリの更新はマルコフ性に基づくとすると,ユーザーの意図は最後の検索のみに依存する.最新の内部クエリは,1つ前の内部クエリと現在の入力クエリ(ユーザー入力)のみを考慮すれば良い.

定式化を下記にする.前回の内部クエリq1(単語列 t=1..m),現在のユーザークエリq2(単語列 t=1..n),そして新しい内部クエリq3(単語列 t=1..k).
screen shot 2018-10-21 at 2 02 30 pm

着目点としては,q2の単語は必ずq3に含まれる.また,単語列は順不同を想定し,順は検索結果に影響しない.これらを考慮すると,q3を求めるタスクは,q1の各単語をq3に加えるか加えないか,の問題になる.そして加える,と判定されたq1と,q2を内部クエリq3として定義できる.新しい内部クエリq3は下式でy (y1,y2,...ym)とすると下式のようになり,yiは0~1のスコアに成り,これはq1のある単語wiを捨てるかどうかのスコアと成る.
screen shot 2018-10-21 at 2 04 10 pm

アプローチ

クエリトラッキングとマシンリーディングの関係について議論する.本論はマシンリーディングのアイデアに基づいて,クエリトラッキングモデルを提案する

Machine Comprehensionとクエリトラッキング

マシンリーディングは,ドキュメント(ニュース記事とか)とそれに関するクエリが与えられ,それに答える(一般的にはドキュメント内の単語とか範囲が答えとなる,SQuADなど)という問題設定である.つまり,(Doc, Query, Ans)の3つ組を扱う.// マシンリーディングのためには,機械がドキュメントを理解する必要があるので,Machine Comprehensionと呼ばれる
これを実現するには,Encoding,Matching,Predictingの3つからなる.ドキュメントとクエリは高次元にエンコードされ,アテンション機構を利用してマッチング部分を探し,最終的な答えを推論する.
クエリトラッキングはマシンリーディングに似ている.つまり,現在のクエリを与えられ,前回の内部クエリから保存すべき場所を見つける.q1'をq1から保存すべき単語を残したものと定義する.つまり,これは(q1, q2, q1')という問題に成る.

マシンリーディングとの違いは下記

  1. マシンリーディングの答えは連続する単語シーケンスに対して,保存すべき単語はシーケンシャルとは限らない.そのため直接単語や単語列を予測するのは,クエリトラッキングに適さない
  2. クエリは順不同であるのでbow表現と成る.そのためRNNのようなシーケンシャルな表現は学習時に非効率である.
  3. クエリトラッキングは繰り返し行われる検索処理である.そのためクエリトラッキングはMachine Comprehensionより信頼性が求められる(Machine Readingはあくまで1回の(D, Q, A)を求めるだけの問題なのでステートレス)

提案モデル

提案モデルは下記で,Encoding,Matching,Predictingの3フェーズから成る
screen shot 2018-10-21 at 4 09 36 pm

  • Encoding
    図の左がq1(前回の内部クエリ),右がq2(現在の入力クエリ).まずそれぞれのクエリは単語embeddingされ,dw次元になり,E(l x dw)のembedding行列を得る.この次は普通はBiRNNにかけるが,シーケンス情報は今回不要のため,RNNの採用は非効率である.そこで,Self-attentionベースのエンコーダを提案する.具体的にはGoogleの翻訳モデルTransformerで提案された,Scaled Dot-Product Attention及びMulti-headを採用した.// Transformerについては巻末のryobot氏の解説が分かりやすいです

screen shot 2018-10-21 at 4 54 05 pm

screen shot 2018-10-21 at 4 55 36 pm

更にsentence pair modelingでよく使われているfeature enhancementテクニック[5]を利用.先程のSelfAttentionMH(E)をHとして,下式のような特徴量を作り全結合レイヤに投げる.fは活性化関数.

これによりq1,q2からそれぞれM1,M2を得る

  • Matching
    このフェーズは一般的なマシンリーディングと似ている.今回は内部クエリに対して現在のクエリでアテンション(先ほどと同様にMulti-head及びfeature enhancement採用)を取る.これにより現在のクエリに対して矛盾のない新しい内部クエリを得ることを想定する.矛盾とは,例えば内部クエリに"Nike shoes"があり,現在のクエリが"Adidas"だと,"Nike shoes Adidas"となるようなこと,Nikeはドロップすべきと学習する必要がある.

screen shot 2018-10-21 at 5 01 53 pm

  • Predicting
    前回の内部クエリq1から,残すべき単語を決める問題なので,q1の各単語毎に残す残さないのバイナリ分類問題として扱う.
    今回予測の前に再度self-attentionを行い,M3をM4に更新する.実験ではこの2回目のエンコードは,同一フレーズの中の単語列(例えば"vero moda".これはブランド名)の分類の一貫性に貢献した.// 何故貢献するかはよくわからん
    そして最後に全結合層に投げ,クロスエントロピーロスを学習.// Wbcは2次元への変換なのでsigmoidで良い気がするけど

screen shot 2018-10-21 at 5 09 40 pm

実験

データセット

実験には,オンラインEコマースのクエリデータを抽出した(多分Alibaba).ただこれは対話的でなくsingle-turnのものなので少し調整した.まず同一ユーザーが30分以内に検索したクエリペアを抽出し,その頻度が5回未満のものは除外した.そこで連続する2つのクエリを,q1(前回の内部クエリ)及びq3(今回の内部クエリ)とみなした.そしてそれらのクエリを中国語でセグメンテーションを行い,その差異をq2とした.
例:q1: "Adidas shoes", q3: "Nike shoes"の場合,q2は"Nike"になる.
最後にq2が空だったものは除外した.train/val/testで4865/271/275のサイズ

実装詳細

単語のembeddingはショッピングに関連するコーパス(自社製?)で事前学習したものを利用し,今回のデータでfine-tuneする形.
他実装内容については論文4.2参照のこと.

メイン結果

今回は提案モデルに加えて,3つのベースラインを導入

  • slot baseline
    よくメンテされた製品知識をスロット定義に利用し,動的計画法でクエリ内のスロットを見つけるようにした.// よくわからない
  • LSTM baseline 1
    両クエリをLSTMでモデリングし,q1の最終状態をq2の初期状態にするようにした.// よくわからない.他の部分は?
  • LSTM baseline 2
    エンコーダー部をBiLSTMにして,残りは提案モデルと共通

結果は下記.Exact Match正解率(クエリ全体があってるかどうか)と単語毎のF1スコアを評価メトリクスに採用.
screen shot 2018-10-21 at 6 26 44 pm

まずslot baselineは,製品知識及びスロットフィリングのアルゴリズムの効率性のカバレッジに制約があるため,教師あり学習の他の手法よりかなり悪い結果になった.Eコマースの対話検索では,複雑なシナリオ及び豊富な知識が必要で,かなり凝ったトラッキングが必要ということが分かる.
LSTM1はslot baselineよりかなりよくなり,LSTM2は提案モデルにほぼ同じ.ただし,提案モデルはLSTM2より,学習時は2.1倍,テスト時は1.6倍早い

Ablationテスト

ablationもも行った.この中ではself-attentionによるエンコードが一番モデルに聞いていることが分かる.
screen shot 2018-10-21 at 5 24 40 pm

結論

Eコマースの対話検索の問題を扱った.これにはマシン理解の側面を取り入れつつ,対話検索との違いも考慮したモデルを提案した.またそのためのデータセットも構築した.モデルは最近の優れたアテンションベースのモデルを取り込み,いくつかのベースラインよりも良い結果となった.

コメント

  • ユーザーの現在の入力クエリq2の単語は,必ず新しい内部クエリq3に含まれる,という大前提が良くも悪くも強い制約を与えている
  • AND検索を前提にしており,ORは想定していない
  • 今回の検索前提を考えると,あまりDNNにしないで,ヒューリスティックに行くのが正解な気もする(元も子もないが)
  • モデルが結構複雑な割に,簡単なモデル(LSTM1とか)とあまり性能差が出ていない
  • とはいっても順不同な単語群を予測するモデルは意外とないのと問題設定が面白い.

参考

@jojonki jojonki added QA SLU labels Oct 11, 2018

@jojonki jojonki changed the title from :construction: 2018: Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective to :construction: 2018: Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective Oct 11, 2018

@jojonki jojonki changed the title from :construction: 2018: Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective to 🚧 2018: Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective Oct 11, 2018

@jojonki jojonki changed the title from 🚧 2018: Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective to 2018: Query Tracking for E-commerce Conversational Search: A Machine Comprehension Perspective Oct 21, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment