Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

この論文を選んだ理由 • 文の表現‧文類似度計算に興味 ∘ 単語ベクトルはずいぶん洗練されてきたけれど文はまだまだ発展途上 • 書き方がものすごく好み ∘ 丁寧で強いロジック ∘ 実験ではベースラインとの違いを慎重に検証 (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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

文類似度 (Jaccard index) の fuzzy 化 Jaccard index Jaccard( , ) = | ∩ | | ∪ | (12) ⇝ Fuzzy Jaccard index FJaccard( , ) = | ∩ | | ∪ | (13) fuzzy set の cardinality || ∶= ∈ () (14) 15 / 29

Slide 19

Slide 19 text

「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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

文 の表現 (BoW) の fuzzy 化 w/単語ベクトル fuzzy BoW vector = max ∈ (16) • 要素毎に max pooling ∘ fuzzy union は「要素毎の max」だった 19 / 29

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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

Slide 37

Slide 37 text

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