100 Views
December 05, 24
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2024年度後期輪読会 #8 (2024/12/5) 第9章 質問応答 (9.4~9.5) 京都大学 工学部 4回生 河田 賢斗 0
アジェンダ ◼ 9.4.1 文書検索を含んだ質問応答システム ◼ 9.4.2 質問応答のための文書検索モデル ◼ 9.4.3 BPRの実装 ◼ 9.4.4 BPRによるパッセージの埋め込みの計算 ◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる ◼ 9.5.2 検索結果のプロンプトへの組み込み 1
アジェンダ ◼ 9.4.1 文書検索を含んだ質問応答システム ◼ 9.4.2 質問応答のための文書検索モデル ◼ 9.4.3 BPRの実装 ◼ 9.4.4 BPRによるパッセージの埋め込みの計算 ◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる ◼ 9.5.2 検索結果のプロンプトへの組み込み 2
9.4.1 文書検索を含んだ質問応答システム ✓ 前節ではChatGPTに質問を直接入力して質問に答えさせた(クローズドブック質問応答) ✓ 本節では、大量の文章集合 (知識源) に対して文書検索を行い、検索結果の情報を用いて質問 に応答する(オープンブック質問応答) 以下に概念図を示す ✓ 与えられた質問に対して、文書検索モデルがWikipediaの記事本文から作成されたパッセージ の集合(上図の「大量の文書集合) から適合するものを検索し、プロンプトを作成する 3
アジェンダ ◼ 9.4.1 文書検索を含んだ質問応答システム ◼ 9.4.2 質問応答のための文書検索モデル ◼ 9.4.3 BPRの実装 ◼ 9.4.4 BPRによるパッセージの埋め込みの計算 ◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる ◼ 9.5.2 検索結果のプロンプトへの組み込み 4
9.4.2 質問応答のための文書検索モデル ✓ 質問応答のための文書検索モデルは、LLMを活用した手法が提案されている 主要なものは、① DPR ② BPR であり、双方ともに A. 質問とパッセージの埋め込み B. 最近傍探索による最適なパッセージの検索 を行う ① DPR 質問とパッセージをエンコーダ(BERT等)を用いて埋め込みに変換し、内積を計算して上位の パッセージを検索結果とする − 𝒒𝑖 , 𝒑+ 𝑖 , 𝒑𝑖 : 順に質問・内容が適合する正例パッセージの埋め込みベクトル・内容が適合しない負例パッセージの 埋め込みベクトル 𝒑+,− 𝑖,𝑗 : 同じミニバッチの異なる質問に対する正例・負例パッセージの埋め込みベクトル(バッチ内負例) • + − − このとき, 𝒒𝑖 及び 𝒑+ 𝑖 , 𝒑𝑖,1,・・・𝑀 のベクトルに対して𝒒𝑖 及び 𝒑𝑖 の内積が大きく、 𝒒𝑖 及び 𝒑𝑖,1,・・・𝑀 の内積が小さくなるように訓練する →具体的には各事例 𝑖 に対して交差エントロピー損失を最適化する 5
9.4.2 質問応答のための文書検索モデル • DPRの訓練と教師ありSimCSEの訓練の違い DPRの訓練 : 質問とパッセージでエンコーダが異なる・類似度に内積を用いる・モデルはエンコーダのみで構成される 教師ありSimCSEの訓練 : 質問とパッセージでエンコーダが同一・類似度にコサイン類似度を用いる・モデルはエンコーダ及び MLP層 で構成される • 手順 DPRの訓練 → 検索対象の全てのパッセージを埋め込み(パッセージ数×埋め込み次元)に変換 → 与えられた質問を質問エンコーダにより埋め込みに変換 → 質問の埋め込みと全てのパッセージの埋め込みとの内積を計算 → 計算結果の大きい順にパッセージを並び替えて検索結果とする • 課題 検索対象の全てのパッセージの埋め込みを作成するためには、メモリのコストが一般のノートPCでは過大 6
9.4.2 質問応答のための文書検索モデル ② BPR パッセージや質問の埋め込みに対してハッシュ層を設けて、埋め込みの値をバイナリ化(2値化) し て計算 → A. 計算の効率を向上 B. 埋め込みベクトルのサイズを大幅に縮小 C. Faiss(ライブラリ)を利用することで高速にバイナリ化された文書を検索可能 以下にハッシュ層で使用される符号関数(実数埋め込みをバイナリ埋め込みに変換する関数) を記 載する(左は訓練時に主に使用し、右は主に推論時に使用) 7
9.4.2 質問応答のための文書検索モデル 𝒆𝑞 , 𝒉𝑞 , 𝒉𝑝 : 順に質問の実数埋め込み、質問及びパッセージのバイナリ埋め込み • 手順 𝒉𝑞 , 𝒉𝑝 のハミング距離 (バイナリベクトルにおいて値が異なる要素の数)を計算 → 候補パッセージを取得 → 𝒆𝑞 及び候補パッセージに関する 𝒉𝑝 の内積を計算し、リランキングを行う → 内積の値が上位のパッセージを最終的な計算結果とする • BPR の訓練 − 質問 𝒒𝑖 及び パッセージ 𝒑+ 𝑖 , 𝒑𝑖,1,・・・𝑀 からなる事例に対して、下に示すランキング損失 (L_cand) 及び 交差エントロピー損失(L_rerank)の総和(L_BPR)を最小化して行う 8
アジェンダ ◼ 9.4.1 文書検索を含んだ質問応答システム ◼ 9.4.2 質問応答のための文書検索モデル ◼ 9.4.3 BPRの実装 ◼ 9.4.4 BPRによるパッセージの埋め込みの計算 ◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる ◼ 9.5.2 検索結果のプロンプトへの組み込み 9
9.4.3 BPRの実装 ✓ BPRモデルの実装 実際にGoogle Colab にてコードを編集 ➢ 訓練データセットの読み込み ➢ 訓練データセットから正例と負例を持たないものを除去 10
9.4.3 BPRの実装 ➢ 訓練データセット内で、正例のパッセージを1つのみ残す ➢ AI王データセットの検証セットを読み込む 11
9.4.3 BPRの実装 ➢ 検証データセットに対して正例・負例パッセージを定義 12
9.4.3 BPRの実装 ➢ 訓練セットと検証セットのミニバッチを作成するcollate関数及びトークナイザを定義 13
9.4.3 BPRの実装 ➢ BPRモデル(質問用及びパッセージ用のエンコーダからなるモデル)の準備 (1/2) 14
9.4.3 BPRの実装 ➢ BPRモデル(質問用及びパッセージ用のエンコーダからなるモデル)の準備 (2/2) 15
9.4.3 BPRの実装 ➢ Trainer の準備 ➢ 後に質問及びパッセージのエンコーダを保存しておく 16
アジェンダ ◼ 9.4.1 文書検索を含んだ質問応答システム ◼ 9.4.2 質問応答のための文書検索モデル ◼ 9.4.3 BPRの実装 ◼ 9.4.4 BPRによるパッセージの埋め込みの計算 ◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる ◼ 9.5.2 検索結果のプロンプトへの組み込み 17
9.4.4 BPRによるパッセージの埋め込みの計算 ✓ BPRモデルの訓練を行った後、AI王データセットで使用される全てのWikipediaパッセージに 対して、埋め込みを計算する ➢ データセットの読み込み ➢ トークナイザとモデルの準備 18
9.4.4 BPRによるパッセージの埋め込みの計算 ➢ モデルによる埋め込みの計算 19
アジェンダ ◼ 9.4.1 文書検索を含んだ質問応答システム ◼ 9.4.2 質問応答のための文書検索モデル ◼ 9.4.3 BPRの実装 ◼ 9.4.4 BPRによるパッセージの埋め込みの計算 ◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる ◼ 9.5.2 検索結果のプロンプトへの組み込み 20
9.5.1 文書検索モデルとChatGPTを組み合わせる ✓ BPRの検索モデルとChatGPTを組み合わせる ➢ 質問エンコーダとWikipediaパッセージの埋め込みデータセットを取得 21
9.5.1 文書検索モデルとChatGPTを組み合わせる ➢ Faissライブラリのインデックスにパッセージの埋め込みを格納する 22
9.5.1 文書検索モデルとChatGPTを組み合わせる ➢ 質問文を埋め込みに変換する関数の定義及びその出力 23
9.5.1 文書検索モデルとChatGPTを組み合わせる ➢ 文書検索を行う関数を定義する 24
アジェンダ ◼ 9.4.1 文書検索を含んだ質問応答システム ◼ 9.4.2 質問応答のための文書検索モデル ◼ 9.4.3 BPRの実装 ◼ 9.4.4 BPRによるパッセージの埋め込みの計算 ◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる ◼ 9.5.2 検索結果のプロンプトへの組み込み 25
9.5.2 検索結果のプロンプトへの組み込み ➢ 与えられた質問文から関連パッセージを検索してプロンプトに組み込むクラスの定義 ➢ 検証セットでモデルを評価した際のAPI料金(見積もり価格) 26
9.5.2 検索結果のプロンプトへの組み込み ➢ 正解率を出力する ➢ 結論として、「大規模言語モデル」に検索を活用した「外部知識」を補うと、モデルが獲得し ていない知識を補えるため非常に強力である → 外部ツールと大規模言語モデルの組み合わせが将来的に期待される 27