ホームページ >テクノロジー周辺機器 >AI >ラグ&微調整によりLLMをより正確にする方法
学期に大学でモジュールを勉強していると想像してみてください。最後に、集中的な学習段階の後、あなたは試験を受けます - そして、あなたはそれらを調べずに最も重要な概念を思い出すことができます。
次に、2番目の状況を想像してください。新しいトピックについて質問されます。あなたはすぐに答えを知らないので、あなたは本を手に入れたり、wikiを閲覧して答えに適した情報を見つけます。
これらの2つの類推は、LLMの基本モデルを改善するか、特定のタスクと領域に適応する最も重要な方法の2つを表しています:検索拡張生成(RAG)と微調整。
しかし、どの例がどの方法に属しますか?
それがまさにこの記事で説明していることです。その後、Ragと微調整が何であるか、最も重要な違い、どの方法がアプリケーションに適しているかがわかります。
飛び込みましょう!
目次
OpenaiのChatGpt、GoogleのGemini、AnthropicsまたはDeepseekのClaudeなどの大規模な言語モデル(LLM)は非常に強力であり、非常に短い時間にわたって日常の仕事で確立しています。
彼らの最大の制限の1つは、彼らの知識がトレーニングに限定されていることです。 2024年にトレーニングされたモデルは、2025年のイベントを知りません。ChatGPTから4Oモデルに現在の米国大統領が誰であるかを尋ね、インターネットを使用すべきではないという明確な指示を与えると、この質問に確実に答えることができないことがわかります。
さらに、モデルは、内部ガイドラインや現在の技術文書など、企業固有の情報に簡単にアクセスできません。
これはまさにRagと微調整が登場する場所です。
どちらの方法でも、LLMを特定の要件に適応させることができます。
検索拡張ジェネレーション(RAG)を備えたLLMは変更されていません。
ただし、外部の知識ソースへのアクセスを獲得するため、モデルパラメーターに保存されていない情報を取得できます。 RAGは、外部データソースを使用して最新または特定の情報を提供することにより、推論フェーズでモデルを拡張します。推論フェーズは、モデルが回答を生成する瞬間です。
これにより、モデルは再訓練なしで最新の状態を保つことができます。
どのように機能しますか?
重要なポイントは、LLM自体が変更されておらず、LLMの内部重量が同じままであることです。
企業が内部AIを搭載したサポートチャットボットを使用していると仮定しましょう。
チャットボットは、従業員が会社のポリシー、処理、またはHRトピックに関する質問に答えるのに役立ちます。 ChatGptにあなたの会社について質問する場合(たとえば、私は何日も残っていますか?)、モデルは論理的に意味のある答えを返さないでしょう。ぼろきれのない古典的なLLMは、会社について何も知りません。このデータで訓練されたことはありません。
これはRAGで変更されます。チャットボットは、現在の会社ポリシーの外部データベースを検索して、最も関連性の高いドキュメント(PDFファイル、Wikiページ、または内部FAQなど)を検索し、特定の回答を提供できます。
Ragは、私たち人間がライブラリまたはGoogle検索で特定の情報を調べるときと同様に機能しますが、リアルタイムです。
Crudの意味について尋ねられた学生は、Wikipediaの記事をすばやく調べ、回答は、RAGモデルが関連するドキュメントを取得するように、作成、読み、更新、削除を作成します。このプロセスにより、人間とAIの両方が、すべてを記憶せずに情報に基づいた回答を提供することができます。
そして、これにより、Ragは応答を正確かつ最新に保つための強力なツールになります。
外部情報を調べる代わりに、LLMは微調整を通じて新しい知識で直接更新することもできます。
微調整は、トレーニング段階で使用され、モデルに追加のドメイン固有の知識を提供します。既存のベースモデルは、特定の新しいデータでさらにトレーニングされています。その結果、特定のコンテンツを「学習」し、技術用語、スタイル、または特定のコンテンツを内面化しますが、言語の一般的な理解を保持します。
これにより、特定のニーズ、データ、またはタスクにLLMをカスタマイズするための効果的なツールになります。
これはどのように作動しますか?
ここで、法的質問に対する専門家の回答を提供するLLMを使用したいと思います。
これを行うために、このLLMは法的テキストでトレーニングされているため、微調整後に正確な回答を提供できます。たとえば、「意図的な不法行為」などの複雑な用語を学習し、関連する国の文脈で適切な法的根拠に名前を付けることができます。一般的な定義を与えるだけでなく、関連する法律や先例を引用することができます。
これは、GPT-4oのような一般的なLLMを自由に使えるだけでなく、法的意思決定に役立つツールを持っていることを意味します。
人間との類推をもう一度見ると、微調整は、集中的な学習段階の後に内在化された知識を持つことに匹敵します。
この学習段階の後、コンピューターサイエンスの学生は、CRUDという用語がCreate、読み取り、更新、削除の略であることを知っています。彼または彼女は、それを調べる必要なく概念を説明することができます。一般的な語彙が拡張されました。
この内在化により、微調整されたLLMのように、より速く、より自信のある応答が可能になります。
どちらの方法も、特定のタスクのLLMのパフォーマンスを改善します。
どちらの方法でも、効果的に機能するために十分に準備されたデータが必要です。
また、両方の方法が幻覚を減らすのに役立ちます - 誤った情報または製造された情報の生成。
しかし、以下の表を見ると、これら2つの方法の違いを見ることができます。
モデルは常に再訓練することなく常に最新のデータにアクセスできるため、RAGは特に柔軟です。事前には少ない計算の取り組みが必要ですが、質問に答えながらより多くのリソースが必要です(推論)。レイテンシも高くなる可能性があります。
一方、微調整は、モデルの重みに直接保存され、外部検索は必要ないため、より速い推論時間を提供します。主な欠点は、トレーニングが時間がかかり、高価であり、大量の高品質のトレーニングデータが必要であることです。
RAGは、モデル自体を変更せずに必要なときに知識を検索するためのツールをモデルに提供しますが、微調整は、調整されたパラメーターと重みでモデルに追加の知識を保存します。
検索拡張ジェネレーション(RAG)パイプラインを構築するための一般的なフレームワークはLangchainです。このフレームワークは、LLMコールの検索システムとのリンクを容易にし、ターゲットを絞った方法で外部ソースから情報を取得できるようにします。
1。クエリの埋め込み
最初のステップでは、ユーザー要求は埋め込みモデルを使用してベクトルに変換されます。これは、たとえば、OpenaiまたはHugging FaceのAll-Minilm-L6-V2からのText-Medding-Ada-002で行われます。
ベクトルデータベースは従来のテキストを検索するのではなく、数値表現(埋め込み)間のセマンティックな類似性を計算するため、これが必要です。ユーザークエリをベクトルに変換することにより、システムは正確に一致する用語を検索するだけでなく、コンテンツが類似した概念を認識できます。
2。ベクトルデータベースで検索します
結果のクエリベクトルは、ベクトルデータベースと比較されます。目的は、質問に答えるために最も関連性の高い情報を見つけることです。
この類似性検索は、おおよその最近隣接(ANN)アルゴリズムを使用して実行されます。このタスクの有名なオープンソースツールは、たとえば、大規模なデータセットでの高性能類似性検索のためのMetaのFAISSまたは中小サイズの検索タスクのChromADBです。
3. LLMコンテキストへの挿入
3番目のステップでは、取得したドキュメントまたはテキストセクションがプロンプトに統合され、LLMがこの情報に基づいて応答を生成するようにします。
4。応答の生成
LLMは、受信した情報を一般的な言語語彙と組み合わせて、コンテキスト固有の応答を生成します。
Langchainに代わるものは、特別に開発されたRAGクラスを提供するハグするフェイストランスライブラリです。
RAGを備えたLLMはクエリに外部情報を使用しますが、微調整によりモデルの重みを変更して、モデルが新しい知識を永久に保存するようにします。
1。トレーニングデータの準備
微調整には、高品質のデータコレクションが必要です。このコレクションは、入力と目的のモデル応答で構成されています。たとえば、チャットボットの場合、これらは質問を回答することができます。医療モデルの場合、これは臨床報告または診断データである可能性があります。法的AIの場合、これらは法的テキストと判断である可能性があります。
例を見てみましょう。OpenAIのドキュメントを見ると、これらのモデルは微調整中に役割(システム、ユーザー、アシスタント)を備えた標準化されたチャット形式を使用していることがわかります。これらの質問回答ペアのデータ形式はJSONLであり、次のようになります。
{"messages":[{"role": "system"、 "content": "du bist ein medizinischer Assistent Gelenkschmerzen。 "}]}
他のモデルでは、CSV、JSON、Pytorchデータセットなどの他のデータ形式を使用しています。
2。ベースモデルの選択
事前に訓練されたLLMを出発点として使用できます。これらは、NLPタスクのOpenai APIまたはDeepseek、Llama、MistralまたはFalcon、またはT5またはFlan-T5などのOpenai APIを介してGPT-3.5やGPT-4などのクローズドソースモデルです。
3。モデルのトレーニング
モデルは重みを更新するために新しいデータでトレーニングされているため、微調整には多くのコンピューティング能力が必要です。特にGPT-4やLlama 65bなどの大規模なモデルには、強力なGPUまたはTPUが必要です。
計算の取り組みを減らすために、LORA(低ランク適応)などの最適化された方法があります。ここでは、少数の追加パラメーターのみが訓練されているか、量子化されたモデルの重み(4ビット)が使用されるQlora(量子化LORA)が使用されます。
4。モデルの展開と使用
モデルがトレーニングされたら、ローカルに展開したり、フェイスモデルハブ、AWS、Azureを抱きしめるなどのクラウドプラットフォームに展開できます。
RAGと微調整には、さまざまな利点と短所があり、異なるユースケースに適しています。
コンテンツが動的または頻繁に更新される場合、RAGは特に適しています。
たとえば、FAQチャットボットでは、常に拡大している知識データベースから情報を取得する必要があります。定期的に更新される技術文書は、モデルを常に再訓練することなく、RAGを使用して効率的に統合することもできます。
もう1つのポイントはリソースです。コンピューティングパワーが限られているか、予算が少ない場合、複雑なトレーニングプロセスが必要ないため、RAGはより意味があります。
一方、微調整は、モデルを特定の企業または業界に合わせて調整する必要がある場合に適しています。
対応の質とスタイルは、ターゲットを絞ったトレーニングを通じて改善できます。たとえば、LLMは正確な用語で医療報告を生成できます。
基本的なルールは次のとおりです。RAGは、知識が大きすぎるか動的すぎてモデルに完全に統合されていない場合に使用されますが、一貫性のあるタスク固有の動作が必要な場合は、微調整がより良い選択です。
2つを組み合わせるとどうなりますか?
それはまさに、検索された微調整(いかだ)を増やしたことで起こることです。
このモデルは、正しい用語と構造を理解できるように、微調整を通じてドメイン固有の知識で最初に濃縮されます。その後、モデルはRAGで拡張され、外部データソースから特定の最新情報を統合できるようにします。この組み合わせにより、深い専門知識とリアルタイムの適応性の両方が保証されます。
企業は両方の方法の利点を使用しています。
両方の方法(ragと微調整)は、さまざまな方法で基本的なLLMの機能を拡大します。
微調整は、特定のドメインのモデルを専門としていますが、Ragはそれを外部の知識を備えています。 2つの方法は相互に排他的ではなく、ハイブリッドアプローチで組み合わせることができます。計算コストを見ると、微調整はリソース集約的な前払いですが、動作中は効率的ですが、RAGは初期リソースが少なくなりますが、使用中はより多く消費します。
ラグは、知識が大きすぎる、または動的であり、モデルに直接統合されない場合に理想的です。微調整は、特定のタスクの安定性と一貫した最適化が必要な場合、より良い選択です。どちらのアプローチも明確であるが補完的な目的を果たし、AIアプリケーションで貴重なツールにします。
私の物質では、テクノロジー、Python、データサイエンス、機械学習、AIの分野で公開された記事に関する要約を定期的に書きます。興味がある場合は、見てみるか、購読してください。
以上がラグ&微調整によりLLMをより正確にする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。