ファインチューニングとは?ChatGPTに必須の技術を院生が徹底解説

ChatGPTで用いられている「ファインチューニング」って知っていますか?
ファインチューニングは、ChatGPTなどのディープラーニング分野において、非常に重要な技術です。ChatGPTの開発においても、大きな役割を果たしています。
今回の記事では、ファインチューニングの概要や仕組みから、ChatGPTで使われる理由について、そして転移学習との違いについて解説していきます。
なお弊社では、ファインチューニングを使った生成AIの開発について1時間無料相談を承っています。こちらからお気軽にご相談ください。
→無料相談で話を聞いてみる
ファインチューニングとは
ファインチューニングとは、「大量のデータで事前学習されたモデル(事前学習済みモデル)に対して、解きたいタスクに応じたデータを追加で学習し、パラメータを微調整すること」を指します。
ファインチューニングに関しては、下記の動画が分かりやすいです。
ここで、事前学習とパラメータ、ファインチューニングについて、用語を整理しましょう。
- 事前学習:大規模データで事前に学習した、汎用的な機械学習モデル
- パラメータ:タスクを解くために調整する数値
- ファインチューニング:事前学習済みモデルのパラメータを微調整する手法
ファインチューニングを行う目的は、事前学習済みモデルを、「各タスクに特化したモデル」にするためです。事前学習済みモデルは、あくまでも汎用的なモデルなので、ファインチューニングをすることで、特定のタスクにおいて精度を上げることが可能になります。
イメージは、以下の画像の通りです。
引用:https://blog.kikagaku.co.jp/chat-gpt-few-shot-learning
上記の「事前学習用データ」は非常に大きなデータです。一方で、「タスクA用のデータ」や「タスクB用のデータ」は、一般的には数百〜数千件ほどの小さなデータです。
なお、GPT-3.5 Turboのファインチューニング方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。
→【やってみた】GPT3.5 Turboのファインチューニングで岸田総理ボット開発するまで
ファインチューニングの仕組み
ファインチューニングでは、各タスクに特化したモデルを作るために、最終層に新たな層を追加します。その後、追加した層と学習済みモデルの一部または全体を、追加で学習するのです。
ファインチューニングのイメージは、以下の画像の通りです。
引用:https://atmarkit.itmedia.co.jp/ait/articles/2301/26/news019.html
また、ファインチューニングでは、解きたいタスクに応じて、データを別途で用意します。例えば、GPTやBERTの論文では、ファインチューニングによって以下のようなタスクを解いています。
- 要約
- 翻訳
- 質問応答
- テキスト分類
さらに、自身の手元にあるデータを用いてファインチューニングすれば、ChatGPTのような大規模言語モデルも、自分好みにカスタマイズできます。
ファインチューニングがChatGPTに使われる理由
ChatGPTのファインチューニングは、モデルを特定のタスクにカスタマイズしたり、パフォーマンスを向上させるなど、さまざまな理由から行われます。例えば、ファインチューニングをすることで、カスタマーサービスやチャットボットアプリケーションなど、特定のタスク専門に仕上げることができます。
ちなみに、皆さんがChatGPTを使う際に、いつも書いている「プロンプト」ですが、このプロンプトも実はファインチューニングに非常に似ているのです。現在のChatGPTのような「GPT-3.5」や「GPT-4」の場合は、もはや数百〜数千件のデータでファインチューニングを行うことなく、プロンプトのようなたった1〜2件のデータでも、様々なタスクに対応できます。
ここで、事前学習とファインチューニング、プロンプトにおける、一般的なデータ数を比較してみましょう。
- 事前学習(GPT-3):570GB
- ファインチューニング:数百〜数千件
- プロンプト:1~2件
なお、プロンプトエンジニアリングについて詳しく知りたい方は、下記の記事を合わせてご確認ください。
→ChatGPTのプロンプトデザインの秘密を解明|深津式・シュンスケ式・ゴールシークプロンプトを紹介
ファインチューニングと転移学習の違い
事前学習済みモデルを特定タスクに適用する方法として、ファインチューニングと転移学習がよく用いられます。しかし、これら二つの手法は似て非なるものです。
まず、ファインチューニングでは、事前に訓練されたモデルの一部または全体を、新しいデータセットで追加学習します。一方で、転移学習は、訓練済みのモデルの出力層に新しい層を追加し、その層だけを新しいデータで追加学習する方法です。
主な違いは、追加学習する層と必要なデータ量です。
ファインチューニング | 転移学習 | |
---|---|---|
追加学習する層 | モデル全体または一部 | 新たに追加された出力層のみ |
必要なデータ量 | 転移学習より多い | 少ない |
これらの手法において、データ量が豊富であればファインチューニングが、データ量が少なければ転移学習が適しています。
ファインチューニングと転移学習の違いについては、以下の画像が分かりやすいです。
引用:https://atmarkit.itmedia.co.jp/ait/articles/2301/26/news019.html
上がファインチューニングの例で、下が転移学習の例です。
ファインチューニングでは、新たに追加した層に加えて、もともとあった層の一部も含めて、追加学習しています。一方で、転移学習では、新たに追加した層だけを追加学習し、その他の層のパラメータは全くいじらないです。
ちなみに、この転移学習のように、その他の層のパラメータを全くいじらないことを「凍結(フリーズ)」といいます。

【無料】2023年11月版|生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIの業務活用コンサルティング
・システム間API連携

生成系AIの業務活用なら!
・生成系AIを活用したPoC開発
・生成系AIのコンサルティング
・システム間API連携
まとめ
本記事では、ChatGPTに用いられる「ファインチューニング」について詳しく解説しました。
ファインチューニングは、大量のデータで事前学習されたモデルに対して、特定のタスクに適したデータを追加学習し、モデルのパラメータを微調整する手法です。ChatGPTにおいても、ファインチューニングは、特定のタスクにおいてパフォーマンスを向上させるために行われます。
また、ファインチューニングと転移学習との違いにも触れました。
転移学習は新しい層だけを追加学習するのに対し、ファインチューニングはモデル全体または一部を追加学習します。データ量が豊富な場合はファインチューニング、少ない場合は転移学習が適しています。
なお、ファインチューニング以外のAIを学習させる方法について詳しく知りたい方は、下記の記事を合わせてご確認ください。
→【院生が徹底解説】ChatGPTのベクトルデータベースとは?
最後に
いかがだったでしょうか?
弊社では
・マーケティングやエンジニアリングなどの専門知識を学習させたAI社員の開発
・要件定義・業務フロー作成を80%自動化できる自律型AIエージェントの開発
・生成AIとRPAを組み合わせた業務自動化ツールの開発
・社内人事業務を99%自動化できるAIツールの開発
・ハルシネーション対策AIツールの開発
・自社専用のAIチャットボットの開発
などの開発実績がございます。
まずは、「1時間の無料相談」にてご相談を承っておりますので、ご興味がある方はぜひご連絡ください。
➡︎生成AIを使った業務効率化、生成AIツールの開発について相談をしてみる。

「生成AIを社内で活用したい」「生成AIの事業をやっていきたい」という方に向けて、生成AI社内セミナー・勉強会をさせていただいております。
セミナー内容や料金については、ご相談ください。
また、弊社紹介資料もご用意しておりますので、併せてご確認ください。