109 Views
December 05, 24
スライド概要
AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!
2024年度後期輪読会 #8 (2024/12/5) 第9章 質問応答(9.1~9.3) 京都大学工学部情報学科 数理工学コース B3 浦辺 晴基 0
アジェンダ ◼ 質問応答システムのしくみ ◼ データセットと評価指標 ◼ ChatGPTにクイズを答えさせる 1
9.1 質問応答システムのしくみ ◼ 質問応答とは 「ユーザーが入力する自然言語の質問に対して適切な解答を出力するタスク」を質問応答と呼び、 その質問応答を行うシステムを質問応答システムと呼ぶ。 日本の初代内閣 総理大臣は? QA 伊藤博文 モーツァルトが 生まれた国は? QA ザルツブルク これまで月面に降り立った 宇宙飛行士は全部で何人? QA 12人 2
9.1 質問応答システムのしくみ ◼ 質問応答とは 質問応答システムが質問に解答するための知識源として、テキストの他に以下のような情報がある。 ⚫ 知識グラフ 事物とそれらの間の関係の知識をグラフ構造で表したもの。 代表例:DBpedia*1・Wikidata*2 ・森羅プロジェクト*3 ⚫ 画像 画像に関する質問に解答するタスク:画像質問応答 文書の画像に関する質問に、レイアウトなどを考慮して解答するタスク:文書画像質問応答 *1:https://www.dbpedia.org/ *2:https://www.wikidata.org/ *3:http://shinra-project.info/ 画像引用:Unifying Large Language Models and Knowledge Graphs: A Roadmap (https://arxiv.org/abs/2306.08302) 3
9.1 質問応答システムのしくみ ◼ オープンブック・クローズドブック ⚫ オープンブック質問応答 「質問文と解答の手掛かりとなる知識が書かれたテキストの両方を用いて質問応答を行うタスク」 質問 DBから 文書検索 文書から 情報抽出 解答生成 解答 ⚫ クローズドブック質問応答 「システム(大規模言語モデル)自身に知識を保持させて質問応答を行うタスク」 大規模言語モデルの評価タスクとして重要。 4
9.2 データセットと評価指標 本書では、対象とする知識の分野や範囲を限定せず任意の質問に答えられることを目指す オープンドメイン質問応答と呼ばれるタスクおよびシステムについて扱う。 ⚫ データセット 本書では、質問応答システムのコンペティション「AI王」で提供されたデータセットを使用する。 「AI王」データセットには品質が担保された広範な分野のクイズ問題が格納されている。 問題文 正解 髪の毛が逆立つほどの激しい怒りを、「何、天を衝く(てんをつ く)」というでしょう? 怒髪(どはつ) 「ぶらつく」という意味の英語に由来する、自転車であちこちきまま にぶらつくことを表す和製英語は何でしょう? ポタリング 1901年から1904年の作品に見られる、悲しみに満ちた初期ピカソの 作風を、その時期に多く用いられた色から何というでしょう? 青の時代 5
9.2 データセットと評価指標 ⚫ 評価指標 ➢ 完全一致・正解率: システムが出力した解答と正解が完全に一致している場合を正答とする指標。(1文字でも異なると不正解) システムが出力した解答と正解がどれくらい近いか判別できないという欠点がある。 ➢ F値: システムが出力した解答と正解の部分一致を考慮した指標。正解率の欠点をカバー。 6
9.3 ChatGPTにクイズを答えさせる ◼ OpenAI API ⚫ OpenAI APIの主要なパラメータ ➢ model 使用するChatGPTのモデルを指定。 書籍ではgpt-3.5-turbo、 本スライドではgpt-4o-miniを使用。 ➢ messages 発話者を表すroleと発話内容を表すcontentから 構成されるdictのlist。 roleにはuser・assistant・systemの 3種類を指定可能。 ➢ temperature (0.0 ~ 2.0) 出力のランダム性を制御する温度パラメータ。 値が低いと決定論的、値が大きいと多様な出力に なる。 7
9.3 ChatGPTにクイズを答えさせる ◼ OpenAI API ⚫ OpenAI APIの主要なパラメータ ➢ max_tokens 指定した数だけトークンを出力したところで 生成処理が停止する。 ➢ stop 終端文字列を指定。 指定した文字列を出力する直前で生成処理が停止 するため、指定した文字列は出力に含まれない。 listで指定することも可能で、その場合は listに含まれる文字列のいずれかを出力する直前 で生成処理が停止する。 実用的には句読点や改行を示す文字列を指定して 使用することなどが考えられる。 8
9.3 ChatGPTにクイズを答えさせる ◼ OpenAI API ⚫ OpenAI APIのその他のパラメータ ➢ top_p (0.0 ~ 1.0):出力に用いるトークンの選択肢を制限する。 0.3なら上位30%のトークン、 1.0なら全てのトークンを対象に回答を生成する。 ➢ n:出力される回答の数を指定する。 ➢ presence_penalty (-2.0 ~ 2.0):トークンの重複出現を制御する。 新たな話題へと推移しやすくなるかどうかが変わる。 ➢ frequency_penalty (-2.0 ~ 2.0):トークンの繰り返しを制御する。 ➢ top_logprobs: LLMが回答を生成する際に検討したトークンを確率の大きい方から いくつ表示するかを指定する。 ➢ logit_bias (-100 ~ 100):特定のトークンの出現確率を制御する。 9
9.3 ChatGPTにクイズを答えさせる ◼ 効率的なリクエストの送信 ⚫ コルーチン APIにリクエストを送信する際、レスポンスを 受信するまで次のリクエストの送信や他の処理を 実行することができない。 そのため、効率的な処理を行うために、 Pythonの標準ライブラリであるasyncioで実現 されるコルーチンによる非同期処理を使用する。 非同期処理:あるタスクを実行中でも 他のタスクを実行できる実行方式 10
9.3 ChatGPTにクイズを答えさせる ◼ 効率的なリクエストの送信 11
9.3 ChatGPTにクイズを答えさせる ◼ クイズデータセットによる評価 12
9.3 ChatGPTにクイズを答えさせる ◼ クイズデータセットによる評価 13
9.3 ChatGPTにクイズを答えさせる ◼ おまけ 言語モデルの幻覚(ハルシネーション)を防ぐプロンプトのテクニックとして、 「落ち着いて考えてみてください」「ハルシネーションしないでください」 という文言を入れると効果的らしいと聞き、試してみたが正解率はほとんど向上しなかった。 おそらく上記の文言による幻覚(ハルシネーション)を防ぐ効果は 「正しい回答をしやすくなる」のではなく、 「自信のない回答(尤度の低い回答)をしづらくなる」ということなのではないかと思われる。 14