ホーム Topics ファイン・チューニング ファイン・チューニングとは
watsonx.aiを用いたモデルのファイン・チューニング AI関連の最新情報を購読する
雲、円グラフ、グラフのピクトグラムのコラージュを使用したイラスト

公開日:2024年3月15日
寄稿者:Dave Bergmann

ファイン・チューニングとは

機械学習におけるファイン・チューニングとは、事前にトレーニングされたモデルを特定のタスクやユースケースに合わせて調整するプロセスです。これは、特に生成AIに使用される基盤モデルのトレーニングプロセスにおいて、基本的なディープラーニング手法になっています。

ファイン・チューニングは、より広範な転移学習手法の一部と考えることができます。つまり、既存モデルがすでに学習した知識を、新しいタスクを学習するための出発点として活用します。

ファイン・チューニングが採用される理由は本質的に、特定の目的のために新しいモデルをゼロからトレーニングするよりも、すでに手元のタスクに関連する広範な学習を得た、事前トレーニング済みの基盤モデルの機能を洗練させる方が簡単かつ安価であるためです。これは、自然言語処理(NLP)の分野で注目を集めている大規模言語モデル(LLM)や、画像分類、物体検出、画像セグメンテーションなどのコンピューター・ビジョンのタスクに使用されるビジョン・トランスフォーマー(ViT)や複雑な畳み込みニューラル・ネットワーク(CNN)など、数百万ないし数十億個のパラメーターを持つディープラーニング・モデルならなおのことです。

ファイン・チューニングでは、転移学習による事前のモデル・トレーニングを活用することで、ニッチなユースケースやビジネス・ニーズに合わせた大規模なモデルを取得するために必要な高価な計算能力とラベル付きデータの量を削減できます。例えば、ファイン・チューニングを使用して、事前トレーニングされたLLMの会話の口調や画像生成モデルのイラスト・スタイルを簡単に調整できます。また、モデルの元のトレーニング・データセットでの学習を独自のデータや専門的な領域固有の知識で補足するために使用することもできます。

したがって、ファイン・チューニングは機械学習モデルの実際の応用において重要な役割を果たし、洗練されたモデルへのアクセスとカスタマイズの民主化に役立ちます。

企業向け生成AI+ML

この電子書籍では、組織が自信を持って生成AIと機械学習をビジネスに組み込んで、大きな競争上の優位性を獲得するための方法について説明しています。

関連コンテンツ

基盤モデルに関するガイドに登録する

ファイン・チューニングとトレーニングの違い

ファイン・チューニングは表向きはモデルのトレーニングで使用される手法ですが、従来「トレーニング」と呼ばれるものとは異なるプロセスです。曖昧さをなくすために、データサイエンティストは通常、この文脈では後者を事前トレーニングと呼んでいます。

(トレーニング前

トレーニング開始時(ここでは、事前トレーニングと同義とします)、モデルはまだ何も「学習」していません。トレーニングは、 モデル・パラメーターニューラル・ネットワークの各ノードで発生する数学演算に適用されるさまざまな重みおよびバイアス)をランダムに初期化することから始まります。

トレーニングは2段階を反復的に行うことで実行されます。フォワード・パスでは、モデルがトレーニング・データ・セットからの一連のサンプル・データに対して予測を行い、損失関数が各データに対するモデルの予測と「正しい」回答(またはグランド・トゥルース) との差(または損失)を測定します。バックプロパゲーションでは、最適化アルゴリズム(通常は勾配降下法)を使用して、ネットワーク全体のモデルの重みを調整し、損失を減らします。モデルの重みに対するこれらの調整により、モデルが「学習」していきます。このプロセスは、モデルが十分にトレーニングされたとみなされるまで、複数のトレーニング・エポックにわたって繰り返されます。

従来の教師あり学習は、通常、画像分類、物体検出、画像セグメンテーションなどのコンピューター・ビジョン・タスクのモデルを事前トレーニングするために使用されますが、その際にはラベル付きデータを使用します。ラベル(または注釈)はサンプルごとに可能な回答とグランド・トゥルースを提供します。

LLMは通常、自己教師あり学習(SSL)により事前トレーニングされており、モデルは、ラベル付けされていないデータ固有の構造からグランド・トゥルースを導き出すように設計された プレテキスト・タスク を通じて学習します。このようなプレテキスト・タスクは、下流のタスクに役立つ知識を与えます。通常、次の2つの手法のいずれかが使用されます。

  • 自己予測:元の入力の一部をマスキングし、それを再構築することをモデルに課します。これは、LLMで最も使用されているトレーニング手法です。

  • 対照学習:関連する入力に対しては類似の埋め込みを学習し、関連しない入力に対しては異なる埋め込みを学習するようにモデルをトレーニングします。これは、Contrasting Language-Image Pretraining(CLIP)など、フュー・ショット学習またはゼロ・ショット学習向けに設計されたコンピューター・ビジョン・モデルで最もよく使用されています。

したがって、SSLを使用すると、数百万、さらには数十億のデータ・ポイントに注釈を付けるという負担を負うことなく、トレーニングで非常に大規模なデータセットを使用できます。これにより大幅な労力が節約されますが、それでも膨大な計算リソースが必要になります。

ファイン・チューニング

逆に、ファイン・チューニングとは、先に行われたトレーニングによりすでに重みが更新されたモデルをさらに訓練する手法のことです。基本モデルがすでに持っている知識を開始点として使用するファイン・チューニングでは、より小規模なタスク固有のデータ・セットでモデルをトレーニングすることでモデルを調整します。

理論的には、そのタスク固有のデータ・セットを初期トレーニングに使用することもできましたが、小さなデータ・セットで大規模なモデルをゼロからトレーニングすると、モデルがトレーニング例で適切に機能するように学習しても、新しいデータへの一般化が不十分になる可能性があるため、 過学習となるリスクがあります。これにより、モデルがその与えられたタスクに不適切になり、モデルのトレーニングの目的が無効になります。

したがって、ファイン・チューニングでは、膨大なデータセットを用いた事前トレーニングから得られる広範な知識と安定性を活用しながら、より詳細かつ具体的な概念でモデルの理解を磨き上げるためという、良い所取りが可能になります。オープンソースの基盤モデルの能力が向上していることを考慮すると、多くの場合、事前トレーニングに伴う経済的、計算的、または物流的な負荷をまったく受けることなく、その利点を享受できます。

ファイン・チューニングの仕組み

ファイン・チューニングでは、事前トレーニングされたモデルの重みを開始点として使用し、モデルが利用される特定のタスクやユースケースをより直接的に反映するサンプルのより小さなデータ・セットでさらにトレーニングを行います。通常は教師あり学習を伴いますが、強化学習、自己教師あり学習、半教師あり学習を伴うこともあります。

ファイン・チューニングに使用されるデータ・セットは、事前トレーニングされたモデルがファイン・チューニングされる特定領域の知識、スタイル、タスク、またはユースケースを伝えます。例:

  • 一般言語用に事前トレーニングされたLLMは、関連するプログラミング要求とそれぞれに対応するコード・スニペットを含む新しいデータ・セットを使用してコーディング用にファイン・チューニングされる場合があります。

  • 鳥の特定の種を識別するために使用される画像分類モデルでは、追加のラベル付きトレーニング・サンプルを通じて新しい種を学習できます。

  • LLMは、特定のライティング・スタイルを表すサンプル・テキストを用いた自己教師あり学習を通じて、そのスタイルを模倣することを学習できます。

ラベル付きデータとラベルなしデータの両方を組み込んだ機械学習のサブセットである半教師あり学習は、シナリオは教師あり学習を必要としている一方で、適切なラベル付きのサンプルが不足している場合に有効な方法です。半教師ありファイン・チューニングは、コンピューター・ビジョン1タスクとNLP2タスクの両方で優れた結果をもたらし、十分な量のラベル付きデータを取得する負担を軽減します。

ファイン・チューニングを使用してネットワーク全体の重みを更新できますが、実際的な理由により、これが常に当てはまるとは限りません。多くの場合、パラメーター効率の高いファイン・チューニング(PEFT)という包括的な用語で呼ばれる、モデル・パラメーターの選択されたサブセットのみを更新する、多種多様な代替ファイン・チューニング法があります。このセクションの後半で説明するPEFT手法では、多くの場合、パフォーマンスを大きく損なうことなく、計算要求を軽減し、破滅的な忘却(ファイン・チューニングによってモデルのコア知識が失われたり不安定になったりする現象)を軽減できます。

多種多様なファイン・チューニング手法とそれぞれに固有のさまざまな変数を考慮すると、モデルの理想的なパフォーマンスを達成するには、多くの場合、ユースケースに最も関連するメトリクスに従い満足のいく結果が得られるまで、トレーニング戦略と設定を複数回繰り返し、バッチ・サイズ、学習率、正則化項などのデータセットとハイパーパラメーターを調整する必要があります。

完全なファイン・チューニング

概念的に最も簡単なファイン・チューニング手段は、ニューラル・ネットワーク全体を単純に更新することです。このシンプルな手法は本質的に事前トレーニング・プロセスに似ています。完全なファイン・チューニング・プロセスと事前トレーニング・プロセスの唯一の基本的な違いは、使用されるデータセットとモデルのパラメーターの初期状態です。

ファイン・チューニング・プロセスにより不安定な変更が行われないよう、特定のハイパーパラメーター(学習プロセスに影響を与えるも、それ自体は学習可能なパラメーターではないモデル属性)は、事前トレーニング中にその仕様に関連して調整される場合があります。例えば、学習率を小さくすることで(モデルの重みに対する更新の影響度を軽減し)、致命的な忘却を防ぐことができます。

パラメーター効率的なファイン・チューニング(PEFT)

完全なファイン・チューニングは、事前トレーニング・プロセスと同様、非常に多くの計算を必要とします。数億、さらには数十億個のパラメーターを持つ最新のディープラーニング・モデルでは、法外なコストがかかり、非現実的となることがよくあります。

パラメーター効率的なファイン・チューニング(PEFT)には、事前トレーニングされた大規模なモデルを特定の下流アプリケーションに効果的に適応させるために、更新が必要なトレーニング可能なパラメーターの数を減らすためのさまざまな方法が含まれます。そうすることで、PEFTは、効果的にファイン・チューニングされたモデルを生成するために必要な計算リソースとメモリー・ストレージを大幅に削減できます。PEFTは、特にNLPのユースケースにおいて、完全なファイン・チューニング手法よりも安定していることがよく実証されています。3
 

部分的なファイン・チューニング
選択的ファイン・チューニングとも呼ばれる部分的なファイン・チューニング手法は、関連する下流タスクのモデルのパフォーマンスに最も重要な事前トレーニングされたパラメーターの選択済みサブセットのみを更新することにより、計算要求を削減することを目的としています。残りのパラメーターは「フリーズ」され、変更されません。

最も直観的な部分ファイン・チューニング手法は、ニューラル・ネットワークの外層のみを更新することです。ほとんどのモデル・アーキテクチャーでは、モデルの内層(入力層に最も近い)は、広範な一般的な特徴のみをキャプチャします。例えば、画像分類に使用されるCNNでは、通常、初期層がエッジとテクスチャーを識別します。後続の各層では、最外層で最終的な分類が予測されるまで、徐々に細かい特徴を識別します。一般的に言えば、新しいタスク(モデルがファイン・チューニングされている)が元のタスクに似ているほど、事前トレーニングされた内部層の重みがこの新しい関連タスクに対して役立ち、更新すべき層が少なくなります。

その他の部分的なファイン・チューニング手法には、モデルの層全体のバイアス項のみを更新する手法(ノード固有の重みではなく)4 や、モデル全体の重みの選択されたサブセットのみを更新する「スパース」ファイン・チューニング手法などがあります。5


追加的ファイン・チューニング
追加メソッドでは、事前トレーニングされたモデルの既存のパラメーターをファイン・チューニングするのではなく、追加のパラメーターまたは層をモデルに追加し、既存の事前トレーニングされた重みをフリーズして、それらの新しいコンポーネントのみをトレーニングします。この手法は、元の事前トレーニングされた重みが変更されないことを保証することで、モデルの安定性を確保するのに役立ちます。

これによりトレーニング時間が長くなる可能性はありますが、保存する勾配や最適化状態がはるかに少なくなるため、メモリ要件が大幅に削減されます。Lialinらによると、モデルのすべてのパラメーターをトレーニングするには、モデルの重みだけの場合よりも12〜20倍のGPUメモリーが必要になります。6フリーズしたモデルの重みを量子化することで、さらにメモリーを節約できます。つまり、オーディオ・ファイルのビットレートを下げるのと概念的に似た、モデル・パラメーターの表現に使用される精度を下げることができます。

1つの追加的トレーニングには、プロンプト・チューニング手法があります。概念的にこれは、特定のトーンを指定したり、フュー・ショット学習を促進する例を提供したりするなどして、モデルを目的の出力に導くように「ハード・プロンプト」(つまり、人間が自然言語で記述するプロンプト)を調整することを指すプロンプト・エンジニアリングに似ています。プロンプト・チューニングは、AIが作成したソフト・プロンプト(学習可能なベクトル埋め込みプロンプト)を導入し、ユーザーのハード・プロンプトに連結します。プロンプト・チューニングでは、モデルを再トレーニングするのではなく、モデルの重みを凍結し、代わりにソフト・プロンプト自体をトレーニングします。高速かつ効率的な迅速なチューニングにより、解釈可能性におけるトレードオフはあるものの、モデルは特定のタスク間をより簡単に切り替えることができます。

アダプター
別の追加的ファイン・チューニングの手法では、アダプター・モジュール(ニューラル・ネットワークに追加される新しいタスク固有のレイヤー)を挿入し、事前トレーニングされたモデルの重み(凍結されているもの)をファイン・チューニングする代わりに、これらのアダプター・モジュールをトレーニングします。BERTマスク言語モデルの結果を測定した引用元論文によると、アダプター手法では、わずか3.6%のパラメーター数しかトレーニングしなくても、完全なファイン・チューニングと同等のパフォーマンスを達成しています。7


再パラメーター化
低ランク適応(LoRA)のような再パラメーター化ベースの手法は、高次元行列(変換モデルの事前トレーニングされたモデルの重みの大規模な行列など)の低ランク変換を活用します。これらの低ランク表現では、モデルの重みの基礎となる低次元構造を把握するために、重要ではない高次元の情報が省略され、トレーニング可能なパラメーターの数が大幅に減少します。これにより、ファイン・チューニングが大幅に高速化され、モデルの更新を保存するために必要なメモリーが削減されます。

LoRAはモデルの重み行列の直接最適化を避け、代わりにモデルの重み(またはデルタ重み)を更新した行列を最適化し、それをモデルに挿入します。この更新された行列は、より小さな(つまり 低ランクの)2つの行列として表現され、更新されるパラメーターの数を大幅に減らすことができます。これにより、ファイン・チューニングにかかる時間を大幅に短縮し、モデルで更新された情報を保管するために必要なメモリーも削減されます。ここで、事前トレーニング済みモデルの重み自体は固定されたままになります。

LoRAのもう1つのメリットは、最適化され保存されるのは新しいモデルの重みではなく、元の事前トレーニングされた重みとファイン・チューニングされた重みの差(またはデルタ)であるため、実際のパラメーターが変更されない事前トレーニング済みのモデルを特定のユースケースに適応させるために必要に応じて、異なるタスクでトレーニングされるLoRAを「入れ替える」ことができます。

LoRAの前にトランスフォーマー・モデルを量子化することで計算の複雑さをさらに軽減するQLoRAなど、さまざまなLoRAの派生型が開発されています。

大規模な言語モデルのファイン・チューニング

ファイン・チューニングはLLM開発サイクルで欠かせない一部で、これにより、基本となる基盤モデルの生の言語機能を、チャットボットからコーディング、その他の創造的かつ技術的な領域まで、さまざまなユースケースに適応させることができます。

LLMは、ラベルのないデータの大規模なコーパスに対する自己教師あり学習を使用して事前トレーニングを行います。OpenAIのGPT、GoogleのGemini、MetaのLlamaモデルなどの自己回帰言語モデルでは、単語シーケンスが完了するまで、単語シーケンス内の次の単語を単純に予測するようにトレーニングされます。事前トレーニングでは、トレーニング・データから抽出されたサンプル文の先頭がモデルに提供され、サンプルの終わりまでシーケンス内の次の単語を予測するタスクが繰り返し実行されます。各予測について、元のサンプル文の実際の次の単語がグランド・トゥルースとして機能します。

この事前トレーニングにより強力なテキスト生成機能が得られますが、ユーザーの意図を実際に理解することはできません。基本的なレベルでは、自己回帰LLMは実際にはプロンプトに応答せず、テキストを追加するだけです。プロンプト・エンジニアリングの形で非常に具体的なガイダンスがなければ、事前トレーニングされたLLM(ファイン・チューニングされていないモデル)は、文法的に一貫した方法で、プロンプトにより開始された特定のシーケンスの次の単語が何であるかを単純に予測します。「履歴書の作り方を教えてください」と尋ねた場合、LLMは「Microsoft Word を使用する」と答えるかもしれません。答えの文章が完成しますが、ユーザーの目的には合っていません。モデルは、事前トレーニング・コーパスに含まれる関連コンテンツから集めた履歴書作成に関する十分な知識をすでに持っている可能性がありますが、ファイン・チューニングしないと、この知識にアクセスできない可能性があります。

したがって、ファイン・チューニング・プロセスは、基盤モデルを企業や企業の独自の傾向やユースケースに合わせて調整するだけでなく、それらを実際の使用に完全に適したものにする上で重要な役割を果たします。

指示チューニング

指示チューニングは、LLMをチャットボット用にファイン・チューニングするためによく使われる、教師ありファイン・チューニング(SFT)のサブセットで、ユーザーのニーズにより直接的に対応する応答を生成するようにLLMを整えます。言い換えれば、指示に適切に従うようにトレーニングします。ラベル付きの例は、プロンプトの例が「次の文を英語からスペイン語に翻訳せよ」や「次の文を肯定的または否定的として分類せよ」などの指示に基づくタスクを構成する形式(プロンプト、応答)に従います。これらの例は、質問への回答、要約、翻訳など、さまざまなユースケースを表すプロンプトにどのように応答するかを示します。モデルの重みを更新してモデルの出力とラベル付けされたサンプルの間の損失を最小限に抑える際、LLM は、より有用な方法でプロンプトにテキストを追加し、一般に指示に従いやすくすることを学習します。

先ほどの「履歴書の書き方を教えてください」というプロンプトの例を続けると、SFTに使用されたデータ・セットには、「方を教えてください」で終わるプロンプトに応答する方法を示す、多数のペア(プロンプト、応答)が含まれ、これは単に文章を完成させるのではなく、手順を伝える可能性があります。

人間のフィードバックからの強化学習(RLHF)

指示チューニングでは、応答を構成する方法などの具体的で単純な動作をモデルに教えることができますが、ラベル付けされた例を通じて、役に立つこと、事実の正確さ、ユーモア、共感などの抽象的な人間の資質を教えることは非常に手間がかかり、困難な場合があります。

特にチャットボットのような会話型のユースケースでは、モデル出力を理想的な人間の行動とより一致させるために、SFTに強化学習、より具体的には、人間からのフィードバックによる強化学習(RLHF)を補完することができます。RLHFは、人間の選好に基づく強化学習とも呼ばれ、複雑で定義が不明確であったり、離散的な例によって特定することが困難であったりする品質を実現するために、モデルをファイン・チューニングするのに役立ちます。

コメディーを考えてみましょう。SFTでモデルに「面白い」ことを教えるには、学習可能なパターンを構成するのに十分な冗談を書く(または習得する)というコストと労力が必要なだけでなく、特定のデータサイエンティストが面白いと思うものが、ユーザー・ベースが面白いと感じるものと一致している必要もあります。RLHFは基本的に、数学的にクラウド・ソーシングされた代替手段を提供します。つまり、LLMにジョークを生成するよう促し、人間のテスターにその品質を評価してもらいます。これらの評価は、肯定的なフィードバックを受ける冗談の種類を予測する報酬モデルをトレーニングするために使用することができ、その報酬モデルは強化学習を通じてLLMをトレーニングするために使用することができます。

より実践的に言えば、RLHFは、ハルシネーション、トレーニング・データに内在する社会的偏見の反映、または失礼な、または敵対的なユーザーからのコメントへの対処など、LLMの実存的な課題に対処することを目指しています。

一般的なファイン・チューニングのユースケース

ファイン・チューニングは、モデルのコア知識のカスタマイズから補足、まったく新しいタスクや領域へのモデルの拡張まで、幅広い目的に使用できます。

  • スタイルのカスタマイズ:複雑な行動パターンや独特なイラスト・スタイルの実装から、丁寧な挨拶からやり取りを始めるような簡単な修正まで、ブランドの希望するトーンを反映させるためにモデルをファイン・チューニングすることができます。

  • 専門化:LLMの一般的な言語能力は、特定のタスクを実現するために洗練させることができます。例えば、Meta社のLlama 2モデルは、基本の基盤モデル、チャットボット調整バージョン(Llama-2-chat)、コード調整バージョン(Code Llama)としてリリースされました。

  • 領域固有の知識を加える:LLMは膨大なデータ・コーパスで事前トレーニングされていても、全知全能ではありません。基本モデルの知識を補うために追加のトレーニング・サンプルを使用することは、通常、事前トレーニングでは十分に表現されていない可能性がある専門的かつ難解な語彙の使用を必要とする法律、財務、または医療分野向けのモデルで特に一般的です。

  • フュー・ショット学習:すでに強力な一般化された知識を持っているモデルは、比較的少数の実証例を使用して、より具体的な分類テキスト用にファイン・チューニングできることがよくあります。

  • エッジケースへの対応:事前トレーニングではカバーされそうにない特定の状況を、特定の方法でモデルに処理させたい場合があります。このような状況のラベル付きの例に基づいてモデルをファイン・チューニングすることは、それらの状況が適切に対処されることを保証する効果的な方法です。

  • 独自データの組み込み:貴社には、特定のユースケースに関連性の高い独自のデータ・パイプラインがあるかもしれません。ファイン・チューニングにより、モデルを最初からトレーニングしなくても、この知識をモデルに組み込むことができます。

関連ソリューション
IBM watsonx.ai™

基盤モデル、生成AI、機械学習のトレーニング、検証、チューニング、デプロイが容易になり、少量のデータを使用して、短時間でAIアプリケーションを開発できます。

watsonx.aiの詳細はこちら

watsonx.aiの基盤モデル

watsonx AI Studioは、IBMが開発したコスト効率の高いエンタープライズ・グレードの基盤モデル、オープンソース・モデル、サードパーティー・プロバイダーから供給されたモデルのライブラリーを提供し、お客様やパートナーが最小限のリスクで生成AIを迅速に拡張および運用できるように支援します。

IBMの基盤モデル・ライブラリーはこちら
ファイン・チューニング用リソース クイック・スタート:基盤モデルをチューニングする

この一連のチュートリアルと動画ガイドでは、watsonx.aiの基盤モデルを調整する方法、理由、タイミングについて理解を深めることができます。

基盤モデルを用いた生成AIソリューションの開発

基盤モデルを使用してユースケースを調査および検証して、既存のプロセスを自動化、簡素化、高速化するか、または新しい方法で価値を提供することができます。

ゼロショット学習とは

ゼロ・ショット学習(ZSL)(事前に例を確認することなく、AIモデルがオブジェクトや概念を認識して分類するようにトレーニングされる機械学習シナリオ)と、ゼロ・ショットのパフォーマンスを向上させるためにモデルをファイン・チューニングする方法についてご覧ください。

次のステップ

AI開発者向けの次世代エンタープライズ・スタジオであるIBM watsonx.aiを使用して、生成AI、基礎モデル、機械学習機能をトレーニング、検証、チューニング、デプロイしましょう。わずかなデータ、わずかな時間でAIアプリケーションを構築できます。

watsonx.aiの詳細はこちら デモを予約