Slide 1

Slide 1 text

Embeddingモデルを使ったベクトル化のしくみ
 & fine-tuning手法を解説
 
 
 早野康太


Slide 2

Slide 2 text

自己紹介
 ● 名前
 ○ 早野 康太
 ● お仕事
 ○ 自然言語モデルの改善
 ● 今期期待のアニメ
 ○ ユーフォ、無職転生、夜のクラゲ
 このすば、ガールズバンドクライ
 ● 最近の映画
 ○ デデデデおもろかったです
 ■ 幾田りら声優うまスンギ
 ■ 原作もバチクソ良かった
 ● 今後の映画
 ○ ウマ娘、ぼざろ、デデデデなど


Slide 3

Slide 3 text

アジェンダ
 ● Transformerモデル
 ○ Attentionについて
 ○ CLS, mean pooling
 ● fine-tuningについて
 ○ Contrastive Learning
 ○ データセットのつくりかた
 ● 世のEmbeddingモデルたちはどうしてるか
 ○ m-E5
 ○ E5-mistral-7b-instruct
 ○ BGE
 ● Embeddingモデルの応用
 ○ RAGとかStable Diffusionとか


Slide 4

Slide 4 text

アジェンダ
 ● Transformerモデル
 ○ Attentionについて
 ○ CLS, mean pooling
 ● fine-tuningについて
 ○ Contrastive Learning
 ○ データセットのつくりかた
 ● 世のEmbeddingモデルたちはどうしてるか
 ○ m-E5
 ○ E5-mistral-7b-instruct
 ○ BGE
 ● Embeddingモデルの応用
 ○ RAGとかStable Diffusionとか


Slide 5

Slide 5 text

Transformerモデルを使ったテキストベクトル化
 ● Transformerモデルは文章をベクトル(数値)に落とし込むことが得意
 ○ ベクトル同士の類似度 (近さ) を測って検索に応用できる
 ○ いったんベクトルに落とし込んでしまえば
 画像処理や音声処理などと文章処理を組み合わせることもできる
 吾輩は猫である
 Transformer
 0.1, 0.3, 0.04, …
 文章(文字列)
 ベクトル
 画像生成 モデル
 類似度
 検索


Slide 6

Slide 6 text

● Attention Is All You Need (Łukasz Kaiser et al., 2017)
 ○ 文章の単語同士の関連度を測る (Attention) 機構を組み込むことで
 自然言語処理モデルの性能が大きく向上
 ○ GPTなどの文章生成モデル
 ■ → TransformerモデルのDecoder部分を利用
 ○ テキストベクトル化用のモデル
 ■ → TransformerモデルのEncoder部分を利用
 Transformerモデル 


Slide 7

Slide 7 text

● A Survey of Transformers 
 (TIANYANG LIN et. al., 2021)
 ○ Transformer派生についてのサーベイ
 ○ 膨大な数のTransformer派生について
 詳細にまとめられている
 ○ もっと詳しく知りたい方は
 こちらを読まれるのをおすすめします
 
 Transformerから他のモデルへの派生


Slide 8

Slide 8 text

Attentionによる単語のベクトル化
 吾輩
 は
 猫
 である
 。
 吾輩は猫である。
 文章を単語単位に分かち書き(トークナイズ) 
 ● テキストは必ず最小単位 (トークン) に分割される 
 ● トークン単位で単語のベクトルが割り当てられる 


Slide 9

Slide 9 text

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


Slide 10

Slide 10 text

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


Slide 11

Slide 11 text

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


Slide 12

Slide 12 text

補足: ベクトル同士の”類似度”の測り方
 近い
 遠い
 ● 内積
 ○ 近い(同じ方向を向いている)ほど大きくなる
 ● コサイン類似度
 ○ 内積を-1 ~ 1に正規化 (要はcosθ )
 内積 = |a||b|cosθ

Slide 13

Slide 13 text

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


Slide 14

Slide 14 text

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


Slide 15

Slide 15 text

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


Slide 16

Slide 16 text

いったんまとめ
 
 ● Transformerモデル
 ○ Attentionを繰り返してトークンに対応するベクトルを出力
 ○ テキストベクトルの作り方は2種類ある
 ■ CLS Pooling
 ● CLSトークンだけ使う
 ■ Average Pooling
 ● 全トークンを平均する
 


Slide 17

Slide 17 text

アジェンダ
 ● Transformerモデル
 ○ Attentionについて
 ○ CLS, mean pooling
 ● fine-tuningについて
 ○ Contrastive Learning
 ○ データセットのつくりかた
 ● 世のEmbeddingモデルたちはどうしてるか
 ○ m-E5
 ○ E5-mistral-7b-instruct
 ○ BGE
 ● Embeddingモデルの応用
 ○ RAGとかStable Diffusionとか


Slide 18

Slide 18 text

● 意味が近いテキスト → “近い方向性”
 ● 意味が遠いテキスト → “遠い方向性”
 
 良いベクトル表現
 猫
 キャット
 内閣総理大臣


Slide 19

Slide 19 text

ベクトル化に特化させるためのfine-tuning
 Query:
 吾輩は猫であるの作者は?
 Positive Passage:
 『吾輩は猫である』(わがはいはねこであ る)は、夏目漱石の長編小説であり、処女 小説である。
 Negative Passage:
 『人間失格』(にんげんしっかく)は、太宰 治による中編小説。
 正解の
 テキストペア
 不正解の
 テキストペア


Slide 20

Slide 20 text

ベクトル化に特化させるためのfine-tuning
 Query:
 吾輩は猫であるの作者は?
 Negative Passage:
 『人間失格』(にんげんしっかく)は、太宰 治による中編小説。
 ベクトル化&スコア 計算 
 ポジティブスコア
 ネガティブスコア
 Positive Passage:
 『吾輩は猫である』(わがはいはねこであ る)は、夏目漱石の長編小説であり、処女 小説である。
 ● ポジティブスコアが高く、ネガティブスコアが低くなるようにロス関数を設定 
 ● 似ているものは近く、似ていないものは遠く 
 → Contrastive Learning


Slide 21

Slide 21 text

ロス関数: InfoNCE contrastive loss
 ネガティブスコア
 ポジティブ
 スコア
 出典: Text Embeddings by Weakly-Supervised Contrastive Pre-training 
 cos類似度を定数τで重み付け
 p- p+ q p- p- loss loss

Slide 22

Slide 22 text

データセット
 p- p+ q p- p- 互いに関連する文章のペア
 たとえば、Wikipediaの(title, passage)など
 ポジティブ


Slide 23

Slide 23 text

データセット
 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

Slide 24

Slide 24 text

データセット
 p- p+ q p- p- 互いに関連する文章のペア
 たとえば、Wikipediaの(title, passage)など
 ポジティブ


Slide 25

Slide 25 text

データセット
 p- p+ q p- p- 互いに関連する文章のペア
 たとえば、Wikipediaの(title, passage)など
 オープンソースのテキストペアデータセット
 ● MS-MARCO
 ○ Microsoftが深層学習研究のために作成
 ○ Bingやコルタナからクエリを収集
 回答は人間が作成
 ● Natural Questions
 ○ Googleのクエリと
 それに関連するWikipediaページで構成
 ポジティブ


Slide 26

Slide 26 text

データセット
 p- p+ q p- p- 無関係または不正解となるテキストペア
 ネガティブ


Slide 27

Slide 27 text

データセット
 p- p+ q p- p- 無関係または不正解となるテキストペア
 ● Random Negative
 ○ 大規模コーパス(Wikipediaなど)から完全にランダムに選択
 およそクエリと無関係なテキストになる (一番簡単なやり方)
 → あまりに無関係だとネガティブスコアが小さくなってしまう
 (問題設定として簡単すぎる)
 
 
 ネガティブ


Slide 28

Slide 28 text

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


Slide 29

Slide 29 text

データセット
 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
 
 
 
 ネガティブ


Slide 30

Slide 30 text

いったんまとめ
 
 ● fine-tuning手法
 ○ Contrastive Learning
 ■ ポジティブ同士は近く、ネガティブ同士は遠くなるように
 埋め込みを学習する
 ○ データセット作成
 ■ クエリ、ポジティブのテキストペアはQAデータセットなどが活用できる
 ■ ネガティブサンプリングが意外と難しい
 ● BM25スコアやほかの言語モデルの埋め込みなどから
 Hard Negativeを作成する手法は割とよく見る


Slide 31

Slide 31 text

アジェンダ
 ● Transformerモデル
 ○ Attentionについて
 ○ CLS, mean pooling
 ● fine-tuningについて
 ○ Contrastive Learning
 ○ データセットのつくりかた
 ● 世のEmbeddingモデルたちはどうしてるか
 ○ m-E5
 ○ E5-mistral-7b-instruct
 ○ BGE-M3
 ● Embeddingモデルの応用
 ○ RAGとかStable Diffusionとか


Slide 32

Slide 32 text

multilingual-E5
 ● Text Embeddings by Weakly-Supervised Contrastive Pre-training
 ○ 2段階の学習を行いテキストベクトルを高品質化
 ■ 1段階目
 ● “noisy”で大規模なデータセットで学習
 ○ Reddit, Wikipedia, その他Webページからクローリングした文章
 ■ 2段階目
 ● 高品質で小規模なデータセットで学習
 ● 別の教師モデルからの出力をLossに組み込み
 (知識蒸留, knowledge distillation)
 ○ ベースモデルはBERT
 


Slide 33

Slide 33 text

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


Slide 34

Slide 34 text

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通りの異なるベクトルからロスを計算
 ■ ↑のロスの和を最小化する
 


Slide 35

Slide 35 text

いったんまとめ
 
 ● 世のEmbeddingモデルたちはどうしているか
 ○ Noisyデータセット → 高品質データセットの順で学習
 ■ multilingual-E5, BGE-M3など
 ○ 知識蒸留の活用
 ■ multilingual-E5, BGE-M3など
 ○ LLMにデータ生成させる
 ■ E5-mistral-7b-instruct, BGE-M3など


Slide 36

Slide 36 text

アジェンダ
 ● Transformerモデル
 ○ Attentionについて
 ○ CLS, mean pooling
 ● fine-tuningについて
 ○ Contrastive Learning
 ○ データセットのつくりかた
 ● 世のEmbeddingモデルたちはどうしてるか
 ○ m-E5
 ○ E5-mistral-7b-instruct
 ○ BGE-M3
 ● Embeddingモデルの応用
 ○ RAGとかStable Diffusionとか


Slide 37

Slide 37 text

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


Slide 38

Slide 38 text

Stable Diffusion (画像生成モデルへの応用)
 
 
 raw pixel value
 VAE
 latent
 noisy latent
 + noise
 input text
 Text
 Encoder
 embedding 
 UNET
 prediction
 loss
 velocity
 生成したい画像についての文章を 
 ベクトル化して生成モデルに与える 


Slide 39

Slide 39 text

音楽生成モデル
 
 
 ● Suno AI
 ○ 自然言語で歌詞や曲調を指定すると
 その通りに音楽を生成してくれる
 ○ 具体的なモデルは公開されていないが
 内部では文章→ベクトルの変換を通して
 文章情報を生成モデルに与えている......はず!
 
 


Slide 40

Slide 40 text

いったんまとめ
 
 ● Embeddingモデルの応用
 ○ RAG
 ■ Embeddingモデルによる類似度検索結果を
 LLMへの入力として利用
 ○ Stable Diffusion
 ■ 画像からの埋込と文章からの埋め込みを
 モデル内部で処理することでマルチモーダルを実現


Slide 41

Slide 41 text

補足: ベクトル化のベンチマーク
 ● MTEB: Massive Text Embedding Benchmark
 ○ テキスト埋め込みモデルのための大規模ベンチマーク
 ○ 8つのタスクにわたり56のデータセットが含まれる
 
 


Slide 42

Slide 42 text

補足: Triplet loss 
 出典: Sentence Embeddings using Siamese BERT-Networks 
 n p a loss ポジティブとの距離
 ネガティブとの距離
 -loss ● クエリとポジティブとの距離よりも 
 ネガティブとの距離の方がなるべく遠くなるように学習する