【DL輪読会】SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021)

296 Views

December 03, 21

スライド概要

2021/12/03
Deep Learning JP:
http://deeplearning.jp/seminar-2/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

DEEP LEARNING JP [DL Papers] SimCSE: Simple Contrastive Learning of Sentence Embeddings (EMNLP 2021) 山本 貴之 (ヤフー株式会社) http://deeplearning.jp/ 1

2.

書誌情報 タイトル: SimCSE: Simple Contrastive Learning of Sentence Embeddings https://arxiv.org /abs/2104.08821 (Accepted to EMNLP 2021) 著者: Tianyu Gao †* , Xingcheng Yao‡*, Danqi Chen † † プリンストン大学 ‡ 清華大学 概要: • • コンピュータサイエンス学科 学際情報科学研究所 BERTで文章の意味合いをより正しく埋め込み表現する、対照学習手法 教師なし、教師ありの2つの手法で両方ともSOTA 選定理由: 手法がシンプルな為、応用範囲の期待による 公式実装: https://github.com/princeton-nlp/SimCSE 2

3.

アジェンダ 1. 導入 2. 先行研究 3. 手法 4. 実験 5. まとめ 3

4.

1. 導入 背景 • 普遍的な文の意味合いのEmbeddingベクトルを学習する事は自然言語処理の基本的な問題 (Kiros et al., 2015; Hill et al., 2016; Conneau et al., 2017; Logeswaran and Lee, 2018; Cer et al., 2018; Reimers and Gurevych, 2019, inter alia) • 事前学習済BERTやRoBERTaを用い、次のような、シンプルな対照学習手法を提案 手法 • 教師なし:BERTに同じ文章を2回投入し、Dropoutによる2つの類似ベクトルを正例ペアとする • 教師あり:NLI自然言語推論データセット使用し、”含意”と”矛盾”データを活用する 結果 • STS(意味合い観点の類似文の評価手法)で評価し、SOTA(教師なしは+4.2%、教師ありは+2.2%) • 理由は主に埋め込み空間の異方性を等方的に調整できた事による 4

5.

2. 先行研究① SimCLR 対照学習のフレームワークとして参考にしている ResNet-50 ImagetNet Top-1 Accuracy 1. 画像ベースの手法 2. 教師なしでも、教師ありに匹敵する性能 3. その為には、パラメータ数を増やし、大きなバッチサイズ とより多くの学習ステップが必要 出典:https://arxiv.org /abs /2002.05709 5

6.

2. 先行研究① SimCLR 1枚の画像から正例ペアを生成→softmax的損失関数(NT-Xent)で正例ペアを1に、負例ペアを0に近づける * * 正例のソフトマックスを 1に近づけるよう学習 * ■損失関数 温度付きソフトマックス に類似した式構造 プロジェクションヘッド ※sim:コサイン類似度 エンコーダー この損失関数をNT-Xentと呼ぶ (=Normalized Temperature-scaled CROSS entropy) ミニバッチ 元画像数N 出典: https://arxiv.org /abs /2002.05709 https://ai.googleblog.com/2020/04/advancing-self-supervised-and-semi.html 6

7.

2. 先行研究② CT-BERT (CONTRASTIVE TENSION) • 従来のSOTA論文 • 文章のEmbeddingベクトルの表現学習をBERTを用い教師なしで行う(教師ありも実施) • モデル2つが独立してるのが特徴的 • ドット積を大きくor小さくする対照学習。(ベクトル間の角度を調整する思想と考えられる) 出典: https://openreview.net/pdf?id=Ov_sMNau-PF 8

8.

2. 先行研究② CT-BERT (CONTRASTIVE TENSION) • BERTは元々出力層に近づくにつれ、分の意味合いを正しく表現できていない 文の意味の類似性を 表現できているかのスコア • CT-BERTで学習を進めると、出力層に近い層が、分の意味合いを正しく表現できるようになっていく BERTの層(左が入力層、右が出力層) 出典: 図 :https://openreview.net/pdf?id=Ov_sMNau-PF STS score :https://arxiv.org /abs /1708.00055 9

9.

3. 本研究の手法 学習方法(概要) 学習データ 教師なし:英語版Wikipediaから100万文をサンプリング 教師あり:SNLIおよびMNLIデータセットを使用 モデル構造 プレトレーニング済 BERT、もしくは、RoBERTa エンコーダー(BERT)出力に、プロジェクションヘッド(1層MLP)を追加 損失関数 Normalized Temperature-scaled CROSS entropy loss(NT-Xent) 温度付きsoftmax CrossEntropyLoss 10

10.

3. 手法 教師なし 教師なし手法の学習手法 1 1. 左図の各文章をBERTに2回入力し、Dropoutの影響で微 妙に異なる2つのベクトルを正例とする。すなわち下式のxiと xi+の2つの正例ベクトルのペアがミニバッチ分が出来上がる 2. ミニバッチ内の他の文章のベクトルを負例とする 正例 2 負例 負例 正例 負例 出典:https://arxiv.org /abs /2104.08821 3. NT-Xent lossで正例を1に近づけ、負例は0に近づける 11

11.

3. 手法 損失関数 (先行研究との比較) 当研究の損失関数(教師なし) 先行研究① SimCLR 損失関数 iとjは元同一画像 Dropoutマスク 正例ペア 温度 ミニバッチの考え方が異なる N×2が横に並んでいるイメージ iと(i以外のk)は違う画像 softmax部が1になった時 損失 -log(・)は0になる N:ミニバッチ組数 softmaxの分母 正例・負例の全組合せ 当図はN=2 :温度パラメータ sim:コサイン類似度 h:文章ベクトル 参考:温度付きsoftmax 12

12.

3. 手法 損失関数の、cos類似度とsoftmax値の関係 温度0.05時 正例ペア 負例ペア① 1. 温度 を慎重に調整した結果、 =0.05が単なるdot積(下表N/A) より優れた結果となった為、この設定を用いている softmaxの温度とSTSスコアの関係 負例ペア② 学習の進行時間軸のイメージ 正例ペア 2. この時、cos類似度と、softmax値の関係は左図のようになる =0.05 負例ペア② 出典: 山本作成 負例ペア① 14

13.

3. 手法 損失関数の実装 1. pytorchのCrossEntropyLoss関数は、softmaxが内包さ れている 2. その関数に温度付きcos類似度と、を、投入するだけで、本論 分の損失関数が実現 PyTorch公式リファレンス ### 損失関数関連のみ行単位で抜粋 ### ハードネガティブは省略 class Similarity(nn.Module): 温度付きcos類似度 def forward(self, x, y): return self.cos(x, y) / self.temp def cl_init(cls, config): cls.sim = Similarity(temp=cls.model_args.temp) BERTモデルclassのforward部 def cl_forward(cls,~略~) cos_sim = cls.sim(z1.unsqueeze(1), z2.unsqueeze(0)) labels = torch.arange(cos_sim.size(0)).long().to(cls.device) loss_fct = nn.CrossEntropyLoss() loss = loss_fct(cos_sim, labels) 出典: https://github.com/princeton-nlp/SimCSE 温度付きcos_sim labels 出典:https://pytorch.org/docs/stable/generated/torch.nn.CrossEntropyLoss.html z1,z2がDropoutで少々異なる ミニバッチデータ群 cos_sim.shape=[BATCH_SIZE, BATCH_SIZE] labels=[0,1,2,...BATCH_SIZE-1] pytorchのCrossEntropyLossを loss関数として使うだけ 正例ぺアのsoftmaxを1に他を0に 近づけるようなloss関数となる 引数のlabels部はインデックス箇所が1 のone-hotベクトルが生成される 15

14.

3. 手法 教師あり 教師あり手法の学習手法 1. NLI自然言語推論データセットを用いる 2. entailment (含意)を正例とする 3. neutral (中立)は使わない 4. バッチ内の他文章は負例 5. さらに、contradiction (矛盾)をハードネガ ティブ負例として使う事でさらに性能が向上 6. 上記を反映してデータセットを再定義 ハードネガティブ負例をxi-として追加 contradiction文章の ハードネガティブ負例追加 7. 損失関数を下記とする 出典:https://arxiv.org /abs /2104.08821 contradictionを使った ハードネガティブ項が追加 16

15.

3. 手法 モデル構造 文章意味合い ベクトル MLP 教師なしのテスト時のみ MLP層は使わず [CLS]出力を直接使用 1層MLP class MLPLayer(nn.Module): def __init__(self, config): super().__init__() self.dense = nn.Linear(config.hidden_size, config.hidden_size) self.activation = nn.Tanh() def forward(self, features, **kwargs): x = self.dense(features) x = self.activation(x) return x 出典: https://github.com/princeton-nlp /SimCSE 出典: https://arxiv.org /pdf/1810.04805.pdf 17

16.

4. 実験 学習設定 バッチサイズは{64,128,256,512}、 学習率は{1e-5,3e-5,5e-5}のグリッドサーチで決定 その他の学習設定 SimCSEのバッチサイズと学習率 学習時間 GPU:P100×1 3時間12分 項目 教師なし トレーニング 英語版Wikipediaから 100万文をサンプリング データ max seq 32 length エポック数 1 教師あり NLI 32 3 出典:https://arxiv.org/abs/2104.08821 • simCSEはバッチサイズに敏感ではないことが分かった これは「対照学習には大きなバッチサイズが必要である」という先行研究の知見と矛盾している ※学習時間は山本が公式実装を実行したもの ※教師ありのバッチサイズ512は、公式実装ではGPU4個×各GPUバッチ128としている。GPU1個で512バッチで動かすとGPUメモリ不足の為学習時間計測できず 18

17.

4. 実験 教師なし:従来手法との比較(augmentation手法) 旧方式の、文章の一部の単語を削除する事で正例ペアを作る方式などより、本研究の手法が良い STS-Bにおけるaugmentation比較 (スピアマンの相関) 単語の削除 同義語置換 出典:https://arxiv.org/abs/2104.08821 19

18.

4. 実験 教師なし:Dropout率による性能変化 BERTデフォルトのp=0.1が最も良い結果 “Fixed 0.1”(=両方同じDropoutマスク)の性能低下が顕著 → 本論文の手法の正例の効果が高い STS-Bにおけるドロップアウト率別の効果 (スピアマンの相関) ※”Fixed 0.1”:p=0.1だが、両方全く同じDropoutマスク 出典:https://arxiv.org /abs /2104.08821 20

19.

4. 実験 教師なし:ベクトル空間のアラインメントとユニフォームから、SimCSE高性能の理由を説明 異方性のあるベクトル空間形状(uniform)が、等方的に良くなっていく中で、アラインメントが悪化しない ベクトル空間のアラインメントとユニフォーム (左下がgood) ※10学習ステップ毎にプロット 出典:https://arxiv.org/abs/2104.08821 21

20.

4. 実験 高精度の理由を異方性の観点から 提案手法は、ベクトル上のアラインメントと、ベクトル形状のユニフォームのバランスが良い BERT-whitening法による 等方性向上 色は STSスコア BERT-flow法による 等方的ガウス分布変換 Sentence-BERT, 2019 出典:https://arxiv.org/abs/2104.08821 22

21.

4. 実験 教師あり:ハードネガティブの効果 バッチ内他を負例にする事に加え、”矛盾”をハードネガティブに加える事で精度向上 entailment (含意)のみ利用と、各手法の比較 およびcontradiction (矛盾)ハードネガティブ利用の効果 entailment (含意)を正例、バッチ内他を負例 contradiction (矛盾)ハードネガティブも利用 出典:https://arxiv.org/abs/2104.08821 23

22.

4. 実験 教師あり:ハードネガティブの強さを調整した結果、α=1.0が最も好精度 α=1の場合が最も性能が高い ハードネガティブの強さを加味した損失関数 ※ : i=jの時のみ1になる 最適なαの検討 出典:https://arxiv.org/abs/2104.08821 24

23.

4. 実験 結果まとめ 出典:https://arxiv.org/abs/2104.08821 +4.2% 教師なし:BERT:SOTA 教師なし:RoBERTa:SOTA +2.2% 教師あり:BERT:SOTA 教師あり:RoBERTa:SOTA 25

24.

5. まとめ 結論 • シンプルな対照学習フレームワークを提案 • 意味の類似性タスク(STS)でSOTA • 教師なしは、Dropoutノイズで正例ペアを生成、バッチ内他を負例 • 教師ありは、NLIデータセットを活用。バッチ内他を負例。加えて、NLI”矛盾”をハードネガティブにし精度向上 • ベクトルのアラインメントと、形状ユニフォームの2軸の観点から理由を説明 感想 • 非常にシンプルな手法なので、考え方の応用範囲が広そう • BERTプレトレーニング → SimCSE的な教師なし意味合い学習 → ファインチューニングで、よりタスクの精度が上がる? • ビジネス応用の際、自然言語処理以外でも使えそう。かつ、 教師なしの、量多め、深さ浅めのデータで表現学習空間を整え → 少量のより深いデータでファインチューニングする事で ビジネスに関わる様々な事の表現学習に使えないか興味あり 26