コンセプト解説

ファインチューニング

プロンプトを工夫して資料も渡したのに、モデルが思ったとおりに動いてくれない。そんなときは、自分たちのデータでモデルそのものをもう少し鍛えます。これがファインチューニングです。データの準備のしかた、学習の進め方、気をつけたい落とし穴、そしてどんなときにファインチューニングを選ぶのかを、順番に見ていきましょう。

01

モデルそのものを鍛える

ある会社が、コールセンターの応対記録を要約するAIを作ろうとしています。要約は会社のフォーマットに従う決まりで、「用件 / 対応 / フォロー」の3項目に、社内で使っている言い回しと用語で書かなければなりません。学習済みのLLMにそのまま要約を頼むと、内容は悪くないのですが、フォーマットや言い回しが毎回少しずつ違ってしまいます。

直し方は大きく3つあります。プロンプトにフォーマットの説明と例を書き足す「プロンプトエンジニアリング」、必要な資料を検索して付け足す「RAG」、そしてモデルそのものを追加で学習させる「ファインチューニング」です。下の図で方法を切り替えて、どこが変わるのかを見てみましょう。

方法
変わったところ
モデルの重み

やること:コールセンターの応対記録を会社のフォーマット(用件 / 対応 / フォロー)で要約する

プロンプトは短いままなのに、モデルの中の数値が変わりました。会社のフォーマットで要約するやり方が、モデルそのものに身につきました。

最初の2つは、モデルに送るテキストを変えるだけです。モデルの中の数値、つまり重みはそのままです。ファインチューニングは逆に、この重みを変えます。事前学習を終えたモデルを出発点にして、自分たちのデータでもう少しだけ学習させ、数値を調整するのです。ゼロからモデルを作るよりずっと少ないデータと費用で、目的の作業を得意にできます。経験のある人を採用して、自社のやり方だけを教えるのに近いイメージです。

モデルがどうやって学習するのか、重みとは何なのかは、「LLMのしくみ」の学習の章で詳しく説明しています。

試験でいちばんよく問われる区別です。重みを変えるならファインチューニング、変えないならプロンプトエンジニアリングかRAG。「元のモデルの重みを変更せずに精度を上げる方法」を選ぶ問題なら、ファインチューニングは答えになりません。ここが引っかかりやすいところです。

問題文にこんな表現があれば → これを選ぶ

  • “モデルの重みを調整する”ファインチューニング
  • “事前学習済みモデルを自社データで追加学習する”ファインチューニング
  • “元の重みを変更せずに精度を上げる”プロンプトエンジニアリング・RAG(ファインチューニングではない)

重みを変えるには、何を手本にして変えるのかが必要です。ファインチューニングの結果は、ほぼすべて学習データで決まります。

02

学習データを用意する

いちばんよく使われるファインチューニングは、入力と正解をペアにした例で学習します。この会社なら、応対記録1件と、それをフォーマットどおりにきちんと書いた要約1件で、例1件になります。例はふつう、1行に1件ずつ書いたファイル(JSONLなどの形式)で用意します。

{"input": "お客さまから、料金が二重に引き落とされたとの問い合わせ…", "output": "用件:二重請求 / 対応:返金手続き済み / フォロー:3日以内に確認のSMS"}
{"input": "配送先の住所を変更したいとの問い合わせ…", "output": "用件:住所変更 / 対応:出荷前に変更済み / フォロー:なし"}

モデルはこうした例を見て、「この入力にはこう答える」を身につけます。だからこそ、例にまぎれたミスまでそのまま真似してしまいます。下の図で、集めてきた例を整理してみましょう。

問題のある例
形式ちがい, 重複, 個人情報, 誤った答え
分けた結果
まだ分けていない

例1件 = 応対記録(入力)+ フォーマットどおりの要約(正解)

集めた14件のうち4件に問題があります。形式がちがう、同じ例が2回入っている、要約がまちがっている、お客さまの個人情報がそのまま残っている、の4つです。

良い学習データの条件

  • 形式がそろっている:正解のフォーマットが例ごとにバラバラだと、モデルもバラバラな書き方を覚えます。
  • 正解が正しい:まちがった要約が混ざると、まちがったやり方まで覚えます。量より質が大切です。
  • 本番の入力に近い:実際に届く応対記録と、長さや種類が似ている例にしましょう。
  • 重複がない:同じ例が何度も入っていると、その例だけを必要以上に覚えてしまいます。
  • 機密情報を消してある:モデルは学習データを覚えて、別の人にそのまま出してしまうことがあります。名前や電話番号などの個人情報は、学習の前に削除するかマスキングします。

どれくらいの量が必要でしょうか。作業によりますが、フォーマットを教える程度なら、よくできた例が数百〜数千件あれば効果が出ることが多いです。また、集めた例の一部は学習に使わずに取っておきます。これを検証データといい、学習がうまくいったかを、モデルが一度も見ていない例で確かめるときに使います。使い方は次の章で見ていきます。

問題文にこんな表現があれば → これを選ぶ

  • “入力と模範解答をペアにしたデータ”指示チューニング用のラベル付きデータ
  • “1行に1件ずつ例を書いたファイル”JSONL形式
  • “学習に使わずに取っておくデータ”検証データ
  • “学習データにお客さまの名前や電話番号が含まれている”個人情報を削除する

データがそろったら、いよいよ学習です。その前にいくつかの値を決めておく必要があり、ここを外すと学習がうまく進みません。

Pro限定

ここまでは無料で読めます

残りの5章はPro会員向けです。各章に3D図解と「問題文にこんな表現があれば」の整理が続き、最後の章では実際に解いて確かめられます。

  1. 03エポック・学習率・過学習
  2. 04PEFTとLoRA
  3. 05目的別の学習方法
  4. 06ファインチューニングの落とし穴
  5. 07ファインチューニングを選ぶとき

広告

PasslyExam

概念をつかんだら、次は試験形式の問題で確かめましょう

PasslyExamは、各資格の出題範囲に合わせて作成したオリジナルの練習問題・解説・本番形式の模擬試験を提供しています。正解の選択肢がなぜ正しく、似た選択肢がなぜ誤りなのかまで解説します。登録すると毎日無料で練習問題に取り組めます。