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: Zero-Shot Adaptive Transfer for Conversational Language Understanding #128

Open
jojonki opened this Issue Aug 31, 2018 · 0 comments

Comments

Projects
None yet
1 participant
@jojonki
Owner

jojonki commented Aug 31, 2018

Zero-Shot Adaptive Transfer for Conversational Language Understanding
Sungjin Lee, Rahul Jha. Microsoft(非リサーチ). 会議不明.
https://arxiv.org/abs/1808.10059

  • 著者らの先行研究.まずこちらから読んだほうが本論の理解が早い. #129 (Bag of Experts Architectures for Model Reuse in Conversational Language Understanding)

概要

ドメイン適用の技術をスロットタギングに行う,Zero-shot Adaptive Transfer model (ZAT)の提案.ドメイン間の再利用コンセプトのためのスロット記述をスロットタギングに利用する.10ドメイン以上の実サービス(多分Cortana)のデータセットを用いて実験して既存モデルよりも十分改善することができた.

イントロ

ドメイン適用のため,data-drivenとmodel-drivenという方法がある( #129 参照).data-drivenでは,再利用のデータが増えるとが,学習時間が増えてしまうなどのデメリットがあったが,model-drivenではエキスパートモデルにより,新ドメインの学習時間は増やさずに,賢くなったエキスパートモデルの恩恵を受けることができたのであった.しかしこのモデルの欠点として

  • 明示的なコンセプトアラインメントを必要とした.(それは簡単なタスクではなく,多くの再利用コンセプトを見落とす可能性がある)
  • また未知スロットに対して一般化することも難しい

また,一般的にスロットタギングはBIOという表記を用いて,スロット部をタグ打ちしていくが(Figure 1a),本手法では,スロット毎にスロット値を含むエリアを見つけるモデルとして定式化した(Figure 1b).ドメイン間の暗黙的な再利用可能なコンセプト転移のために,スロット記述をembeddingした潜在空間のベクトルを用いてスロットを表現した.
screen shot 2018-09-01 at 8 37 38 pm

  • BIOについて
    固有表現(今回はスロット)抽出に用いられる境界のタグ付け方法.固有表現を,BはBegin,IはInside,OはOutsideという感じにタグ付けする.

スロットタギングにゼロショットを使う似たアイデアは既にあるが(Bapna, 2017),下記の点で異なる.

  1. 入力単語表現はスロットアウェア(スロットに対するアテンション)な形で表される
  2. CRFレイヤをグローバルな一貫性を保つために利用
  3. 形態論的情報を取り入れるために文字レベルのembeddingを行っている

既存研究である,BoE( #129)とコンセプトタガーモデル(Bapna)と比較し,十分な改善値を得られることを確認した.
本手法のアプローチを,Zero-shot Adaptive Transfer model (ZAT)と呼ぶことにする..

Adaptive Transfer

Figure 2をベースに説明していく.
screen shot 2018-09-01 at 8 48 29 pm

  • Word embedding Layer
    x1..xTを入力分,q1..qJをスロット記述とする.charレベルのembedding (CNNベース,最後のmaxpoolで100次元取得)を行い,wordレベルはGloVe 100次元を利用.2つのベクトルは次のContextual LSTMの入力するためconcatして200次元のベクトルを得る.

  • Contextual LSTM Layer
    BiLSTMを利用する(片道200次元,両方向で400次元(dとする)).これによりXはdxT,QはdxJを得る(前者はユーザー発話,校舎はスロット記述).ここのLSTMはユーザー発話入力とスロット記述で共通(潜在空間の共通化)

  • Attention Layer
    スロット・アウェアなベクトルGを得るためにアテンションを利用する.入力xとスロットqから下式よりアテンション値を得る.これは各入力分の時刻tのベクトルに対して,スロット記述のベクトルを舐めるように計算して,どのスロット記述の単語部にアテンションするか計算している.

screen shot 2018-09-01 at 8 59 01 pm

  • Conditional LSTM Layer
    先程のGとcontextual embedding Xをエレメント毎に足し合わせ,Hを得る.H=G⊕X.これをまたBiLSTMにかける.

  • Feedfoward Layer
    Hを入力として,各単語毎にラベルスコアをフィードフォワードで計算する

  • CRF Layer
    シーケンスのトランジションを捉えるために前レイヤの出力を入力として,CRFによるタグ付けを行う.

  • 更に..
    スロット記述はそれぞれスロット舞にフィードするようにして予測した.つまり2スロット含むような下記の例の場合,categoryとlocationで別々に予測させている.またスロットの範囲がコンフリクトした場合は,ランダムに決める

  1. "Find [mexican :: category] deals in seattle
  2. "Find mexican deals in [seattle :: location]
    ➡️ 1+2: "Find [mexican :: category] deals in [seattle :: location]

実験

データ

データの集め方については #129 で記載しているのでそちらも参考に .いくつかのプロンプト(内容不明だが,たとえば'テレビを付ける時にどう発話しますか?"みたいなやつ)がクラウドソースによる発話のために作られ,MSのアノテーションのお作法に則ってアノテーションした.各ドメイン少なくとも5000インスタンス作り,ビジネスプライオリティに従って下のテーブルのような内訳になった 📔
screen shot 2018-09-01 at 9 53 56 pm

ベースラインシステム

Bag-Of-Experts (BOE)モデル,非BOEモデル,Bapnaら(2017)による別のスロットタギングのゼロショットモデル

比較モデル

  • #129 Jha (2018) らのモデル
    彼らの,LSTM, LSTM-BOE, CRF, CRF-BOEを利用.説明は #129 を参照.簡単に言うと,ドメインに依存しない共通スロットで予め鍛えたモデル,エキスパートモデルを用意.新規ドメイン学習時に,そのエキスパートモデルが出力する潜在空間を,利用した.

  • CT
    SOTAなゼロショットモデルとして,BapnaらのConcept Tagger (CT)を採用.このモデルではまず単語をembeddingし,スロットのエンコーディング結果と一緒にフィードフォワードのレイヤに流れる.スロットのエンコードは,スロトット記述の単語毎embeddingの平均値.最後にBiLSTM+softmaxにかけ,各スロット毎の予測を得る.

ゼロショットモデルを利用したドメイン適用 方法

ターゲットドメイン(新規ドメイン)を除くすべてのドメインを利用して,サイズ2000のjointデータセットを作った.ベースモデルはこのデータセットで学習させた.スロットを含むサンプルと含まないサンプルは,1:3の比率.ベースモデルを学習した後,ドメイン適用は,ターゲットドメインの学習データを利用し,ベースモデルを更に学習させていく.
ちなみに今回の実験では,各ターゲットドメインのデータセットのサイズは18,000であり,BoEアプローチのエキスパートモデルを学習したときに使った何百万のサンプルと比べると,だいぶ小さい.更にスロットを含まないターゲットドメインの発話も結構ある.

結果と考察

10の各ターゲットドメインに対して,各手法のF1スコアをTable 2に示す.
CRFとLSTMは,BoE版の方が性能がよい.更に,ゼロショットモデルである,CTとZATは更にそれらを上回った.
BoEモデルの中結果をターゲットドメイン毎に分析する.BoEでは,もっとも結果が良かったのは,transportationとtravel.これは,それらのドメインがtimexとlocationを多く含んでおり,エキスパートモデルの恩恵を強く受けることができたからである.ただ逆にそれらのスロットをあまり含まないshoppingでは悪化.そんな中,ZATは一貫して改善できている.これは,ZATでは,timexやlocationだけでなく,contact_name, rating, quantity, priceといった多くのドメインで現れるスロットを学習できているからである.
screen shot 2018-09-23 at 11 41 01 pm

学習データ数を500,1000,2000と変えても(少ない時,多い時を再現),ZATは他モデルよりも優れた性能を出している.
screen shot 2018-09-23 at 11 55 16 pm
またターゲットドメインの学習データ数が0のとき(つまり,ベースモデルを最初に鍛えるときのjointデータセットのみ)もZATはCTをよりも1ドメインを除いて良い結果となった.// jointデータセットに現れる共通スロットの恩恵かな
screen shot 2018-09-23 at 11 56 11 pm

Model Variants

ablationをしした結果は下記.CRFとChar embeddingを除いて実験.CRFとCHARで,~3%の性能低下が見られた.更にpre-trainのword embeddingをfineチューニングした(WEFT)も比較.ターゲットドメインの学習データがまったくないと性能は悪化したが,データが有る場合は性能を改善することがわかった.
screen shot 2018-09-24 at 12 03 13 am

分析

”Can I wear jeans to a casual dinner?”という文に対して,category, item, timeの3スロットそれぞれのアテンションを可視化した.該当スロットである場合,入力文の該当単語に対してアテンションできている(a, b),また該当スロットがない場合は,特に明確なアテンションをしていない事がわかる(c).
screen shot 2018-09-24 at 12 08 58 am

スロット位置は,後ろにある方がエラーが少ない.(=ある程度のコンテキストを必要としている)
screen shot 2018-09-24 at 12 03 18 am

スロットの範囲長別のエラー率は下記.本モデルでは長いほどエラーが多い(スパンベースの何らかのモデルを導入したほうが良いかも).
screen shot 2018-09-24 at 3 49 36 pm

spacyで品詞を付与し,1万回以上現れ10%以上のエラーを含むものを円グラフにした.まずconjunctive構造(例:Help me find my [black and tan] [jacket])でエラー率が22%.これにはparse情報を利用するのが良さそう.またNUMカテゴリは,コンセプトやサーフェスフォームが多様であることに起因する.NUMカテゴリのエキスパートモデルの導入はこれを改善してくれるかもしれない.
screen shot 2018-09-24 at 12 14 59 am

関連研究

割愛

まとめ

スロットタギングのタスクを,スロット記述を用い,更にゼロショットの転移学習で行った.様々なドメイン間の再利用可能なコンセプトを利用することにより,先行研究の問題点であった,学習時間,コンセプトアラインメント(timexとlocationを別途設けていた)を解決した.本手法のZATでは,既存のSOTAモデルよりも良い結果になった.またターゲットドメインの学習データ数が2000とそれなりにあるときだけでなく,500と少ないときも改善していたことを確認.

コメント 📔

  • 🙅‍♂️ スロット抽出を1回の計算で出来ず,スロット数分だけ同じ処理をするのは実践的ではない気がする..
  • 🙅‍♂️ スロット記述の設計と効果が不明
  • しれっと次のコルタナの機能の開発途中であることが伺える

@jojonki jojonki changed the title from 🚧 2018: Zero-Shot Adaptive Transfer for Conversational Language Understanding to 2018: Zero-Shot Adaptive Transfer for Conversational Language Understanding Sep 23, 2018

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