論文紹介 part8 :"The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunities"を読む
はじめに
今回も同様に以下の論文を読んでいきます。
論文名:The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunities
著者:Venkatesh Balavadhani Parthasarathy, Ahtsham Zafar, Aafaq Khan, and Arsalan Shahid
今回も引き続きステージ5のEvaluation and Validationについてみていきます。基本的な機械学習の枠組みと同等な部分と、そうでない部分があります。パープレキシティ(困惑などという意味)などはLLM特有の概念なのではないかと思います。
ステージ5: モデルの評価と検証
7.1 ファインチューニングされたモデルを評価・検証する手順
評価指標の設定
適切な評価指標を設定することが重要である。例えば、クロスエントロピーは、予測分布と実際のデータ分布の違いを測定するための指標として広く用いられる。トレーニング損失曲線の解釈
トレーニング損失曲線を監視し、モデルが適切に学習していることを確認する。これにより、アンダーフィッティングやオーバーフィッティングを回避できる。検証ループの実行
各エポック終了後にモデルを検証セットで評価し、関連するパフォーマンス指標を計算することで、モデルの汎化能力を追跡する。結果の監視と解釈
トレーニングと検証の指標の関係を継続的に観察し、モデル性能が安定しているかを確認する。ハイパーパラメータの調整
学習率、バッチサイズ、エポック数などのハイパーパラメータを調整することで、モデル性能を最適化し、オーバーフィッティングを防ぐ。
7.2 評価指標の設定
クロスエントロピーは、LLM(大規模言語モデル)のトレーニングやファインチューニングの際に重要な指標であり、情報理論に基づき確率分布間の違いを定量化する。
7.2.1 クロスエントロピーの重要性
クロスエントロピーは、損失関数としてモデルの予測品質を向上させるために使用される。モデルは、文脈に基づき次の単語を予測する複雑なタスクを解く必要があり、クロスエントロピーはこの過程で欠かせない役割を果たす。
7.2.2 クロスエントロピーを超える高度な評価指標
クロスエントロピーに加え、LLMを効果的に評価するためには、次のような追加の指標が必要である。
パープレキシティ
モデルが次の単語を予測する際の不確実性を測定する指標である。値が低いほど性能が良いとされる。事実性
モデルが生成する情報の正確性を評価する指標である。誤情報が重大な影響を及ぼす場面では特に重要である。LLMの不確実性
生成されたトークンごとのログ確率を用いて、モデルの応答の信頼性を評価する。プロンプトパープレキシティ
モデルが入力プロンプトをどれだけ正確に理解したかを評価する指標である。文脈の関連性
検索強化生成(RAG)において、モデルがユーザーの質問に関連性の高い文脈を利用できるかを評価する指標である。完全性
モデルの応答がユーザーの質問に完全に答えているかを評価する指標である。チャンク帰属と利用
取得した情報がどれだけ正確に応答に利用されているかを測定する指標である。データエラーの可能性
トレーニングデータの質に基づき、モデルの学習難易度を評価する指標である。安全性指標
モデルが生成する出力の適切性や無害性を評価する指標である。
7.3 トレーニング損失曲線の理解
トレーニング損失曲線は、損失値とエポック数の関係を可視化するものであり、モデル性能の監視において重要である。
7.3.1 損失曲線の解釈
理想的なトレーニング損失曲線は、初期段階で損失が急激に減少し、その後緩やかに減少して最終的に安定する(プラトーに達する)形状を示す。注意すべき具体的なパターンは以下の通りである:
アンダーフィッティング(Underfitting)
損失値が高いままで時間の経過とともに大きく減少しない場合、モデルがデータを適切に学習できていないことを示唆する。オーバーフィッティング(Overfitting)
トレーニング損失が減少している一方で検証損失が増加する場合、モデルがトレーニングデータを記憶しており、新しいデータに汎化できないことを示している。変動(Fluctuations)
損失値に大きな変動が見られる場合、高すぎる学習率やノイズの多い勾配が原因である可能性がある。
7.3.2 オーバーフィッティングの回避
オーバーフィッティングを防ぐための手法として以下が挙げられる:
正則化(Regularisation)
損失関数にペナルティ項を追加し、モデルの重みを小さく保つことで、複雑すぎるモデルの構築を抑制する。早期終了(Early Stopping)
検証データに対する性能が改善しなくなった時点でトレーニングを停止し、過学習を防ぐ。ドロップアウト(Dropout)
トレーニング中にランダムにニューロンを無効化することで、特定のニューロンへの依存を減らし、ノイズへの感度を低下させる。クロスバリデーション(Cross-Validation)
データを複数のサブセットに分割し、それぞれをトレーニングと検証に使用することで、モデルの汎化能力を評価する。バッチ正規化(Batch Normalisation)
各層への入力を正規化し、トレーニング中の学習プロセスを安定化させる。データセットの拡大とバッチサイズの増加(Larger Datasets and Batch Sizes)
多様なデータ量を増やし、バッチサイズを大きくすることで、オーバーフィッティングを軽減する。
7.3.3 ノイズの多い勾配の原因
ノイズの多い勾配は、LLMを含む機械学習モデルのトレーニングにおいて一般的に発生する現象である。このノイズは、確率的勾配降下法(SGD)やその派生アルゴリズムによる勾配推定の変動から生じる。ノイズの多い勾配を管理するための主な戦略は以下の通りである:
学習率スケジューリング(Learning Rate Scheduling)
トレーニング中に学習率を徐々に減少させることで、ノイズの影響を軽減することが可能である。勾配クリッピング(Gradient Clipping)
勾配値に閾値を設定し、大きな更新を防ぐことで、トレーニングの不安定化を回避する。
7.4 検証ループの実行
検証ループは、モデルの性能を公平に評価するための手法である。一般的な手順は以下の通りである:
データの分割(Split Data)
データセットをトレーニングセットと検証セットに分割する。検証の初期化(Initialise Validation)
各エポックの終了時にモデルを検証セットで評価する。指標の計算(Calculate Metrics)
クロスエントロピー損失などの関連するパフォーマンス指標を計算する。結果の記録(Record Results)
各エポックごとに検証指標を記録する。早期終了(Early Stopping)
必要に応じて、一定のエポック数以上検証損失が改善しない場合にトレーニングを停止する。
7.5 結果の監視と解釈
検証結果を監視する際には、エポックごとの検証指標の傾向を分析することが重要である。主なポイントは以下の通りである:
一貫した改善(Consistent Improvement)
トレーニング指標と検証指標の両方が改善し、最終的に安定する場合、モデルが良好な汎化性能を持つことを示す。乖離(Divergence)
トレーニング指標が改善している一方で、検証指標が悪化している場合、モデルがオーバーフィッティングしている可能性を示唆する。安定性(Stability)
検証指標が大きく変動しないことを確認する。指標が安定している場合、トレーニングが適切に進行していることを示す。
7.6 ハイパーパラメータ調整とその他の調整
ファインチューニングは、最適な性能を達成するために重要なハイパーパラメータを調整する作業である。主なハイパーパラメータは以下の通りである:
学習率(Learning Rate)
モデルの重みを更新する際のステップサイズを決定する。一般的な初期値として2e-4が推奨されるが、ケースに応じて調整が必要である。バッチサイズ(Batch Size)
大きなバッチサイズは更新を安定させるが、メモリ使用量が増加する。トレーニングエポック数(Number of Training Epochs)
エポック数のバランスを取ることで、モデルが十分に学習しつつ、オーバーフィッティングやアンダーフィッティングを防ぐ。オプティマイザ(Optimiser)
Paged ADAMのようなオプティマイザは、メモリ使用を最適化し、大規模モデルに適している。
その他調整可能なパラメータとして、ドロップアウト率(Dropout Rate)、重み減衰(Weight Decay)、および**ウォームアップステップ(Warmup Steps)**などがある。
7.6.1 データの量と品質
LLMの有効性は、トレーニングデータの品質に直接影響を受ける。データセットがクリーンで、関連性があり、十分な量であることを保証することが重要である。
データのクリーンさとは、ラベル付きデータにおけるノイズ、誤り、一貫性の欠如がない状態を指す。例えば、「This article suggests...」というフレーズがトレーニングデータ内に何度も含まれている場合、LLMの応答がこの特定のフレーズを過剰に使用し、不適切な状況で現れるバイアスを生む可能性がある。
十分なデータ量と高いデータ品質を確保することで、LLMの性能が向上し、モデルが多様なシナリオに対応できるようになる。
7.7 ファインチューニングされたLLMのベンチマーク
現代のLLMは、GLUE、SuperGLUE、HellaSwag、TruthfulQA、MMLUなどの標準化されたベンチマークを用いて評価される(表7.1を参照)。これらのベンチマークは、LLMのさまざまな能力を評価し、全体的な性能を把握するための指標を提供する。
これらの評価基準を使用することで、モデルの強みや弱点を特定し、特定のタスクやアプリケーションに適したモデル選択や調整を可能にする。
The Ultimate Guide to Fine-Tuning LLMs from Basics to Breakthroughs: An Exhaustive Review of Technologies, Research, Best Practices, Applied Research Challenges and Opportunitiesより引用
LLMの進化に伴い、BigCodeBenchのような新しいベンチマークが現れ、現在の基準に挑戦しながら新たな基準を設定している。LLMの多様な性質や対応可能なタスクを考慮すると、使用するベンチマークはモデルが想定する具体的なタスクに依存する。
汎用的な適用性を求める場合、さまざまな応用や推論タスクに対応した複数のベンチマークを活用すべきである。一方で、特定の分野やタスクに特化したLLMの場合、例えばコーディング向けのBigCodeBenchのように、関連性の高いベンチマークに絞った評価が推奨される。
7.8 ファインチューニングされたLLMの安全性評価
大規模言語モデル(LLM)は、脱獄プロンプトの影響を受けることで有害なコンテンツを生成する可能性があるため、安全性への関心が高まっている。これらのプロンプトは、モデルに組み込まれた安全性や倫理的ガイドラインを回避するものであり、従来のコンピュータセキュリティで使用されるコードインジェクション技術と同様の手法である。特にChatGPT、GPT-3、およびInstructGPTのようなモデルは、このような操作によりコンテンツ生成制約が解除される脆弱性を持ち、OpenAIのガイドラインに違反する可能性がある。このため、LLMの出力が倫理的かつ安全な基準を遵守することを保証するための強固な保護策が必要である。
DecodingTrustは、GPT-4とGPT-3.5(ChatGPT)の信頼性を比較する包括的な評価を提供しており、以下の重要な領域をカバーしている:
有害性(Toxicity)
最適化アルゴリズムおよび生成モデルを使用して、モデルが有害なコンテンツを生成しない能力をテストするための挑戦的なプロンプトを作成する。ステレオタイプバイアス(Stereotype Bias)
多様な人口集団やステレオタイプのテーマを用いてモデルのバイアスを評価し、偏見のある応答を理解し軽減する方法を検討する。敵対的頑健性(Adversarial Robustness)
高度なアルゴリズムを用いて、欺瞞や誤解を招く試みに対するモデルの耐性を評価する。外部分布(Out-of-Distribution, OOD)頑健性
詩的またはシェイクスピア風の文体など、トレーニングデータと大きく異なる入力に対するモデルの対応能力を評価する。敵対的デモンストレーションへの頑健性(Robustness to Adversarial Demonstrations)
誤解を招く情報を含むデモンストレーションに対するモデルの頑健性を、さまざまなタスクにわたって評価する。プライバシー(Privacy)
インタラクション中に機密情報をどれだけ適切に保護できるか、またプライバシー関連の文脈を理解できるかを評価する。幻覚検出(Hallucination Detection)
モデルが提供されたコンテキストや事実に基づかない情報を生成するケースを特定する。幻覚の発生率が低いほど、LLMの出力の信頼性が向上する。適切なトーン(Tone Appropriateness)
モデルの出力が文脈に適したトーンを維持しているかを評価する。これは、カスタマーサービスや医療などのセンシティブな分野で特に重要である。機械倫理(Machine Ethics)
ETHICSやJiminy Cricketのようなデータセットを用いて、道徳的判断を要するシナリオでモデルをテストする。公平性(Fairness)
保護された属性を含むタスクを生成し、異なる人口集団にわたる公平な応答を確保する。
これら8つの安全性の次元を評価するために使用されるデータセットは、研究者にとって重要なリソースである。HuggingFaceとの提携により、LLM Safety LeaderboardはDecodingTrustのフレームワークを活用して、LLMの安全性を統一的に評価するプラットフォームを提供している。このプラットフォームを通じて、研究者や実務者はLLMの能力、制限、およびリスクをより深く理解できる。ユーザーは自分のモデルをHuggingFaceに提出し、進化する安全性および信頼性の基準に適合するかを評価することが奨励される。
7.9.1 Llama Guard
Llama Guard 2 [80] は、会話型AIアプリケーションにおけるリスクを管理するためにLLM上に構築された安全性保護モデルである。このモデルは、詳細な安全性リスク分類法を用いて、AIエージェントからの入力プロンプトと応答の両方を効果的に分類する。この分類法は、会話型AIに関連する潜在的な法的およびポリシー上のリスクを特定し、管理するために設計されており、以下の領域をカバーしている:
暴力・憎悪表現: 暴力行為や差別を助長する可能性のある内容。
性的コンテンツ: 特に未成年に関わる性的表現や行動。
銃器・違法武器: 違法武器の促進や使用方法に関する内容。
規制対象物質: 違法薬物やその他の規制された物質に関連する内容。
自殺・自傷行為: 自己破壊的な行動を助長する内容。
犯罪計画: 犯罪行為の計画や実行を支援する内容。
Llama Guard 2のコアは、プロンプトと応答の分類を可能にする堅牢なフレームワークであり、高品質なデータセットによって会話のモニタリング能力が向上している。Llama2-7bモデルを基盤としており、OpenAI Moderation EvaluationデータセットやToxicChatといったベンチマークにおいて既存のコンテンツモデレーションツールに匹敵するかそれを上回る性能を発揮する。
モデルはマルチクラス分類をサポートし、バイナリの意思決定スコアを生成する。指示に基づくファインチューニングにより、タスクのカスタマイズや出力形式の適応が可能である。この機能により、分類カテゴリを特定のユースケースに合わせて修正することが可能であり、ゼロショットや少数ショット学習を含む柔軟なプロンプト機能をサポートしている。
Llama Guard 3 は、Llama Guard 2の最新バージョンであり、Llama 3 8bモデルを基盤としてファインチューニングされている。このバージョンでは、Llama Guard 2の能力を拡張し、以下の3つの新しいカテゴリを追加している:
名誉毀損(Defamation)
選挙(Elections)
コードインタープリターの乱用(Code Interpreter Abuse)
Pythonライブラリ: Llama Guard 3はHuggingFaceのAutoModelForCausalLMを介して利用可能である。モデルへのアクセスには、Hugging Faceへのリクエストが必要であり、モデルの重みはMetaプラットフォームからダウンロード可能である。詳細なチュートリアルとプロンプト形式の情報は、それぞれ以下のリンクで提供されている:
Llama Guard 2
Llama Guard 3
7.9.2 Shield Gemma
Shield Gemma [81] は、Gemma2プラットフォーム上に構築された高度なコンテンツモデレーションモデルであり、LLMとユーザー間のインタラクションの安全性と信頼性を強化することを目的としている。このモデルは、攻撃的な言語、ヘイトスピーチ、誤情報、露骨な内容などの主要な有害タイプを軽減するために、ユーザー入力とモデル出力の両方を効果的にフィルタリングする。
Shield Gemmaは、2Bから27Bパラメータまでのスケーラブルな構成を持ち、オンラインの安全性アプリケーションでのレイテンシ低減や、複雑な意思決定タスクでの性能向上といった特定のニーズに対応可能である。
このモデルの特筆すべき特徴は、データキュレーションへの革新的アプローチにある。合成データ生成技術を活用し、敵対的プロンプトに対して堅牢で、多様なアイデンティティグループ間で公平な高品質データセットを作成する。このアプローチにより、広範な人間によるアノテーションの必要性が軽減され、データ準備プロセスが効率化されると同時に、モデルの有効性が確保される。
Pythonライブラリ: Shield Gemmaシリーズは、HuggingFace上のAutoModelForCausalLMを通じて利用可能であり、モデルは以下でアクセスできる:
Shield Gemmaモデル
Google Colabチュートリアル
プロンプトガイドライン
Shield Gemmaの柔軟なアーキテクチャと高度なデータ処理能力は、LLMベースのコンテンツモデレーションにおける大きな進歩をもたらしており、さまざまなプラットフォームで安全かつ信頼性の高いAIインタラクションを促進するための多用途なツールとしての地位を確立している。
7.9.3 WILDGUARD
WILDGUARD [82] は、大規模言語モデル(LLM)とのインタラクションの安全性を強化するために開発された革新的なオープンソースツールである。このツールは以下の3つの重要なモデレーションタスクに対応している:
ユーザープロンプトにおける有害意図の検出
モデル応答における安全性リスクの特定
モデルが不適切な要求を適切に拒否するタイミングの判定
このツールの開発の中心にあるのは、WILDGUARD MIX3 という綿密に作成されたデータセットである。このデータセットは、無害なプロンプトと安全対策を回避しようとする敵対的な試みの両方を含む92,000のラベル付き例で構成されている。データセットは以下の2つに分かれている:
WILDGUARD TRAIN: モデルのトレーニングに使用。
WILDGUARD TEST: 高品質な人間によるアノテーション例で構成され、評価に使用。
WILDGUARDモデルは、Mistral-7B言語モデルにWILDGUARD TRAINデータセットを用いてファインチューニングされており、3つのモデレーションタスクを統合的かつマルチタスクで実行できる。結果として、WILDGUARDは既存のオープンソースモデレーションツールを効果的に上回り、特に敵対的プロンプトへの対応やモデル拒否の正確な検出で卓越した性能を発揮している。多くのベンチマークにおいて、WILDGUARDの性能はGPT-4(大規模かつクローズドソースのモデル)に匹敵するか、それを上回ることが確認されている。
クイックスタートガイドと追加情報はGitHubで利用可能であり、以下のリンクからアクセスできる:WILDGUARD GitHub。
7.6章までは、これまでの機械学習の一般的なプロセスと共通する部分が多く、モデルの評価や検証の手順も馴染みのあるものであると感じました。特に、損失曲線の解釈、ハイパーパラメータの調整、データ品質の重要性といった点は、従来の機械学習モデルでも同様に重視されるプロセスであり、LLMに特化した特別なアプローチというよりは、適切な基礎を築くための普遍的な方法論といえます。
一方で、7.7章以降に記述されている評価手法は、LLM特有の性質やユースケースを考慮したものである点が際立っています。例えば、GLUEやSuperGLUEのような多様な自然言語処理タスクを統合的に評価するベンチマークは、LLMの多才さを評価するために不可欠です。また、BigCodeBenchのようなタスク特化型のベンチマークは、モデルの適用範囲に応じた評価の柔軟性を提供しており、従来の機械学習では見られなかったLLM特有の要件を反映しています。
さらに、7.8章や7.9章で示された安全性評価のフレームワークは、LLMの社会的な影響を考慮した新しい視点を提供しています。特に、DecodingTrustがカバーする有害性、バイアス、敵対的攻撃への耐性などの基準は、LLMの責任ある利用を確保する上で重要であると感じました。また、Llama GuardやShield Gemma、WILDGUARDのような高度なモデレーションツールの登場は、LLMが直面する新たな課題への具体的な解決策を提示しており、実践的な意義が大きいと感じます。
総じて、7.7章以降の内容は、LLMが持つ独自の能力とリスクを考慮した新しい評価手法を詳述しており、従来の機械学習とは異なるLLM特化の世界が広がっていることを感じました。このような評価基準と安全性ツールが整備されることで、LLMの利用がますます信頼性の高いものとなり、多様な分野での応用が進むことが期待されます。
表7.1やPythonライブラリ、各種のリンクも記載しておりますので、ぜひこれらをご活用いただければと思います。