Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説

payanotty
April 11, 2024
4.1k

 Embeddingモデルを使ったベクトル化のしくみ、fine-tuning手法を解説

payanotty

April 11, 2024
Tweet

Transcript

  1. 自己紹介
 • 名前
 ◦ 早野 康太
 • お仕事
 ◦ 自然言語モデルの改善


    • 今期期待のアニメ
 ◦ ユーフォ、無職転生、夜のクラゲ
 このすば、ガールズバンドクライ
 • 最近の映画
 ◦ デデデデおもろかったです
 ▪ 幾田りら声優うまスンギ
 ▪ 原作もバチクソ良かった
 • 今後の映画
 ◦ ウマ娘、ぼざろ、デデデデなど

  2. アジェンダ
 • Transformerモデル
 ◦ Attentionについて
 ◦ CLS, mean pooling
 •

    fine-tuningについて
 ◦ Contrastive Learning
 ◦ データセットのつくりかた
 • 世のEmbeddingモデルたちはどうしてるか
 ◦ m-E5
 ◦ E5-mistral-7b-instruct
 ◦ BGE
 • Embeddingモデルの応用
 ◦ RAGとかStable Diffusionとか

  3. アジェンダ
 • Transformerモデル
 ◦ Attentionについて
 ◦ CLS, mean pooling
 •

    fine-tuningについて
 ◦ Contrastive Learning
 ◦ データセットのつくりかた
 • 世のEmbeddingモデルたちはどうしてるか
 ◦ m-E5
 ◦ E5-mistral-7b-instruct
 ◦ BGE
 • Embeddingモデルの応用
 ◦ RAGとかStable Diffusionとか

  4. • Attention Is All You Need (Łukasz Kaiser et al.,

    2017)
 ◦ 文章の単語同士の関連度を測る (Attention) 機構を組み込むことで
 自然言語処理モデルの性能が大きく向上
 ◦ GPTなどの文章生成モデル
 ▪ → TransformerモデルのDecoder部分を利用
 ◦ テキストベクトル化用のモデル
 ▪ → TransformerモデルのEncoder部分を利用
 Transformerモデル 

  5. • A Survey of Transformers 
 (TIANYANG LIN et. al.,

    2021)
 ◦ Transformer派生についてのサーベイ
 ◦ 膨大な数のTransformer派生について
 詳細にまとめられている
 ◦ もっと詳しく知りたい方は
 こちらを読まれるのをおすすめします
 
 Transformerから他のモデルへの派生

  6. Attentionによる単語のベクトル化
 吾輩
 は
 猫
 である
 。
 吾輩は猫である。
 文章を単語単位に分かち書き(トークナイズ) 
 •

    テキストは必ず最小単位 (トークン) に分割される 
 • トークン単位で単語のベクトルが割り当てられる 

  7. Attentionによる単語のベクトル化
 吾輩
 は
 猫
 である
 。
 吾輩
 は
 猫
 である


    。
 文章を単語単位に分かち書き(トークナイズ) 
 各単語に対応するベクトル 

  8. Attentionによる単語のベクトル化
 吾輩
 は
 猫
 である
 。
 吾輩
 は
 猫
 である


    。
 0.1
 0.3
 -0.5
 0.8
 長方形はベクトルだと思ってください 
 文章を単語単位に分かち書き(トークナイズ) 

  9. Attentionによる単語のベクトル化
 吾輩
 は
 猫
 である
 。
 吾輩
 は
 猫
 である


    。
 文章を単語単位に分かち書き(トークナイズ) 
 各単語に対応するベクトル 
 単語に対応する新しいベクトル 
 ベクトル同士の内積の値(類似度) 
 ×

  10. AttentionからTransformerへ
 吾輩
 は
 猫
 である
 。
 Attention
 Attention
 Transformer
 吾輩


    は
 猫
 である
 。
 BERTやGPTをはじめとしたTransformer系列のモデルは 
 Attentionを繰り返して文章をベクトルの連なりに変換している 

  11. AttentionからTransformerへ
 吾輩
 は
 猫
 である
 。
 Attention
 Attention
 Transformer
 吾輩


    は
 猫
 である
 。
 BERTやGPTをはじめとしたTransformer系列のモデルは 
 Attentionを繰り返して文章をベクトルの連なりに変換している 
 一番はじめのベクトルは 
 ランダム初期化
 (学習の中で最適化されていく) 
 
 トークンの数だけ
 ベクトルが出てくる
 

  12. 文章のベクトル化
 吾輩
 は
 猫
 である
 。
 Attention
 Attention
 Transformer
 吾輩


    は
 猫
 である
 。
 [CLS]
 [CLS]
 文頭に特別な トークンを追加
 • CLS Pooling
 ◦ 文頭の特別なトークンのベクトルを文章ベクトルとして使う 
 • Average Pooling
 ◦ 全トークンの値を平均して文章ベクトルとして使う 
 CLSに対応する ベクトル

  13. アジェンダ
 • Transformerモデル
 ◦ Attentionについて
 ◦ CLS, mean pooling
 •

    fine-tuningについて
 ◦ Contrastive Learning
 ◦ データセットのつくりかた
 • 世のEmbeddingモデルたちはどうしてるか
 ◦ m-E5
 ◦ E5-mistral-7b-instruct
 ◦ BGE
 • Embeddingモデルの応用
 ◦ RAGとかStable Diffusionとか

  14. ベクトル化に特化させるためのfine-tuning
 Query:
 吾輩は猫であるの作者は?
 Negative Passage:
 『人間失格』(にんげんしっかく)は、太宰 治による中編小説。
 ベクトル化&スコア 計算 
 ポジティブスコア


    ネガティブスコア
 Positive Passage:
 『吾輩は猫である』(わがはいはねこであ る)は、夏目漱石の長編小説であり、処女 小説である。
 • ポジティブスコアが高く、ネガティブスコアが低くなるようにロス関数を設定 
 • 似ているものは近く、似ていないものは遠く 
 → Contrastive Learning

  15. ロス関数: InfoNCE contrastive loss
 ネガティブスコア
 ポジティブ
 スコア
 出典: Text Embeddings

    by Weakly-Supervised Contrastive Pre-training 
 cos類似度を定数τで重み付け
 p- p+ q p- p- loss loss
  16. データセット
 p- p+ q p- p- p- p+ q p-

    p- p- p+ q p- p- p- p+ q p- p- • クエリ、ポジティブ、ネガティブの 
 テキストペアで1セット
 • fine-tuningする際には
 テキストペアごとにlossを算出する 
 → どうやってネガポジを集める? 
 loss loss loss loss
  17. データセット
 p- p+ q p- p- 互いに関連する文章のペア
 たとえば、Wikipediaの(title, passage)など
 オープンソースのテキストペアデータセット


    • MS-MARCO
 ◦ Microsoftが深層学習研究のために作成
 ◦ Bingやコルタナからクエリを収集
 回答は人間が作成
 • Natural Questions
 ◦ Googleのクエリと
 それに関連するWikipediaページで構成
 ポジティブ

  18. データセット
 p- p+ q p- p- 無関係または不正解となるテキストペア
 • Random Negative


    ◦ 大規模コーパス(Wikipediaなど)から完全にランダムに選択
 およそクエリと無関係なテキストになる (一番簡単なやり方)
 → あまりに無関係だとネガティブスコアが小さくなってしまう
 (問題設定として簡単すぎる)
 
 
 ネガティブ

  19. データセット
 p- p+ q p- p- 無関係または不正解となるテキストペア
 
 • Random

    Negative
 ◦ 大規模コーパス(Wikipediaなど)から完全にランダムに選択
 およそクエリと無関係なテキストになる (一番簡単なやり方)
 → あまりに無関係だとネガティブスコアが小さくなってしまう
 (問題設定として簡単すぎる)
 • Hard Negative
 ◦ “それなりの”難易度のネガティブパッセージを
 用意することで、embeddingの品質を担保できる
 
 
 ネガティブ

  20. データセット
 p- p+ q p- p- 無関係または不正解となるテキストペア
 
 • Hard

    Negative
 ◦ BM25 Hard Negative
 ▪ あるクエリについて
 コーパス内の各パッセージとのBM25スコアを計算
 ▪ BM25スコアのtop-kをネガティブサンプルとする
 ◦ 教師モデルのスコアをもとにHard Negativeをサンプリングする
 ▪ SIMLM: Pre-training with Representation Bottleneck for Dense Passage Retrieval
 
 
 
 ネガティブ

  21. いったんまとめ
 
 • fine-tuning手法
 ◦ Contrastive Learning
 ▪ ポジティブ同士は近く、ネガティブ同士は遠くなるように
 埋め込みを学習する


    ◦ データセット作成
 ▪ クエリ、ポジティブのテキストペアはQAデータセットなどが活用できる
 ▪ ネガティブサンプリングが意外と難しい
 • BM25スコアやほかの言語モデルの埋め込みなどから
 Hard Negativeを作成する手法は割とよく見る

  22. アジェンダ
 • Transformerモデル
 ◦ Attentionについて
 ◦ CLS, mean pooling
 •

    fine-tuningについて
 ◦ Contrastive Learning
 ◦ データセットのつくりかた
 • 世のEmbeddingモデルたちはどうしてるか
 ◦ m-E5
 ◦ E5-mistral-7b-instruct
 ◦ BGE-M3
 • Embeddingモデルの応用
 ◦ RAGとかStable Diffusionとか

  23. multilingual-E5
 • Text Embeddings by Weakly-Supervised Contrastive Pre-training
 ◦ 2段階の学習を行いテキストベクトルを高品質化


    ▪ 1段階目
 • “noisy”で大規模なデータセットで学習
 ◦ Reddit, Wikipedia, その他Webページからクローリングした文章
 ▪ 2段階目
 • 高品質で小規模なデータセットで学習
 • 別の教師モデルからの出力をLossに組み込み
 (知識蒸留, knowledge distillation)
 ◦ ベースモデルはBERT
 

  24. E5-mistral-7b-instruct
 • Improving Text Embeddings with Large Language Models
 ◦

    LLMモデルに高品質な学習データセットを生成させることで
 少ないデータセットサイズで高精度を達成
 ▪ 想定するタスクをいくつかに分類
 ▪ 分類したタスクごとにGPT-4に
 クエリ、ポジティブ、ネガティブのテキストペアを生成させる
 ◦ BERT系列ではなく大規模な言語モデル (Mistral-7b) をベースモデルに使用
 
 

  25. BGE-M3
 • BGE M3-Embedding: Multi-Lingual, Multi-Functionality, Multi-Granularity Text Embeddings Through

    Self-Knowledge Distillation
 ◦ 3種類のデータセットでによる多段階学習
 ▪ “noisy”で大規模なデータセット
 • WikipediaやCC-Newsなどのタイトルや本文
 ▪ 高品質で小規模なデータセット
 • NLIやMS-MARCOなどのラベル付きデータセット
 ▪ GPT-3.5からの生成データセット
 • Wikipediaなどのパラグラフからクエリ生成
 ◦ 自己知識蒸留 (self-knowledge distillation)
 ▪ 3通りの異なるベクトルからロスを計算
 ▪ ↑のロスの和を最小化する
 

  26. いったんまとめ
 
 • 世のEmbeddingモデルたちはどうしているか
 ◦ Noisyデータセット → 高品質データセットの順で学習
 ▪ multilingual-E5,

    BGE-M3など
 ◦ 知識蒸留の活用
 ▪ multilingual-E5, BGE-M3など
 ◦ LLMにデータ生成させる
 ▪ E5-mistral-7b-instruct, BGE-M3など

  27. アジェンダ
 • Transformerモデル
 ◦ Attentionについて
 ◦ CLS, mean pooling
 •

    fine-tuningについて
 ◦ Contrastive Learning
 ◦ データセットのつくりかた
 • 世のEmbeddingモデルたちはどうしてるか
 ◦ m-E5
 ◦ E5-mistral-7b-instruct
 ◦ BGE-M3
 • Embeddingモデルの応用
 ◦ RAGとかStable Diffusionとか

  28. RAG (Retrieval Augmented Generation)
 質問 + 選択肢
 Wikipedia passages
 dump


    Wikipedia embeddings
 
 あらかじめベクトル化 
 ベクトル化
 embedding
 ベクトル類似度検索 
 関連する文章
 (Context)
 LLMへのインプット
 Wikipedia記事から
 検索してContextを取得
 ベクトル検索用に調整された言語モデルを使う 
 (質問に回答するモデルとは別物) 

  29. Stable Diffusion (画像生成モデルへの応用)
 
 
 raw pixel value
 VAE
 latent


    noisy latent
 + noise
 input text
 Text
 Encoder
 embedding 
 UNET
 prediction
 loss
 velocity
 生成したい画像についての文章を 
 ベクトル化して生成モデルに与える 

  30. 音楽生成モデル
 
 
 • Suno AI
 ◦ 自然言語で歌詞や曲調を指定すると
 その通りに音楽を生成してくれる
 ◦

    具体的なモデルは公開されていないが
 内部では文章→ベクトルの変換を通して
 文章情報を生成モデルに与えている......はず!
 
 

  31. いったんまとめ
 
 • Embeddingモデルの応用
 ◦ RAG
 ▪ Embeddingモデルによる類似度検索結果を
 LLMへの入力として利用
 ◦

    Stable Diffusion
 ▪ 画像からの埋込と文章からの埋め込みを
 モデル内部で処理することでマルチモーダルを実現

  32. 補足: Triplet loss 
 出典: Sentence Embeddings using Siamese BERT-Networks

    
 n p a loss ポジティブとの距離
 ネガティブとの距離
 -loss • クエリとポジティブとの距離よりも 
 ネガティブとの距離の方がなるべく遠くなるように学習する