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

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

Sho Yokoi
PRO
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
PRO

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

    View Slide

  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

    View Slide

  3. まとめ
    提案:文の表現と文類似度の fuzzy 化
    • 文類似度として直感的な「BoW 間の Jaccard」を “柔らかく” する
    文の表現 文類似度
    これを BoW Jaccard index
    こう Fuzzy BoW Fuzzy Jaccard index
    Max Pooling の解釈
    • 我々がちょこちょこ使う「単語ベクトル間の max pooling」は「単語を表
    現する fuzzy ベクトル間の “OR” 演算」と見ることができる
    3 / 29

    View Slide


  4. • 小文字太字(, , … )はすべて論文に倣い 横ベクトル です
    • 一部,notation を変更しています,勝手に追加しています
    4 / 29

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  9. 直感的な方法: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

    View Slide

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

    View Slide

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

    View Slide

  12. 提案:
    「BoW 間の Jaccard index」の fuzzy 化
    これからやること
    1. 単語 の表現の fuzzy 化
    2. 文 の表現 (BoW) の fuzzy 化
    3. 文類似度 (Jaccard index) の fuzzy 化
    11 / 29

    View Slide

  13. 単語 の表現の 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

    View Slide

  14. 単語 の表現の 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

    View Slide

  15. 文 の表現 (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

    View Slide

  16. 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

    View Slide

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

    View Slide

  18. 文類似度 (Jaccard index) の fuzzy 化
    Jaccard index
    Jaccard( , ) =
    | ∩ |
    | ∪ |
    (12)
    ⇝ Fuzzy Jaccard index
    FJaccard( , ) =
    | ∩ |
    | ∪ |
    (13)
    fuzzy set の cardinality
    || ∶=

    () (14)
    15 / 29

    View Slide

  19. 「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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  23. 単語 の表現の 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

    View Slide

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

    View Slide

  25. 文 の表現 (BoW) の fuzzy 化 w/単語ベクトル
    fuzzy BoW vector
    = max

    (16)
    • 要素毎に max pooling
    ∘ fuzzy union は「要素毎の max」だった
    19 / 29

    View Slide

  26. 文類似度 (Jaccard index) の fuzzy 化 w/単語ベクトル
    fuzzy Jaccard index
    FJaccard( , ) =
    | ∩ |
    | ∪ |
    (17)
    =
    ∑ min( , )
    ∑ max( , )
    (18)
    20 / 29

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. (集合の要素を表すベクトルの集合) として何を使うか
    = (単位行列)
    • 単語: = = (単語ベクトルそのもの)
    ∘ 単語ベクトルを「何らかの意味の含有度を並べたもの」だと思う
    ∘ 分散表現…!
    • 文: = max ∈
    = max ∈
    (単語ベクトルの max pooling!)
    ∘ 我々がちょこちょこ使っている max pooling は,
    「単語ベクトル=
    fuzzy set (何らかの意味成分の membership degree vector)」と思った
    ときの fuzzy union
    ∘「max pooling = “OR” 演算」と思っておけば良さそう?
    23 / 29

    View Slide

  32. (集合の要素を表すベクトルの集合) として何を使うか
    =「2 つの文に含まれる単語全体を stack したもの」(DynaMax)
    24 / 29

    View Slide

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

    View Slide

  34. 実験設定
    • データ:STS’12–’16
    • 利用する単語ベクトル:word2vec,GloVe,fastText
    26 / 29

    View Slide

  35. ベースライン (average → cosine) と比較
    • 「ave → cos」より「max pool ( = ) → cos」の方が良い
    ∘ average より max pool の方が、
    「単語の意味の union としての文」っぽ
    い…?
    • 「max pool ( = ) → fuzzy Jaccard」はもっと良い
    ∘ 理論上まともな組合せはもっと良い
    • 「DynaMax ( =「2 文の単語ベクトルを積んだもの」) → fuzzy Jaccard」
    はもっと良い
    ∘ 文類似度を計算するときの member は「文に含まれている単語ベクト
    ルたち」でよい
    27 / 29

    View Slide

  36. ほかの実験
    • 略
    • ベースラインとの比較の仕方 (検定の仕方) についても言及あり
    28 / 29

    View Slide

  37. まとめ
    提案:文の表現と文類似度の 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

    View Slide