- はじめに
- ファインチューニング(微調整)とは
- ファインチューニング以外のアプローチ(転移学習とフューショット学習(Few-shot Learning))
- Azure OpenAI Serviceのモデル微調整について
はじめに
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": "実はうなぎが大好きじゃ"}]} ・・・