# ファインチューニングと転移学習の違いやChatGPTをPythonでファインチューニングする方法！

> 当サイト【スタビジ】の本記事では、話題のAIで重要なファインチューニングについて解説していきます。ファインチューニングと同じく色々なところで聞かれる転移学習と混同されていることが多いのでそちらについても言及していきます！またPythonを使って実際にChatGPTのファインチューニングも行います。

- URL: https://toukei-lab.com/fine-tuning
- 公開: 2023.06.18 / 更新: 2025.08.01
- サイト: スタビジ（https://toukei-lab.com）

:::talk{who="umatan"}
当サイト【スタビジ】の本記事では、話題のAIで重要なファインチューニングについて解説していきます。ファインチューニングと同じく色々なところで聞かれる転移学習と混同されていることが多いのでそちらについても言及していきます！またPythonを使って実際にChatGPTのファインチューニングも行います。
:::

こんにちは！

データサイエンティストのウマたん([@statistics1012](https://twitter.com/statistics1012?lang=ja))です！

この記事では[AI](/ai-learning)や[機械学習](/machine-learning-study)領域において非常に重要なファインチューニングについて解説していきたいと思います！

ファインチューニングは今後上手くAIと付き合っていく上でぜひ身につけておきたい知識ですのでしっかり理解しておきましょう。

以下の動画でも解説しているのであわせてチェックしてみてください！

::youtube{#xRz9Ku5igC0}

また、以下のUdemyコースでファインチューニングの実装など詳しく解説していますので興味のある方はチェックしてみてください！

:::box
**[【初心者向け】LLMをファインチューニングして独自AIモデルを作ろう！Webページの情報を元に回答できるAIを作ろう！](https://www.udemy.com/course/fine-tuning/?referralCode=11FDCCE331C40F37895C)**

[![](/wp-content/uploads/2025/08/789869f2d8fd0adb5ca7831fb2a22552.jpg)](https://www.udemy.com/course/fine-tuning/?referralCode=11FDCCE331C40F37895C)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>2.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

LLMをファインチューニングして独自のAIモデルを作ってみたいならこのコース！

今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

＼30日以内なら返金無料／

::button[このコースを見てみる]{href="https://www.udemy.com/course/fine-tuning/?referralCode=11FDCCE331C40F37895C"}
:::

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

ファインチューニングというアプローチは以前からあったのですが、[ChatGPT](/gpt)をはじめとした生成系AIのブームで様々なところでよく聞かれるようになりました。

ファインチューニングとはザックリ言うと、「**事前に学習されたモデルに対して手元のデータセットを元に再学習させてモデルのパラメータを調整して特定のタスクに適用させるようなモデルを生成する**」アプローチを指します。

AIの学習には大量のデータセットが必要ですが、<mark>一般にそこまでデータセットを用意するのは難しいことが多いですし、用意できたとしても多大な費用と時間がかかってしまいます。</mark>

そこで元々誰かが用意してくれている事前学習済みモデルを利用して、費用と時間を削減した上で自分の解きたい特定のタスクに合わせたモデルを作成していくのです。

ファインチューニングでは既存モデルのパラメータを調整しますが、一般的には下位層（低レベルな特徴）は固定し、上位層（高レベルな特徴）の一部または全部を再学習します。

![ファインチューニング (1)](/wp-content/uploads/2023/06/06e890459b5f27efb9a590319f41692f.jpg)

例えばニューラルネットワークで日本人の顔を分類するモデルを作ったとしましょう！その際に下位層は顔の輪郭などの一般的な特徴を学習しており、上位層は顔の特定のパーツなどの細かい特徴を学習する場合が多いです。

そしてこのモデルを元にファインチューニングをしてアメリカ人の顔を分類するモデルを作るとしましょう！

この際、下位層で学習した大まかな顔の輪郭などは日本でもアメリカでも同じなのでパラメータを変えずに固定のままでよいでしょう。

<mark>一方で上位層で学習していた顔のパーツなどは日本人とアメリカ人で変わってくる可能性が高いので新しいデータセットでパラメータをチューニングします。</mark>

ファインチューニングはこのようなイメージなんです！

## ファインチューニングと転移学習の違い

それではファインチューニングと同じくよく色んなところで聞かれる転移学習とはどんな手法なのでしょうか？

実はファインチューニングは転移学習の一種の手法であり、転移学習自体は「**他のタスクで得た知識を他のタスクに適用させる**」アプローチ全体を指します。

![転移学習とファインチューニング](/wp-content/uploads/2023/06/1c46f73e1e418089cfe77a2806bc7346.png)

:::talk{who="robotan" side="left"}
え！？転移学習とファインチューニングって同じじゃないの？
:::

:::talk{who="umatan"}
転移学習のアプローチの1つであるファインチューニングの方が色んなところで聞かれるし、転移学習の中でもファインチューニングが最も使われるから転移学習＝ファインチューニングみたいな感じで思われることが多いんだ！
:::

結構分かりにくく違いも曖昧で混乱を招きやすいのですが、、、あくまで転移学習の方が広い概念なのです。

海外のサイトで以下のサイトに転移学習の手法のいくつかが取り上げられています。

:::related
[What Is Transfer Learning? Exploring the Popular Deep Learning Approach.](https://builtin.com/data-science/transfer-learning)
:::

ここではいくつかの手法が取り上げられています。

**1. TRAINING A MODEL TO REUSE IT**

> Imagine you want to solve task A but don’t have enough data to train a deep neural network. One way around this is to find a related task B with an abundance of data. Train the deep neural network on task B and use the model as a starting point for solving task A. Whether you’ll need to use the whole model or only a few layers depends heavily on the problem you’re trying to solve.
>
> If you have the same input in both tasks, possibly reusing the model and making predictions for your new input is an option. Alternatively, changing and retraining different task-specific layers and the output layer is a method to explore.

このパターンは、特定のタスクAを解きたいけどそのタスクのデータを大量に保持していなくて似たようなタスクBのデータなら持っている場合に似たようたタスクBでモデルを作りそのモデルをタスクAを解くのに使う状況です。

これもあるタスクで得た知見を別のタスクに適用させているので転移学習と呼びますが、ファインチューニングは既存モデルを再学習させてパラメータを調整するのでファインチューニングではないことが分かると思います。

**2. USING A PRE-TRAINED MODEL**

> The second approach is to use an already pre-trained model. There are a lot of these models out there, so make sure to do a little research. How many layers to reuse and how many to retrain depends on the problem.
>
> This type of transfer learning is most commonly used throughout deep learning.

既存の訓練モデルを使うということで、これがいわゆるファインチューニングですね！！

まぁ基本はファインチューニングを使うのでファインチューニングだけ覚えていればよいと思うんですが、一応転移学習とファインチューニングは違う定義のものであり転移学習の一部がファインチューニングであるということをおさえておきましょう！

## ChatGPTをPythonでファインチューニングしてみよう！

それでは、最後にChatGPTをPythonでファインチューニングする方法について見ていきましょう！

正確にはChatGPTのベースとなっているGPTのモデルをファインチューニングする方法になります。

まずはOpenAIのAPIを取得する必要があります。

[OpenAIのサイト](https://platform.openai.com/overview)からsign upしてください。

登録できたら右上のプロフィールの箇所からView API keysを選びましょう。

![OpenAI APIKey](/wp-content/uploads/2023/06/API-Key-1.jpg)

そして、API Keysを選択しCreate new secret keyを押下して自分のAPIキーをメモしておいてください。

これでOpenAIへの登録とAPIの取得は完了です。

それでは実際に[Python](/python-learn)を使っていきましょう！ご自身のPCでPythonの環境が整っていない場合は[Google Colab](/google-colaboratory)などを使うとよいでしょう！

まず今回ファインチューニングする際にAIに食わせる学習データを用意していきます。

以下のようなJSON形式で用意してあげてください。

```text
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
{"prompt": "<prompt text>", "completion": "<ideal generated text>"}
...
```

プロンプトと回答が対になるようなJSON形式のファイルです。

今回は以下のようにシンプルなプロンプトと回答をJSON形式で用意しました。

```text
{"prompt": "スタビジとはどんなサービスですか？", "completion": "スタビジは、ビジネスに活かせるデータサイエンスに関して実務を通して学んだことを発信するメディアです。データサイエンスって本当は面白いんだよ！ってことを知ってもらうためにどこよりも分かりやすく発信しています！"}
```

準備が完了したのでPythonでコードを書いていきましょう！

まずはライブラリをインポートし、先ほど取得したAPIキーをセットします。

```python
import openai
import json

openai.api_key = "<OpenAIのAPIキー>"
```

続いて先ほど用意したJSON形式のファイルをインポートしていきます。

```python
path = "<JSONファイルのパス>"
training_file = openai.File.create(file=open(path, "rb"), purpose="fine-tune")

print(training_file)
```

続いて

```python
# ファインチューニング
FineTune = openai.FineTune.create(training_file = training_file.id, model = "davinci")
```

これでファインチューニングは完了です。

あとはファインチューニングの結果を待つだけ。以下のように記載してあげるとファインチューニングの経過が出力されます。

```python
import datetime

job_id = FineTune["id"]

events = openai.FineTune.stream_events(job_id)
for event in events:
  print(f'{datetime.datetime.fromtimestamp(event["created_at"])} {event["message"]}')
```

以下のように出力されます。

![ファインチューニング経過](/wp-content/uploads/2023/06/4b2dba76e29a75e50a0bf9bb6c531c4c.png)

ここで得られたUploaded modelを指定して呼び出してあげるとファインチューニング後のモデルにプロンプトを投げて回答を得ることができます！

```python
response = openai.Completion.create(
  model="<ファインチューニング後のモデル>",
  prompt="スタビジとはどんなサービスですか？"
)

print(response['choices'][0]['text'])
```

非常に簡単にファインチューニングが出来るのがわかったと思います！ぜひ自分のデータを色々と食わせてファインチューニングを試してみましょう！

## ファインチューニング　まとめ

ここまでで、AIを学ぶ上でおさえておきたいファインチューニングについて見てきました！

ちなみにファインチューニングと一緒に比較されることの多いzero shot, one shot , few shot learningについては以下の記事を参考にしてみてください！

<https://toukei-lab.com/few-shot-learning>

冒頭でもお伝えしましたが、以下のUdemyコースでファインチューニングの実装など詳しく解説していますので、さらに深く知りたい方はチェックしてみてください！

:::box
**[【初心者向け】LLMをファインチューニングして独自AIモデルを作ろう！Webページの情報を元に回答できるAIを作ろう！](https://www.udemy.com/course/fine-tuning/?referralCode=11FDCCE331C40F37895C)**

[![](/wp-content/uploads/2025/08/789869f2d8fd0adb5ca7831fb2a22552.jpg)](https://www.udemy.com/course/fine-tuning/?referralCode=11FDCCE331C40F37895C)

<table class="table">
<tbody>
<tr>
<th>【時間】</th>
<td><span>2.5時間</span></td>
</tr>
<tr>
<th>【レベル】</th>
<td><span>初級</span></td>
</tr>
</tbody>
</table>

LLMをファインチューニングして独自のAIモデルを作ってみたいならこのコース！

今なら購入時に「NZWCLGF4BTZENY6E」という講師クーポンコードを入れると90%オフ以上の割引価格になりますのでぜひご受講ください！

＼30日以内なら返金無料／

::button[このコースを見てみる]{href="https://www.udemy.com/course/fine-tuning/?referralCode=11FDCCE331C40F37895C"}
:::

##

最近話題のAIについてより詳しくは当メディアが運営するスタアカの以下のコースを是非チェックしてみてください！

:::box
**[・](https://toukei-lab.com/achademy/?sfwd-courses=llm)[スタアカ「13.大規模言語モデル（LLM）・生成系AIコース」](https://toukei-lab.com/achademy/?sfwd-courses=llm)[\
・](https://toukei-lab.com/achademy/?sfwd-courses=llm)[スタアカ「プロンプトエンジニアリングコース」](https://toukei-lab.com/achademy/?sfwd-courses=prompt-engeneering)**
:::

スタアカは業界最安級のAIデータサイエンススクールです。

![スタアカトップ](/wp-content/uploads/2021/11/2bc9f22d0f8dfe24080b83884b7a5ec6-1024x576.jpg)

<table class="table">
<tbody>
<tr>
<th>【価格】</th>
<td>ライトプラン：1280円/月<br>
プレミアムプラン：149,800円</td>
</tr>
<tr>
<th>【オススメ度】</th>
<td><span class="stars" role="img" aria-label="5点中5点" data-value="5"></span></td>
</tr>
<tr>
<th>【サポート体制】</th>
<td><span class="stars" role="img" aria-label="5点中4点" data-value="4"></span></td>
</tr>
<tr>
<th>【受講形式】</th>
<td>オンライン形式</td>
</tr>
<tr>
<th>【学習範囲】</th>
<td>データサイエンスを網羅的に学ぶ<br>
実践的なビジネスフレームワークを学ぶ<br>
SQLとPythonを組みあわせて実データを使った様々なワークを行う<br>
マーケティングの実行プラン策定<br>
マーケティングとデータ分析の掛け合わせで集客マネタイズ</td>
</tr>
</tbody>
</table>

:::box
**・BigQuery上でSQL、Google Colab上でPythonを使い野球の投球分析**\
**・世界最大手小売企業のウォルマートの実データを用いた需要予測**\
**・ビジネス・マーケティングの基礎を学んで実際の企業を題材にしたマーケティングプランの策定\
・Webサイト構築してデータ基盤構築してWebマーケ×データ分析実践して稼ぐ**
:::

＼今すぐ試す／

::button[スタアカの受講はこちら]{href="https://toukei-lab.com/achademy/"}

<mark>**AIデータサイエンスを学んで市場価値の高い人材になりましょう！**</mark>

データサイエンスやAIの勉強方法は以下の記事でまとめています。

<https://toukei-lab.com/data-scientist>

<https://toukei-lab.com/ai-learning>