ChatGPTのファインチューニングの仕組みとは?AIの活用法を解説
thumb_gptfinetuning_01
ChatGPTのファインチューニングの仕組みとは?AIの活用法を解説
アンドエンジニア編集部
2024.06.19
この記事でわかること
ファインチューニングとはLLMに対して、特定のタスクに特化したデータを学習させること
ファインチューニングはデータ取集と準備、モデルの初期化、学習と評価の3つ手順がある
ChatGPTのファインチューニングはOpenAIのサービスを利用するが、APIキーが必要となる

ChatGPTのファインチューニングとは?

img_gptfinetunnig_01

AI技術の発展により、自然言語処理分野においても目覚ましい進歩が見られます。中でもChatGPTのような大規模言語モデル(LLM)は、人間レベルの文章生成や翻訳など、様々なタスクをこなせるようになってきました。

その一方、LLMは汎用的なモデルのため、特定のタスクでさらに高い精度を得るためには、AIのさらなる学習が必要です。この学習にはファインチューニングと呼ばれる手法が有効で、LLMを特定のタスクに対応させることができます。

例えば、社内で業務マニュアルをAIに覚え込ませたり、顧客の問い合わせに対応できるように学習させたりすることで、AIをより業務改善に活かすことが可能になります。

この記事では、ChatGPTのファインチューニングにフォーカスして図解していきます。

【参考】:Fine-tuning - OpenAI API

ChatGPTのファインチューニングとは?概要から仕組みまで解説

そもそもファインチューニングとは

ファインチューニングとは、事前学習済みモデルと呼ばれる、大量のデータで学習済みのLLMに対して、さらに特定のタスクに特化したデータを学習させることで、モデルのパラメータを微調整する手法です。

事前学習済みモデルには、すでに言語の基礎的な知識や文法構造などが学習されています。ファインチューニングでは、この事前学習済みの知識をベースに、特定のタスクに必要な知識や技能をさらに学習させることで、モデルの精度を向上させることができます。

ファインチューニングが必要な理由

既存のAIモデルは、広範なデータセットを基に学習していますが、社内など特定のタスクにおいてはこの汎用性が必ずしも最適とは限りません。ファインチューニングによって、モデルは特定のドメイン知識や専門的な要求に応じた応答を生成できるようになります。

例えば、医療分野のデータでファインチューニングを行うことで、患者からの医療相談に対してより適切な応答を返すことができるようになったといった事例もあります。

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

img_gptfinetuning_02

ファインチューニングでは、事前学習済みの言語モデルがベースとなり、GPT-3.5やGPT-4などのLLMに対して、さらに追加したいデータを学習させます。ファインチューニングの手順は、次の3つのステップに分けられます。

OpenAIのGPT-4とは?ChatGPTの進化版について解説!

データ収集と準備

ファインチューニングの第1歩は、適切なデータセットを収集し準備することです。このデータセットは、ファインチューニングの対象となるタスクに関連するものでなければなりません。例えば、カスタマーサポート用のモデルを作成する場合、過去の顧客問い合わせデータが利用されます。

機械学習のデータセットとは?その役割や作り方、注意点を解説

モデルの初期化

次に、既存のモデル(例:GPT-3.5)を初期化し、新しいデータセットで再学習させます。この段階では、元のモデルの知識を保持しつつ、新たな情報を追加することが重要です。通常、元のモデルは膨大なデータで事前にトレーニングされているため、基礎的な言語能力や知識がすでに備わっています。

学習と評価

モデルが新しいデータセットで学習を開始すると、その性能を評価する必要があります。評価は、モデルがどれだけ正確に新しいタスクを遂行できるかを測定するために行われます。評価方法では、テストデータセットを使用してモデルの応答を検証する方法が一般的です。

また、評価の結果に基づいてモデルのパラメータを調整し、最適化を図ります。

img_gptfinetuning_03
【図】:ファインチューニングのイメージ

【画像出典】:Pixabay 【画像出典】:Pixabay

学習時にはモデルのパラメータを更新することで、タスクデータに含まれるパターンや規則を学習します。

ファインチューニングのメリット

img_gptfinetuning_04

ファインチューニングを行うことで、AIの精度の向上、AIの学習時間の短縮、少量データで済む、転移学習よりも柔軟といったメリットがあります。

AIの精度の向上

ファインチューニングは、特に新しいタスクと既存のモデルのタスクが類似している場合に効果的です。これは、既存のモデルがすでに関連する知識を学習しているためです。

学習時間の短縮

ファインチューニングは、既存のモデルがすでに関連する知識を学習しているため、最初からモデルを学習させるよりも、遥かに短い時間で学習させることができます。

少ないデータで学習可能

ファインチューニングは、データ量が少ない場合でも有効です。これは、既存のモデルがすでに多くの知識を学習しているため、少量のデータでも十分に学習効果が上がるからです。

転移学習より柔軟

転移学習と比較して、ファインチューニングはより柔軟な手法です。これは、ファインチューニングでは、モデルのどの部分を微調整するかを制御できるためです。

※転移学習では、出力層以外の学習モデルをそのまま利用し、出力層に新しい層を追加してその層だけを再学習します。

ファインチューニングのデメリット

img_gptfinetuning_05

ファインチューニングは、機械学習モデルの性能向上に役立つ手法の1つですが、次のようなデメリットもあります。デメリットが大きくなると、労力に対する成果を得にくいことがありますので、デメリットを理解した上でファインチューニングの可否判断を行いましょう。

過学習しやすい

ファインチューニングは、モデルが過学習しやすいというデメリットがあります。これは、モデルが学習データに過剰に適合してしまい、汎化能力が低下してしまう可能性があるためです。

時間が掛かる

ファインチューニングには、モデルを学習させるために時間がかかります。これは、特にデータ量が多い場合や、モデルが複雑な場合に顕著で、中には学習に数日掛かるケースもあります。

専門知識が必要

ファインチューニングを行うためには、機械学習に関する専門知識が必要です。これは、モデルのアーキテクチャや、ハイパーパラメータの調整方法などを理解する必要があるためです。

AIを学習させる方法とは?機械学習やディープラーニングについて解説
機械学習が学べるおすすめの本12選!初心者から上級者まで厳選してご紹介!

セキュリティリスクがある

ファインチューニングでは企業ノウハウや機密情報を扱う場合があるため、適切なセキュリティ対策が必要です。特に外部委託する場合には、情報漏えい対策をしっかり講じておくことが大切です。

ファインチューニングの料金

img_gptfinetuning_06

ChatGPTは無料プランもありますが、ファインチューニングは料金が発生します。料金は、以下の2つの要素で構成されます。ファインチューニングにかかる時間は、データ量やモデルの複雑性によって異なりますが、数時間から数日程度かかります。

img_gptfinetuning_07
【図】:ファインチューニングの料金 

■ モデルのトレーニング料金 使用するモデルの種類やデータ量によって異なりますが、一般的には100万トークンあたり8ドル程度です。

■ ファインチューニングされたモデルの使用料金 月額課金制で、利用するモデルの種類や機能によって料金が異なります。

【参考】:Pricing | OpenAI

ファインチューニングのデータセットの作り方

img_gptfinetuning_08

データセットとは、ある目的のために集められ、一定の形式に整えたデータの集合体のことです。ファインチユーニングのデータセットは、既成のAIに対して追加学習ざるためのデータです。

ここでは、一般的なデータセットの作成手順と、ChatGPTにおけるファインチューニングのステップについて紹介します。

データセット作成の手順

ファインチューニング用データセットを作成する一般的な手順は以下の通りです。

1.データ収集 対象となるタスクに関連するデータを収集します。データは、テキストデータ、画像データ、音声データなど、タスクによって形式が異なります。

2.データ前処理 収集したデータをクリーニングし、ノイズや欠損値を除去します。また、データの形式を統一するなど、モデルが学習しやすいように加工します。

3.データアノテーション データにラベルやタグを付与します。ラベル付けは、手作業で行うこともあれば自動で行うこともできます。

4.データセット分割 データセットを、学習用データ、検証用データ、テスト用データに分割します。学習用データはモデルの学習に使用し、検証用データはモデルの汎化性能を評価するために使用し、テスト用データは最終的なモデルの性能を評価するために使用します。

OpenAI APIキーを取得する

OpenAIのAPIを使用するために、次のOpenAIの公式サイトからAPIキーを取得します。OpenAIのアカウントが必要ですので、アカウントがない方は、OpenAIの公式サイトでアカウント登録しておきます。

※すでにChatGPTを利用している方は、同じアカウントでログインできます。

【参考】:Overview | OpenAI API

img_gptfinetuning_09
【図】:OpenAI OverViewサイト 

APIキーを取得する

次にAPIキーを取得します。OpenAIのAPI Key取得サイト(下記、参考サイト)にアクセスし、シークレットキーをメモ帳などにコピペしておきます。

【参考】:API Keys |Open AI

img_gptfinetuning_10
【図】OpenAI APIキー取得画面 
ChatGPTのAPIとは?概要や使い方を分かりやすく図解

作業環境を準備する

Python環境を整え、PythonのOpenAIライブラリをインストールする必要があります。

pip install openai

インストールできたら、下記のようにOpenAIライブラリをインポートできます。

import openai

トレーニングデータを準備する

トレーニングデータは、タスクに特化したデータセットを用意します。例えば、特定の分野の質問と回答のペアなどです。データは通常、JSONL(JSON Lines)形式で構成します。

以下はJSONL形式の例です。手持ちのQ&A集などを利用して、質問と回答を入力していきます。

データセットは最低でも10セットは必要です。ファインチューニングができない場合、データ量の不足や品質の問題が考えられます。

{prompt: Q: AIとは何ですか?, completion: A: 人工知能のことです。}
{prompt: Q: ファインチューニングの目的は?, completion: A: 特定のタスクに最適化することです。}

JSONとは?概要からJSONファイルフォーマットまで解説!

トレーニングデータのフォーマットをチェックする

作成したデータの形式が正しいか、エラーがないか、チェックを行います。OpenAIの公式ドキュメント(下記参照)にデータセットチェック用のPythonコードが掲載されていますので、そちらを利用すると良いでしょう。

公式ドキュメント内で『Data formatting script』を検索すると、コードが記載されていますので使ってみましょう。

【参考】:Fine-tuning|OpenAI API

img_gptfinetuning_11
【図】:OpenAI ファインチューニング公式ドキュメント

ファインチューニングを実行する

PythonのOpenAIライブラリを利用して、データセットのファイルをアップロードし、実行します。"OPENAI_API_KEY"の箇所には先程取得済のAPIキーを入力しておきます。"file-name"の箇所には、作成したデータセットのファイル名を入れます。

こちらを実行すると、ファインチューニングが開始されます。

import os
import openai
openai.api_key = os.getenv(""OPENAI_API_KEY"")
openai.FineTuningJob.create(training_file=""file-name"", model=""gpt-3.5-turbo"")"

モデルの評価と調整をする

ファインチューニング後のモデルをテストし、必要に応じてトレーニングデータを追加して再度ファインチューニングを行います。ファインチューニングを実行した際にジョブIDを取得できますので、以下の形式でWebで実行結果を確認できます。実行結果が”succeeded"となっていれば成功です。

https://platform.openai.com/docs/guides/fine-tuning/{job_id}

データセット作成のツール

img_gptfinetuning_12

ファインチューニング用データセットを作成するためのツールは、いくつかあります。代表的なツールを3つ紹介しますので、比較検討してみることをおすすめします。

Labelbox

Labelboxは、画像、動画、テキストなどのデータにアノテーションを付与するためのプラットフォームです。AIモデルの学習に必要な教師データを効率的に作成・管理することができます。Webブラウザ上で利用でき、高精度なアノテーション作業を実現する様々な機能が備わっています。

【参考】:Labelbox | Data-centric AI Platform for Building & Using AI

Amazon SageMaker Ground Truth

機械学習モデルのトレーニングデータセットを効率的に作成・管理するためのAWSのフルマネージドサービスです。豊富なワークフローテンプレートによる迅速なデータセット作成から、画像、テキスト、音声などのデータのラベル付けまで行えます。

【参考】:Amazon SageMaker Ground Truth を使用してデータにラベルを付ける|Amazon SageMaker

Google AI Data Labeling Service

機械学習モデルの学習に必要なデータにラベルを付与するための、Googleが提供するクラウドサービスです。画像、動画、テキストなどの様々なデータに対応しており、高精度なラベル付けを実現する機能が備わっています。

【参考】:データラベルの手順の作成  |  Data Labeling Service  |  Google Cloud

ファインチューニングでChatGPTをさらに活用しよう

img_gptfinetuning_13

ここまでファインチューニングとは何か、メリットとデメリット、実行手順などについて解説しました。ファインチューニングは、既存のAIモデルを特定のタスクやデータセットに適応させるための重要なプロセスです。

ファインチューニングを利用することで適切なデータ収集とモデルの初期化、学習と評価を経て、特定のニーズに応じた適格なモデルを作成することができます。

これにより、ビジネス領域ではAIの本格的な活用が可能になります。例えば、社内FAQチャットボットの構築や、カスタマーサポートチャットボットの開発、医療や金融分野などでの活用策が考えられます。ぜひファインチューニングに関するスキルを磨き、AIの有効活用を図ってみましょう。

気になる人のXをフォローしよう!
公式LINE
公式YouTube
マイナビITエージェント

編集部オススメコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

お問い合わせ・情報提供
はじめて転職される方へ
SE・システムエンジニア(IT/通信/インターネット) 求人一覧

編集部おすすめコンテンツ

Sponsored
【年収±診断】6つの質問に答えて、真の市場価値をチェック!
マイナビITエージェント
Sponsored

アンドエンジニアへの取材依頼、情報提供などはこちらから

Powered by マイナビ AGENT