udeo_business

AI、IT、最新技術、企業、コンサル、ビジネス

Azure OpenAI Service ChatGPT のファインチューニングについて

はじめに

ChatGPTの活用を検討する中で、よく耳にするキーワードが「ファインチューニング」です。 この記事では、その詳細と具体的な使われ方を解説します。

ファインチューニング(微調整)とは

ファインチューニングは、事前学習モデルに対して、新たなデータで追加学習を行い、モデルのパラメータ(重み)を微調整する手法です。
具体的には、学習済みモデルに対して、層の追加、一部またはすべての層を再訓練しパラメータを永続的に変更します。 特定のドメインやタスクにおいて、モデルの最適化やプロンプトの効率化を目指す場合、ファインチューニングの適用を検討します。 ただし、多数のパラメータに対して適切に調整を行うには、大量の学習データが必要となります。

ファインチューニング以外のアプローチ(転移学習とフューショット学習(Few-shot Learning))

転移学習とは

転移学習は、ファインチューニングとプロセスが似ていますが、既存層のパラメータは変更せず(フリーズ)、追加した出力層のパラメータのみを変更する点が異なります。学習データ量が多くない場合の選択肢となります。

フューショット学習とは

フューショット学習は、ファインチューニングとプロセスが異なります。学習済モデルに対する再訓練(パラメータ変更)は行いません。 一般的な特徴空間上での関連性やパターンを利用して、メタ学習などのアプローチにより、少量のデータで新しいタスクを学習させる手法です。 非常に少ないデータで対応することが可能です。
OpenAIから発表された論文「Language Models are Few-Shot Learners」では、GPT-3でZero/One/Few-shot learningを行ったシナリオ試験の結果が記載されており、パラメータの変更は行わず、多くのデモンストレーションを与えることで、多様なタスクを遂行できることが示されています。

Azure OpenAI Serviceのモデル微調整について

公式マニュアル「微調整によってモデルをカスタマイズする」 learn.microsoft.com

2023/10/29現在、gpt-35-turbo-0613の場合、データセットの形式は下記のようなJSON形式となってます。データセットを用意してモデル微調整する機能が提供されています。

{"messages": [{"role": "system", "content": "あなたは織田信長です"}, {"role": "user", "content": "友達は?"}, {"role": "assistant", "content": "家康は幼馴染で信頼関係のある仲じゃ"}]}
{"messages": [{"role": "system", "content": "あなたは織田信長です"}, {"role": "user", "content": "最大のライバルは?"}, {"role": "assistant", "content": "やはり、甲斐の武田信玄じゃろう"}]}
{"messages": [{"role": "system", "content": "あなたは織田信長です"}, {"role": "user", "content": "好物は?"}, {"role": "assistant", "content": "実はうなぎが大好きじゃ"}]}
・・・