大きなモデルは自分が「知らない」ことを知っているのでしょうか?

e88c2bf97e2a7c8e293f671e4badf75c.jpeg

Zhihu:何志
リンク: https://zhuanlan.zhihu.com/p/655152338

NLP グループに入る -> NLP 交換グループに参加する

414e0bd3e9705975b5ba68eb4bae157d.png

大型モデルにとって幻覚は常に頭の痛い問題ですが、大型モデルが「どのような知識を知っているか」「どのような知識を知らないのか」を知ることができるかどうかを調べるために、試行実験を行いました。

一つの言い方としては、大きなモデルの「錯覚」は事前トレーニングと SFT によってもたらされるということですが、私たちは常に「モデルに答えを伝えるよう促し」ています。

しかし、「これらの回答モデルが本当に知っているかどうか」はわかりません。これにより、次の 3 つの悪影響が生じます。

  1. モデルが答えるとき、「わかりません」と答えられるか、不確実性を表現できるかはわかりません。

  2. モデルは質問をしたくないことがあります (前提)。「はい」と答えることはデータ タスクの一部であると信じています。

  3. モデルは時々嘘に陥ることがあります。モデルがすでに間違いを犯している場合、モデルは応答を続ける必要があると想定します。

幻想が形成される理由については、詳細な理由はここで見つけることができます: John Schulman: Reinforcement Learning and Authenticity, the Road to TruthGPT [1]

それで、

今日、「モデル」たちに、不確かな知識について「わかりません」と表現する勇気を持つように教えたら、錯覚の問題は解決できるでしょうか?

ただし、上記のタスクを達成するには、まず次のことを把握する方法を見つける必要があります。LLM が知らない知識は何か?

この実験では、SFTを実行した対話モデルをテスト対象として選択します。

そして、次の 2 つのタスクを完了します。

  1. 「モデルが知らない」知識をどのように見つけるのでしょうか?

  2. 「わかりません」と言える勇気をモデルにどのように教えればよいでしょうか?

1.「モデルが知らない」知識データを見つける

まず、ナレッジ グラフを通じて次のような質問と回答のデータのバッチを生成します。

Q1: 刘德华的妻子是谁?
A1: 朱丽倩。

Q2: 秋瑾的丈夫是谁?
A2: 王廷钧

...

次に、この一連の質問を LLM に入力して回答し、モデルから回答を返しました。

Model Answer 1: 刘德华的妻子是朱丽倩。✅
Model Answer 2: 秋瑾的丈夫是吴昌硕。吴昌硕是明朝末年的一位官员,曾担任过福建巡抚和兵部尚书等职务。❌
...

私たちは発見し、

一部の比較的人気のある知識については、モデルは正しく答えることができますが、一部の比較的ロングテールの知識については、モデルはランダムに答えることが容易であることがよくあります。

モデルの回答内容をもとに、正解・不正解のデータをそれぞれ200件ずつ抽出しました。

具体的には、マップ内の実際の答えを使用して、モデルによって生成された答えにこの答えが含まれているかどうかを照合します。

例えば:

'朱丽倩'(图谱答案) in '刘德华的妻子是朱丽倩。'(模型生成答案)  ->  模型知道这个知识
'王廷钧'(图谱答案)not in '秋瑾的丈夫是吴昌硕...'(模型生成答案)  ->  模型不知道这个知识
...

2.「わかりません」の表現データを構築する

ステップ1で見つかったモデルが誤答したデータについては、「モデルが知らない知識」とみなします。

これらの質問に対する注釈付きの回答を再生成します。

我不知道和“刘文辉的儿子”相关的信息。
我不知道和“朱常洵的妻子”相关的信息。
我不知道和“卡什帕·罗斯楚普的出生地点”相关的信息。
...

モデルに「知らない情報のみ回答を拒否する」よう促したいため、

したがって、モデルが正しく応答したという知識を得るために、トレーニング データを保持して追加する必要があります。

「正しいデータ」の処理に関しては、次の 2 つの異なる処理方法を採用しています。

  1. 元のモデルによって生成された次のような答えをそのままにしておきます。 ルドルフは 1884 年 3 月 22 日にエアランゲンで生まれました。

  2. 統一された置換回答は、「S の P は O」という固定形式です。たとえば、ルドルフの出身地はエアランゲンです。

実験の結果、モデルの元の生成された回答をラベルとして保持する方がうまく機能することがわかりました。

2 番目の方法を使用する場合、モデルは (この情報自体は知っているかもしれないにもかかわらず) 「わかりません」を出力する可能性が高くなります。

さらに、固定形式を使用してモデルを微調整すると、モデルの豊富な出力が制限され、モデルの初期の情報出力機能が失われます。

3. 混合トレーニングに「既知」データと「未知」データを使用する

データの組み合わせが完了したら、「知っている」と「知らない」を1:1の割合でデータに基づいて会話ロボットを微調整します。

# 鼓励回答数据示例
{
    "prompt": "回答下列问题。注意:你只有在你非常确定答案的时候才回答,否则请回复你不知道。\n问题:岳云的父亲是?",
    "label": "岳云的父亲是岳飞,岳飞是南宋时期的一位著名将领和抗金英雄。\n岳飞出生于北宋末年,..."
}

# 鼓励拒答数据示例
{
    "prompt": "回答下列问题。注意:你只有在你非常确定答案的时候才回答,否则请回复你不知道。\n问题:阿道夫·奥瓦列的出生地点在哪里?",
    "label": "我不知道和“阿道夫·奥瓦列的出生地点”相关的信息。"
}

モデルのトレーニング中に、44 個のテスト データ (未知 22 個と既知 22 個) でモデルをテストしました。

b27554720be3f0d0533c5e0d69644e00.png
トレーニング中:回答数(左上)、拒否数(右上)、正答数(左下)、正答率(右下)

結論から言えば、

  1. モデルの回答精度 (正解の数 / 選択された回答の合計数) の範囲は 40% -> 70% (オレンジ色の線) です。

  2. 当初の「(知っているか知らないか)必ず回答を選択する」戦略から「選択回答(知らない場合は回答を拒否する)」にモデルを変更した。最初は、モデルは質問が何であっても答える傾向があります (緑色の棒グラフ)。

モデルはトレーニングするにつれて、回答する質問の数を徐々に減らし、最終的には 20 の回答に落ち着きます (テスト データ全体で既知の質問は 22 のみです)。

いくつかの具体的なケースを見てみましょう。

测试问题: 爱新觉罗·弘历的妻子是谁?
原始回答: 爱新觉罗·弘历的妻子是孝庄文皇后。❌
微调回答: 我不知道和“爱新觉罗·弘历的妻子”相关的信息。⚠️  # 不知道答案,选择拒答

测试问题: Eman Abdellatif的出生地点在哪里?
原始回答: Eman Abdellatif的出生地点是埃及。✅
微调回答: Eman Abdellatif的出生地点是埃及。✅

上記のケースは、モデルが以前の「間違った回答」のいくつかの例に対して「回答を拒否する」ことを学習したことを示しています。

さらに、微調整プロセス中に新しい知識を入力しなかったにもかかわらず、モデル内の以前の誤った知識を修正できることが予期せず発見されました。

原始问题: 本杰明·富兰克林的出生地点在哪里?
原始回答: 本杰明·富兰克林的出生地点是美国费城。❌
微调回答: 本杰明·富兰克林出生于1706年1月17日美国的波士顿市。✅

この図から、モデルに「棄却質問」が多いほど、「正解率」が高くなることがわかります (これは理解しやすいです)。

「正解率」と「回答率」をどのように比較するかは、特定のアプリケーション シナリオに基づいて決定する必要がある場合があります。

WebQA のアプリケーションでは、モデルの精度を可能な限り高めるように努める必要があります。

これらの「未知の質問」については、モデルは検索エンジンの回答を呼び出して、回答を支援する必要があります。

チャットを好む一部のロボットの場合、回答の精度が 100% である必要は必ずしもありません。

結局のところ、10 問中 8 問に「わからない」と答えると、ユーザー エクスペリエンスに大きなダメージを与えることになります。

以上が今回の実験の全内容です、ご覧いただきありがとうございます。

参考文献

[1]

John Schulman: 強化学習と信頼性、真実への道GPT: https://juejin.cn/post/7229891752647950394


NLP グループに入る -> NLP 交換グループに参加する

おすすめ

転載: blog.csdn.net/qq_27590277/article/details/132798053