---
title: 【大規模言語モデル入門】９章9.4~9.5
tags: 
author: [京都大学人工知能研究会KaiRA](https://www.docswell.com/user/kyoto-kaira)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/K74VV46QJ1.jpg?width=480
description: 【大規模言語モデル入門】９章9.4~9.5 by 京都大学人工知能研究会KaiRA
published: December 05, 24
canonical: https://www.docswell.com/s/kyoto-kaira/K4V498-2024-12-05-215051
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/K74VV46QJ1.jpg)

2024年度後期輪読会 #8 (2024/12/5)
第9章 質問応答 (9.4～9.5)
京都大学 工学部 4回生
河田
賢斗
0


# Page. 2

![Page Image](https://bcdn.docswell.com/page/LJ1334VL7G.jpg)

アジェンダ
◼ 9.4.1 文書検索を含んだ質問応答システム
◼ 9.4.2 質問応答のための文書検索モデル
◼ 9.4.3 BPRの実装
◼ 9.4.4 BPRによるパッセージの埋め込みの計算
◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる
◼ 9.5.2 検索結果のプロンプトへの組み込み
1


# Page. 3

![Page Image](https://bcdn.docswell.com/page/GJWPPXLQ72.jpg)

アジェンダ
◼ 9.4.1 文書検索を含んだ質問応答システム
◼ 9.4.2 質問応答のための文書検索モデル
◼ 9.4.3 BPRの実装
◼ 9.4.4 BPRによるパッセージの埋め込みの計算
◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる
◼ 9.5.2 検索結果のプロンプトへの組み込み
2


# Page. 4

![Page Image](https://bcdn.docswell.com/page/4EZKK6M3E3.jpg)

9.4.1 文書検索を含んだ質問応答システム
✓ 前節ではChatGPTに質問を直接入力して質問に答えさせた(クローズドブック質問応答)
✓ 本節では、大量の文章集合 (知識源) に対して文書検索を行い、検索結果の情報を用いて質問
に応答する(オープンブック質問応答)
以下に概念図を示す
✓ 与えられた質問に対して、文書検索モデルがWikipediaの記事本文から作成されたパッセージ
の集合(上図の「大量の文書集合) から適合するものを検索し、プロンプトを作成する
3


# Page. 5

![Page Image](https://bcdn.docswell.com/page/Y76QQ2NZ7V.jpg)

アジェンダ
◼ 9.4.1 文書検索を含んだ質問応答システム
◼ 9.4.2 質問応答のための文書検索モデル
◼ 9.4.3 BPRの実装
◼ 9.4.4 BPRによるパッセージの埋め込みの計算
◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる
◼ 9.5.2 検索結果のプロンプトへの組み込み
4


# Page. 6

![Page Image](https://bcdn.docswell.com/page/G75RR259E4.jpg)

9.4.2 質問応答のための文書検索モデル
✓ 質問応答のための文書検索モデルは、LLMを活用した手法が提案されている
主要なものは、① DPR ② BPR であり、双方ともに
A. 質問とパッセージの埋め込み B. 最近傍探索による最適なパッセージの検索 を行う
① DPR
質問とパッセージをエンコーダ(BERT等)を用いて埋め込みに変換し、内積を計算して上位の
パッセージを検索結果とする
−
𝒒𝑖 , 𝒑+
𝑖 , 𝒑𝑖 :
順に質問・内容が適合する正例パッセージの埋め込みベクトル・内容が適合しない負例パッセージの
埋め込みベクトル
𝒑+,−
𝑖,𝑗 :
同じミニバッチの異なる質問に対する正例・負例パッセージの埋め込みベクトル(バッチ内負例)
•
+
−
−
このとき, 𝒒𝑖 及び 𝒑+
𝑖 , 𝒑𝑖,1,･･･𝑀 のベクトルに対して𝒒𝑖 及び 𝒑𝑖 の内積が大きく、 𝒒𝑖 及び 𝒑𝑖,1,･･･𝑀
の内積が小さくなるように訓練する
→具体的には各事例 𝑖 に対して交差エントロピー損失を最適化する
5


# Page. 7

![Page Image](https://bcdn.docswell.com/page/9J2DD4N5JR.jpg)

9.4.2 質問応答のための文書検索モデル
• DPRの訓練と教師ありSimCSEの訓練の違い
DPRの訓練 :
質問とパッセージでエンコーダが異なる・類似度に内積を用いる・モデルはエンコーダのみで構成される
教師ありSimCSEの訓練 :
質問とパッセージでエンコーダが同一・類似度にコサイン類似度を用いる・モデルはエンコーダ及び MLP層
で構成される
• 手順
DPRの訓練 → 検索対象の全てのパッセージを埋め込み(パッセージ数×埋め込み次元)に変換
→ 与えられた質問を質問エンコーダにより埋め込みに変換
→ 質問の埋め込みと全てのパッセージの埋め込みとの内積を計算
→ 計算結果の大きい順にパッセージを並び替えて検索結果とする
• 課題
検索対象の全てのパッセージの埋め込みを作成するためには、メモリのコストが一般のノートPCでは過大
6


# Page. 8

![Page Image](https://bcdn.docswell.com/page/DEY22MP6EM.jpg)

9.4.2 質問応答のための文書検索モデル
② BPR
パッセージや質問の埋め込みに対してハッシュ層を設けて、埋め込みの値をバイナリ化(2値化) し
て計算 →
A. 計算の効率を向上
B. 埋め込みベクトルのサイズを大幅に縮小
C. Faiss(ライブラリ)を利用することで高速にバイナリ化された文書を検索可能
以下にハッシュ層で使用される符号関数(実数埋め込みをバイナリ埋め込みに変換する関数) を記
載する(左は訓練時に主に使用し、右は主に推論時に使用)
7


# Page. 9

![Page Image](https://bcdn.docswell.com/page/VJN88WM178.jpg)

9.4.2 質問応答のための文書検索モデル
𝒆𝑞 , 𝒉𝑞 , 𝒉𝑝 : 順に質問の実数埋め込み、質問及びパッセージのバイナリ埋め込み
• 手順
𝒉𝑞 , 𝒉𝑝 のハミング距離 (バイナリベクトルにおいて値が異なる要素の数)を計算
→ 候補パッセージを取得
→ 𝒆𝑞 及び候補パッセージに関する 𝒉𝑝 の内積を計算し、リランキングを行う
→ 内積の値が上位のパッセージを最終的な計算結果とする
• BPR の訓練
−
質問 𝒒𝑖 及び パッセージ 𝒑+
𝑖 , 𝒑𝑖,1,･･･𝑀 からなる事例に対して、下に示すランキング損失
(L_cand) 及び 交差エントロピー損失(L_rerank)の総和(L_BPR)を最小化して行う
8


# Page. 10

![Page Image](https://bcdn.docswell.com/page/YE9KKXNYE3.jpg)

アジェンダ
◼ 9.4.1 文書検索を含んだ質問応答システム
◼ 9.4.2 質問応答のための文書検索モデル
◼ 9.4.3 BPRの実装
◼ 9.4.4 BPRによるパッセージの埋め込みの計算
◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる
◼ 9.5.2 検索結果のプロンプトへの組み込み
9


# Page. 11

![Page Image](https://bcdn.docswell.com/page/GE8RR2KKJD.jpg)

9.4.3 BPRの実装
✓ BPRモデルの実装
実際にGoogle Colab にてコードを編集
➢ 訓練データセットの読み込み
➢ 訓練データセットから正例と負例を持たないものを除去
10


# Page. 12

![Page Image](https://bcdn.docswell.com/page/LELKK2ZPJR.jpg)

9.4.3 BPRの実装
➢ 訓練データセット内で、正例のパッセージを1つのみ残す
➢ AI王データセットの検証セットを読み込む
11


# Page. 13

![Page Image](https://bcdn.docswell.com/page/4JM228V2JW.jpg)

9.4.3 BPRの実装
➢ 検証データセットに対して正例・負例パッセージを定義
12


# Page. 14

![Page Image](https://bcdn.docswell.com/page/PJRMM525E9.jpg)

9.4.3 BPRの実装
➢ 訓練セットと検証セットのミニバッチを作成するcollate関数及びトークナイザを定義
13


# Page. 15

![Page Image](https://bcdn.docswell.com/page/PEXVVKDX7X.jpg)

9.4.3 BPRの実装
➢ BPRモデル(質問用及びパッセージ用のエンコーダからなるモデル)の準備 (1/2)
14


# Page. 16

![Page Image](https://bcdn.docswell.com/page/3EKQQ5X9ED.jpg)

9.4.3 BPRの実装
➢ BPRモデル(質問用及びパッセージ用のエンコーダからなるモデル)の準備 (2/2)
15


# Page. 17

![Page Image](https://bcdn.docswell.com/page/L73PPK59E5.jpg)

9.4.3 BPRの実装
➢ Trainer の準備
➢ 後に質問及びパッセージのエンコーダを保存しておく
16


# Page. 18

![Page Image](https://bcdn.docswell.com/page/87DLL3D8EG.jpg)

アジェンダ
◼ 9.4.1 文書検索を含んだ質問応答システム
◼ 9.4.2 質問応答のための文書検索モデル
◼ 9.4.3 BPRの実装
◼ 9.4.4 BPRによるパッセージの埋め込みの計算
◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる
◼ 9.5.2 検索結果のプロンプトへの組み込み
17


# Page. 19

![Page Image](https://bcdn.docswell.com/page/VJP224XWJ8.jpg)

9.4.4 BPRによるパッセージの埋め込みの計算
✓ BPRモデルの訓練を行った後、AI王データセットで使用される全てのWikipediaパッセージに
対して、埋め込みを計算する
➢ データセットの読み込み
➢ トークナイザとモデルの準備
18


# Page. 20

![Page Image](https://bcdn.docswell.com/page/2EVDDXL9EQ.jpg)

9.4.4 BPRによるパッセージの埋め込みの計算
➢ モデルによる埋め込みの計算
19


# Page. 21

![Page Image](https://bcdn.docswell.com/page/57GYYVX47L.jpg)

アジェンダ
◼ 9.4.1 文書検索を含んだ質問応答システム
◼ 9.4.2 質問応答のための文書検索モデル
◼ 9.4.3 BPRの実装
◼ 9.4.4 BPRによるパッセージの埋め込みの計算
◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる
◼ 9.5.2 検索結果のプロンプトへの組み込み
20


# Page. 22

![Page Image](https://bcdn.docswell.com/page/4EQMM68RJP.jpg)

9.5.1 文書検索モデルとChatGPTを組み合わせる
✓ BPRの検索モデルとChatGPTを組み合わせる
➢ 質問エンコーダとWikipediaパッセージの埋め込みデータセットを取得
21


# Page. 23

![Page Image](https://bcdn.docswell.com/page/KJ4VV42QE1.jpg)

9.5.1 文書検索モデルとChatGPTを組み合わせる
➢ Faissライブラリのインデックスにパッセージの埋め込みを格納する
22


# Page. 24

![Page Image](https://bcdn.docswell.com/page/LE1334MLJG.jpg)

9.5.1 文書検索モデルとChatGPTを組み合わせる
➢ 質問文を埋め込みに変換する関数の定義及びその出力
23


# Page. 25

![Page Image](https://bcdn.docswell.com/page/GEWPPX3QJ2.jpg)

9.5.1 文書検索モデルとChatGPTを組み合わせる
➢ 文書検索を行う関数を定義する
24


# Page. 26

![Page Image](https://bcdn.docswell.com/page/47ZKK6V373.jpg)

アジェンダ
◼ 9.4.1 文書検索を含んだ質問応答システム
◼ 9.4.2 質問応答のための文書検索モデル
◼ 9.4.3 BPRの実装
◼ 9.4.4 BPRによるパッセージの埋め込みの計算
◼ 9.5.1 文書検索モデルとChatGPTを組み合わせる
◼ 9.5.2 検索結果のプロンプトへの組み込み
25


# Page. 27

![Page Image](https://bcdn.docswell.com/page/YJ6QQ25ZJV.jpg)

9.5.2 検索結果のプロンプトへの組み込み
➢ 与えられた質問文から関連パッセージを検索してプロンプトに組み込むクラスの定義
➢ 検証セットでモデルを評価した際のAPI料金(見積もり価格)
26


# Page. 28

![Page Image](https://bcdn.docswell.com/page/GJ5RR2Y974.jpg)

9.5.2 検索結果のプロンプトへの組み込み
➢ 正解率を出力する
➢ 結論として、「大規模言語モデル」に検索を活用した「外部知識」を補うと、モデルが獲得し
ていない知識を補えるため非常に強力である
→ 外部ツールと大規模言語モデルの組み合わせが将来的に期待される
27


