Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Don't Settle for Average, Go for the Max: Fuzzy...

Sho Yokoi
September 24, 2019

Don't Settle for Average, Go for the Max: Fuzzy Sets and Max-Pooled Word Vectors

2019-09-28, 第11回最先端NLP勉強会
https://sites.google.com/view/snlp-jp/home/2019

Zhelezniak et al., Don't Settle for Average, Go for the Max: Fuzzy Sets and Max-Pooled Word Vectors (ICLR 2019) の論文紹介です
https://openreview.net/forum?id=SkxXg2C5FX

Sho Yokoi

September 24, 2019
Tweet

More Decks by Sho Yokoi

Other Decks in Research

Transcript

  1. Vitalii Zhelezniak et al., ICLR 2019. Don’t Settle for Average,

    Go for the Max: Fuzzy Sets and Max-Pooled Word Vectors https://openreview.net/forum?id=SkxXg2C5FX 読む人:横井祥 (東北大/理研 AIP) 2019-09-28, 第 11 回最先端 NLP 勉強会 とくに注釈がない限り図表は論文からの引用です 1 / 29
  2. この論文を選んだ理由 • 文の表現‧文類似度計算に興味 ∘ 単語ベクトルはずいぶん洗練されてきたけれど文はまだまだ発展途上 • 書き方がものすごく好み ∘ 丁寧で強いロジック ∘

    実験ではベースラインとの違いを慎重に検証 (not SoTA) ∘ This is one of the best papers I reviewed so far this year (ICLR, NIPS, ICML, AISTATS), in terms of both the writing and technical novelty. (OpenReview) • 著者氏のファン ∘ 別の論文もとてもよかった:Zhelezniak+, Correlation Coefficients and Semantic Textual Similarity (NAACL2019) 2 / 29
  3. まとめ 提案:文の表現と文類似度の fuzzy 化 • 文類似度として直感的な「BoW 間の Jaccard」を “柔らかく” する

    文の表現 文類似度 これを BoW Jaccard index こう Fuzzy BoW Fuzzy Jaccard index Max Pooling の解釈 • 我々がちょこちょこ使う「単語ベクトル間の max pooling」は「単語を表 現する fuzzy ベクトル間の “OR” 演算」と見ることができる 3 / 29
  4. Table of Contents 背景:文の類似度計算と単語ベクトル 直感的な方法:BoW 間の Jaccard index 提案: 「BoW

    間の Jaccard index」の fuzzy 化 「BoW 間の Jaccard index」の fuzzy 化 単語ベクトルを使って計算 として何を使うか 実験 5 / 29
  5. 背景:文の類似度計算と単語ベクトル 文の類似度計算:Semantic Textual Similarity (STS) • 入力:2 文 , •

    出力:与えられた 2 文が意味的にどの程度似ているか • 評価: gold score との順位相関 ∘ 与えられたペアの相対的な「似ている度」を計算できれば良い 多くの NLP タスクに直結 •(主に文生成の)損失関数‧評価尺度として • クエリと類似した文の検索‧抽出の道具として 最近のトレンド • 「単語ベクトルの平均 → cosine」が強力 • 「単語ベクトルの平均 → cosine」に最適化された単語ベクトルの学習も この論文の立ち位置 • 文類似度を計算したければ,単語ベクトルのもっと良い使い方があるよ 6 / 29
  6. Table of Contents 背景:文の類似度計算と単語ベクトル 直感的な方法:BoW 間の Jaccard index 提案: 「BoW

    間の Jaccard index」の fuzzy 化 「BoW 間の Jaccard index」の fuzzy 化 単語ベクトルを使って計算 として何を使うか 実験 7 / 29
  7. 直感的な方法:BoW 間の Jaccard index 文の表現:BoW • = {‘he’, ‘has’, ‘a’,

    ‘cat’} • = {‘he’, ‘has’, ‘a’, ‘dog’} 文類似度:集合間の類似性尺度 • Jaccard(, ) = | ∩ | | ∪ | , Otsuka(, ) = | ∩ | || × || , … ∘ 要するに #{shared elements} #{total elements} 8 / 29
  8. 直感的な方法:BoW 間の Jaccard index 文の表現:BoW • = {‘he’, ‘has’, ‘a’,

    ‘cat’} • = {‘he’, ‘has’, ‘a’, ‘dog’} 文類似度:集合間の類似性尺度 • Jaccard(, ) = | ∩ | | ∪ | , Otsuka(, ) = | ∩ | || × || , … ∘ 要するに #{shared elements} #{total elements} 問題点:symbol 同士の類似性が無視される(いつもの) = {‘he’, ‘has’, ‘a’, ‘cat’} and = {‘she’, ‘had’, ‘one’, ‘dog’}. The situation here is that ∩ = ∅ and so their similarity according to any set similarity measure is 0 8 / 29
  9. Table of Contents 背景:文の類似度計算と単語ベクトル 直感的な方法:BoW 間の Jaccard index 提案: 「BoW

    間の Jaccard index」の fuzzy 化 「BoW 間の Jaccard index」の fuzzy 化 単語ベクトルを使って計算 として何を使うか 実験 9 / 29
  10. Table of Contents 背景:文の類似度計算と単語ベクトル 直感的な方法:BoW 間の Jaccard index 提案: 「BoW

    間の Jaccard index」の fuzzy 化 「BoW 間の Jaccard index」の fuzzy 化 単語ベクトルを使って計算 として何を使うか 実験 10 / 29
  11. 提案: 「BoW 間の Jaccard index」の fuzzy 化 これからやること 1. 単語

    の表現の fuzzy 化 2. 文 の表現 (BoW) の fuzzy 化 3. 文類似度 (Jaccard index) の fuzzy 化 11 / 29
  12. 単語 の表現の fuzzy 化 Set (Singleton) = {‘cat’} (2) ⇝

    Fuzzy Set = {‘cat’∶ 1, ‘pet’∶ 0.9, ‘animal’∶ 0.85, … , ‘airplane’∶ 0.05, … } (3) • 各語彙 ∈ に membership degree を割り当てる関数 • 「‘cat’ は ‘pet’ っぽさを 0.9 くらいは持っている」というお気持ち 12 / 29
  13. 単語 の表現の fuzzy 化 Set (Singleton) = {‘cat’} (1) =

    {‘cat’∶ 1, ‘pet’∶ 0, ‘animal’∶ 0, … , ‘airplane’∶ 0, … } (2) • ∶ → {0, 1} ⇝ Fuzzy Set = {‘cat’∶ 1, ‘pet’∶ 0.9, ‘animal’∶ 0.85, … , ‘airplane’∶ 0.05, … } (3) • 各語彙 ∈ に membership degree を割り当てる関数 • 「‘cat’ は ‘pet’ っぽさを 0.9 くらいは持っている」というお気持ち • ∶ → ℝ 12 / 29
  14. 文 の表現 (BoW) の fuzzy 化 BoW = {‘he’, ‘has’,

    ‘a’, ‘cat’} (4) = {‘he’} ∪ {‘has’} ∪ {‘a’} ∪ {‘cat’} (5) • 文 の表現 (BoW) は単語 の表現 (singleton) の union ⇝ Fuzzy BoW = {‘cat’∶ 1, ‘pet’∶ 0.9, … } (6) = {‘cat’∶ 0.10, ‘pet’∶ 0.10, ‘animal’∶ 0.20, … , ‘airplane’∶ 0.05, … } (7) ∪ … (8) ∪ {‘cat’∶ 1, ‘pet’∶ 0.9, ‘animal’∶ 0.85, … , ‘airplane’∶ 0.05, … } (9) • fuzzy union: 要素毎に max 13 / 29
  15. fuzzy set の union, intersection fuzzy set の union は

    要素毎の max ∪ ∶ ↦ max( (), ()) (10) • 満たして欲しい性質 1 ∘ set: {‘cat’} ∪ {‘cat’} = {‘cat’} ∘ fuzzy set: {‘cat’∶ 1} ∪ {‘cat’∶ 1} = {‘cat’∶ max(1, 1)} = {‘cat’∶ 1} • 満たして欲しい性質 2 ∘ set: {‘cat’} ∪ ∅ = {‘cat’} ∘ fuzzy set: {‘cat’∶ 1} ∪ {‘cat’∶ 0} = {‘cat’∶ max(1, 0)} = {‘cat’∶ 1} fuzzy set の intersection は 要素毎の min ∩ ∶ ↦ min( (), ()) (11) 14 / 29
  16. 文類似度 (Jaccard index) の fuzzy 化 Jaccard index Jaccard( ,

    ) = | ∩ | | ∪ | (12) ⇝ Fuzzy Jaccard index FJaccard( , ) = | ∩ | | ∪ | (13) 15 / 29
  17. 文類似度 (Jaccard index) の fuzzy 化 Jaccard index Jaccard( ,

    ) = | ∩ | | ∪ | (12) ⇝ Fuzzy Jaccard index FJaccard( , ) = | ∩ | | ∪ | (13) fuzzy set の cardinality || ∶= ∈ () (14) 15 / 29
  18. 「BoW 間の Jaccard index」の fuzzy 化 — まとめ 単語 •

    set: {‘cat’} (singleton) • ⇝ fuzzy set: {‘cat’∶ 1, ‘pet’∶ 0.9, … , ‘airplane’∶ 0.05, … } 文:union • union: {‘he’, ‘has’, ‘a’, ‘cat’} • ⇝ fuzzy union: 要素毎に max 類似度:Jaccard • Jaccard index • ⇝ fuzzy Jaccard index ∘ union, intersection, cardinality が fuzzy set の言葉でうまく定義できる 16 / 29
  19. Table of Contents 背景:文の類似度計算と単語ベクトル 直感的な方法:BoW 間の Jaccard index 提案: 「BoW

    間の Jaccard index」の fuzzy 化 「BoW 間の Jaccard index」の fuzzy 化 単語ベクトルを使って計算 として何を使うか 実験 17 / 29
  20. 単語 の表現の fuzzy 化 w/単語ベクトル = (15) w U u

    μw 〈w, u 〉 = ⊤ ⊤ i i • : 単語 に対応する単語ベクトル 18 / 29
  21. 単語 の表現の fuzzy 化 w/単語ベクトル = (15) w U u

    μw 〈w, u 〉 = ⊤ ⊤ i i • : 単語 に対応する単語ベクトル • = (embedding matrix) の場合 ∘ には ‘cat’ vector, ‘pet’ vector, …が積まれている ∘ は「 と ‘cat’ vector の類似度」 , 「 と ‘pet’ vector の類似度」 ,…が 並んだベクトル ∘ 作りたかった {‘cat’∶ 1, ‘pet’∶ 0.9 … } ができる! 18 / 29
  22. 単語 の表現の fuzzy 化 w/単語ベクトル = (15) w U u

    μw 〈w, u 〉 = ⊤ ⊤ i i • : 単語 に対応する単語ベクトル • つまり (universe matrix) は, 「何を member (集合の要素) と思うか」を ベクトルの形で列挙しておく行列 • = (⟨, ⟩, ⟨, ⟩, … ) ∘ と の内積 (類似度) (membership degree) が並ぶ • には任意性がある (詳細は後ほど) 18 / 29
  23. 文 の表現 (BoW) の fuzzy 化 w/単語ベクトル fuzzy BoW vector

    = max ∈ (16) • 要素毎に max pooling ∘ fuzzy union は「要素毎の max」だった 19 / 29
  24. 文類似度 (Jaccard index) の fuzzy 化 w/単語ベクトル fuzzy Jaccard index

    FJaccard( , ) = | ∩ | | ∪ | (17) = ∑ min( , ) ∑ max( , ) (18) 20 / 29
  25. Table of Contents 背景:文の類似度計算と単語ベクトル 直感的な方法:BoW 間の Jaccard index 提案: 「BoW

    間の Jaccard index」の fuzzy 化 「BoW 間の Jaccard index」の fuzzy 化 単語ベクトルを使って計算 として何を使うか 実験 21 / 29
  26. (集合の要素を表すベクトルの集合) として何を使うか = (embedding matrix) • 単語: = = (⟨,

    ⟩, ⟨, ⟩, … ) ∘ と全語彙 ∈ との類似度を並べたベクトル ∘ {‘cat’∶ 1, ‘pet’∶ 0.9, ‘animal’∶ 0.85, … , ‘airplane’∶ 0.05, … } の気持ち 22 / 29
  27. (集合の要素を表すベクトルの集合) として何を使うか = (embedding matrix) • 単語: = = (⟨,

    ⟩, ⟨, ⟩, … ) ∘ と全語彙 ∈ との類似度を並べたベクトル ∘ {‘cat’∶ 1, ‘pet’∶ 0.9, ‘animal’∶ 0.85, … , ‘airplane’∶ 0.05, … } の気持ち • これは明らかに重い ∘ 要素数が語彙数のベクトル表現 ∘ ⇝ =「単語ベクトルをクラスタリングした結果の centroid を積んだ もの」でも良い 22 / 29
  28. (集合の要素を表すベクトルの集合) として何を使うか = (単位行列) • 単語: = = (単語ベクトルそのもの) ∘

    単語ベクトルを「何らかの意味の含有度を並べたもの」だと思う ∘ 分散表現…! 23 / 29
  29. (集合の要素を表すベクトルの集合) として何を使うか = (単位行列) • 単語: = = (単語ベクトルそのもの) ∘

    単語ベクトルを「何らかの意味の含有度を並べたもの」だと思う ∘ 分散表現…! • 文: = max ∈ = max ∈ (単語ベクトルの max pooling!) ∘ 我々がちょこちょこ使っている max pooling は, 「単語ベクトル= fuzzy set (何らかの意味成分の membership degree vector)」と思った ときの fuzzy union ∘「max pooling = “OR” 演算」と思っておけば良さそう? 23 / 29
  30. Table of Contents 背景:文の類似度計算と単語ベクトル 直感的な方法:BoW 間の Jaccard index 提案: 「BoW

    間の Jaccard index」の fuzzy 化 「BoW 間の Jaccard index」の fuzzy 化 単語ベクトルを使って計算 として何を使うか 実験 25 / 29
  31. ベースライン (average → cosine) と比較 • 「ave → cos」より「max pool

    ( = ) → cos」の方が良い ∘ average より max pool の方が、 「単語の意味の union としての文」っぽ い…? • 「max pool ( = ) → fuzzy Jaccard」はもっと良い ∘ 理論上まともな組合せはもっと良い • 「DynaMax ( =「2 文の単語ベクトルを積んだもの」) → fuzzy Jaccard」 はもっと良い ∘ 文類似度を計算するときの member は「文に含まれている単語ベクト ルたち」でよい 27 / 29
  32. まとめ 提案:文の表現と文類似度の fuzzy 化 • 文類似度として直感的な「BoW 間の Jaccard」を “柔らかく” する

    文の表現 文類似度 これを BoW Jaccard index こう Fuzzy BoW Fuzzy Jaccard index 単語ベクトルを使った計算 • 単語: = ∘ (universe matrix) (何を集合の要素と思うか) には任意性がある • 文:max pooling • 文類似度:fuzzy Jaccard index Max Pooling の解釈 • 我々がちょこちょこ使う「単語ベクトル間の max pooling」は「単語を表 現する fuzzy ベクトル間の “OR” 演算」と見ることができる 29 / 29