日々、技術のアップデートや新たなサービスの登場が報道され、話題に事欠かないAI。特に生成AIの進化は著しく、社会に大きなインパクトを与えている。ただし、課題もある。幅広いデータで学習を行ったAIは汎用性には優れるが、特定のタスクに対して力不足になることがあるのだ。そこで関心を集めているのが「ファインチューニング」と呼ばれる手法である。
本稿では、ファインチューニングの概要とともに、メリットや注意点、考えられる活用シーンなどについて分かりやすく解説する。
ファインチューニングとは何か
ファインチューニングとは、すでにトレーニング済みの機械学習モデルを特定のタスクに対して最適化するため、再訓練を行うプロセスのことだ。画像認識や音声認識、自然言語処理など、あらゆるAIに応用できる手法として注目を集めている。
ファインチューニングには大きく分けて、「出力形式は変わらないが質が向上するやり方」と「出力形式そのものを特定のタスクに合わせて変更するやり方」の2種類が存在する。ただし、この定義には議論の余地があるため、その点については後述する。
出力形式は変わらないが質が向上するケース
送られてきたメールの内容がスパムかどうかを判定し、スパムであれば迷惑メールフォルダに自動的に入れる機能は、多くのメールサービスが持っている。この「スパム判定」に生成AIを活用するケースを例に考えてみよう。そもそもスパム判定に生成AIを用いるべきかという疑問はあるが、便宜上、スパム判定の結果を文章で回答するものとする。
まず、出力形式を変えずに出力の質を向上させるファインチューニングを行ったとしよう。この場合、あくまでも質を高めるだけなため、生成AIが「スパムかどうか」についての回答を文章で生成する点は変わらない。ファインチューニングにより回答の質は高まるが、出力形式が変わらないのでハルシネーションを起こす可能性もある。
出力形式そのものを特定のタスクに合わせて変更するケース
では、出力形式そのものを変えるやり方でスパム判定を行うとどうなるか。スパム判定に向いている出力形式として挙げられるのが「二値分類」だ。二値分類とは「はい」か「いいえ」、または「0」か「1」のように、回答を2つに分類して生成する出力形式である。
2つに分類して回答するだけなので、ハルシネーションが起きる可能性はより低くなり、生成の精度は安定する。一方で文章を生成するという本来の出力機能は失ってしまう。
転移学習とファインチューニングの違い
AIの精度を高める方法の中でよく議論されるのが、転移学習とファインチューニングの関係性だ。転移学習とは、簡単に言うと出力に対して新しいレイヤーを付け加えること。前段で紹介した二値分類のように「出力型式そのものを変える」手法が、この転移学習にあたる。注意すべきは、「AIモデルのパラメータをチューニングするかどうか」は転移学習の定義には関係ない点である。パラメータをチューニングしてもしなくても、出力に対して新しいレイヤーを付け加え、出力形式を変更すれば転移学習というわけだ。もっとも、転移学習はファインチューニングありきで活用されることがほとんどである。なぜなら、ファインチューニングなしで転移学習を行った場合、出力の精度が低く、ほぼ使い物にならないからだ。
一方で、ファインチューニングとは「AIモデルのパラメータをチューニングすること」を指す。出力形式を変更するかどうかはファインチューニングとは無関係だ。出力形式を変更してもしなくても、モデルのパラメータをチューニングしているなら、それは「ファインチューニングを行った」と言える。
ただし、IBMの見解では「モデルのパラメータをチューニングしていても、レイヤーを追加した場合はファインチューニングとは呼べない」とされているなど、転移学習とファインチューニングの定義については絶対的な正解はなく、議論の余地がある点には留意されたい。
RAGとファインチューニングの違い
RAG(Retrieval-Augmented Generation)とファインチューニングは、どちらもモデルのパフォーマンスを向上させるための手法だが、アプローチが大きく異なる。
ファインチューニングは既存のモデルを特定のタスクに合わせて再訓練する手法だが、RAGはモデルと外部データベースを接続し、データベースを検索して得られたデータを組み合わせ、プロンプトを再生成する手法だ。
RAGよりもファインチューニングの方が難度が高く、より専門的な知識が必要となるため、現状、一般的にはRAGが使用されることのほうが多い。
プロンプトエンジニアリングとファインチューニングの違い
プロンプトエンジニアリングもファインチューニングと同じく、出力結果の精度向上を目的として行われる手法である。もっとも、プロンプトエンジニアリングはモデルへの入力(プロンプト)を工夫し、出力を最適化するため、モデルの再訓練を行ったりするわけではない。なお、RAGを使う場合もプロンプトエンジニアリングを実施するため、RAGもプロンプトエンジニアリングの一種とも言えるだろう。
ファインチューニングのメリットと課題
ファインチューニングには大きなメリットがある一方で、課題も存在する。それぞれをきちんと理解した上でほかの施策と比較し、実施の有無を検討したい。
ファインチューニングのメリット
ファインチューニングのメリットは、特定のタスクに対する出力のパフォーマンスを高められることだ。また、既存のモデルをベースにできるため、一からLLM(Large Language Model:大規模学習モデル)をつくるのに比べれば低コストで実現できる。
ファインチューニングの課題
ファインチューニングの課題として挙げられるのが、「必ずしも精度が向上するとは限らない」ことだ。ファインチューニングのために用意したデータの品質が低い場合や、特定のタスクに特化しすぎた場合などに後述する「オーバーフィッティング(過学習)」と呼ばれる現象が発生した場合、パフォーマンスはむしろ低下するリスクがある。ファインチューニングを成功させるには品質の高いデータが必須だが、用途や分野によっては高品質な再訓練用データを入手するのが困難なケースもあるだろう。
また、先にファインチューニングのメリットとして低コストで実現できる点を挙げたが、それはあくまでも「一からLLMをつくるのに比べれば」の話であり、実行には大量の計算リソースを消費する。そのため、適切なハードウェアを用意する必要があり、想定以上にコストがかかることもある。
ファインチューニングの手順
ここからは、実際にファインチューニングを行う際の具体的な手順について解説していこう。大まかなステップとしては「データの準備」「データの前処理」「モデルの再訓練」「結果の評価」がある。
データの準備と注意点
まず必要なのはデータの準備だ。ファインチューニングに使用するデータは、AIで解決したい特定のタスクに関連するものでなければならない。例えば、スパム判定タスクであれば、どのような文章がスパムなのか、あるいはスパムではないのかといったデータが求められる。あるいは検品などの画像認識タスクであれば、検品する製品の画像データなどが必要となる。
また、データは3種類用意する必要がある。
まず「学習データ」だ。これはモデルの再訓練に使用するデータである。次に「検証データ」。これはモデルを再訓練する最中に精度を評価するためのデータである。最後に「テストデータ」。これはモデルが学習を終えた後、最終的な精度を評価するためのデータである。
なぜ精度の評価を学習の途中でも行う必要があるのか、疑問に思うかもしれない。その理由は、学習データに合わせて学習しすぎることで汎化性能のない状態になってしまう可能性があるためだ。
LLMのようにパラメータ数が多いモデルの再訓練を行うと、モデルが学習データに適合しすぎて、学習データ外の生成精度に悪影響が出ることがある。これを「オーバーフィッティング(過学習)」と呼ぶ。学習中にオーバーフィッティングしていないかどうかを確認するために、検証データを用いて検証する作業が必要になるのだ。
注意すべきは、学習データ、検証データ、テストデータの内容に重複があってはならないということ。重複があると、後に行う再訓練の最中と訓練後の検証がうまくいかない可能性が生じてしまう。本来、オーバーフィッティングの検証やLLMの性能評価にはLLMが学習していない(未知の)データで確認する必要があるが、データに重複があった場合、LLMは答えをカンニングした状態になってしまうというわけだ。
データの前処理
データを準備したら、次に行うのはデータの前処理だ。これは、AIモデルがデータを正確に学習できるような型式に整えるステップである。例えばテキストデータであれば誤字の修正、不要な空白や特殊文字、表記の揺れの除去といった作業を行う。画像データの場合は、画像のサイズを変更して揃えたり、ノイズを除去したりといった処理を行うことが多い。ただし、実際にどのような前処理をするかはデータやタスクに依存して異なる。
さらに、データの分割とシャッフリングを行う。シャッフリングとはデータをランダムに並び替えること。というのも、一般的に、収集したデータは何らかの規則や順序に従って並んでいることが多いからだ。モデルは与えられたデータを頭から順番通りに学習していく。トランプの札を想像するとわかりやすいだろう。購入したばかりのトランプは数字やマークが規則的に並んでいて、そのまま配ると偏りが出てしまう。偏りを防ぐには一度トランプをシャッフルする必要がある。ファインチューニングもそれと同じで、データがランダムに並ぶようにシャッフルしておくことで生成結果の偏りを防止するのだ。
モデルの再訓練
必要なデータが整い、前処理も完了したら、いよいよモデルの再訓練を行う。既存モデルのパラメータを初期設定として使用し、新しいデータで再訓練を実行する。このステップで重要なのは、「ハイパーパラメータ」の調整だ。ハイパーパラメータとは、AIモデルのパラメータを調整するための学習設定のことを指す。最適なハイパーパラメータを見つけるには、トライアル&エラーを繰り返す必要がある。
この再訓練中に、前述した検証データを使用して性能の評価を行う。モデルがオーバーフィッティングしないよう、検証データに対して最も良い結果が得られたところで学習をストップさせるわけだ。
結果の評価
再訓練が完了したら、最後にファインチューニングの結果を評価する。正しく評価するためには、事前に評価指標を定めておく必要がある。その上で、あらかじめ用意しておいた評価用のテストデータを用いて出力を行い、結果を評価する。改善点はないか、ファインチューニングのやり直しが必要かどうか、学習データをどう調整すればいいのかなどを分析し、精度の向上を図るのだ。このとき、オーバーフィッティングがないかどうかについても再度検証する。
なお、代表的な評価指標として挙げられるのは「Precision(適合率)」と「Recall(再現率)」だ。Precisionはスパム判定などに使用される評価指標で、「少数でもいいので、当たっているものを見つけ出す」という考え方に基づく。スパムではないものをスパムだと判定されると困るため、数よりも確実性を優先するわけだ。
一方、Recallは画像によるがん診断などに使われる指標で、「ミスはあるかもしれないが、とにかく疑わしきものを多く拾い出す」という考え方に基づく。「本当にがんの画像かどうかは後から医師が診断できるので、まずは疑わしい要素を全て拾い上げたい」といった場合に用いられる。
こうした評価指標に基づいて評価したら、最後にエラー分析を行い、モデルが誤った原因を特定する。その原因から、新しい学習データの追加やデータ前処理の改善などを行い、モデルの品質をさらに向上させていくのである。
ファインチューニングの活用シーン
実際、どのような用途でAIを活用する際にファインチューニングは有効なのか。その威力が発揮され得る活用シーンを紹介しよう。
チャットボットやカスタマーサポート
自然言語処理を用いたAIのファインチューニングで効果的なのが、チャットボットやカスタマーサポートなどの精度向上だ。既存のLLMをそのまま使用すると汎用的な回答の出力回数が多くなり、実用性に欠けてしまう。自社のサービス内容により適合した回答をさせるために、ファインチューニングを用いるのだ。
ただし、現在のところ、チャットボットやカスタマーサポートの精度を高める方法としては、ファインチューニングよりも比較的手軽に扱えるRAGを用いるほうが一般的である。
医療診断
医療の世界でもAIを用いた診断が進んでいる。例えば、特定の病変や症状の検出を目的として、医療画像データをスクリーニングするプロセスに画像認識モデルを使用するのはその一例である。従来は人が全て目視で行っていた作業をAIに任せることで、作業効率を向上させようというわけだ。ファインチューニングによってAIによる診断の精度を高められれば、医療現場における作業効率はさらに改善できるだろう。
コールセンター
音声認識の世界でもファインチューニングの活用が期待される。例えばコールセンターなら、既存の音声認識モデルをコールセンターの会話データで再訓練し、方言や専門用語の認識精度を高めていくといったことが考えられる。
顧客のレビュー分類
いわゆる「分類」においても、ファインチューニングは役立つ。例えば、顧客から寄せられた意見やレビューなどを高精度でポジティブなものとネガティブなものに分類できれば、迅速に次のアクションの実行が可能だ。
自動運転技術
研究開発が進む自動運転分野でもファインチューニングの活用が期待できる。例えば、道路状況や天候条件のデータなどを使って画像認識モデルを再訓練すれば、車両検知や歩行者認識の精度向上が可能となる。
農業分野
すでに農業分野では、ドローンで撮影された畑の画像などを分析することで、病害虫の早期検知や作物の生育状況の把握などが可能になっている。ファインチューニングにより、こうした画像認識の精度を高めていくことで生産性の向上が期待できる。
ファインチューニング技術の今後は?
本稿で説明してきた通り、ファインチューニングは、特定のタスクに対して既存のモデルを最適化する技術だ。出力精度の向上が期待できる一方で、質・量ともに十分なデータの準備とその前処理が必要だったり、オーバーフィッティングのリスクがあったりと、障壁となる課題も多い。専門的な知識を持ったエンジニアも決して多くはなく、RAGなどに比べるとハードルの高い手法と言えるだろう。
ただし、今後エッジでAIを活用する時代が到来すれば、ファインチューニングのニーズが高まる可能性はある。通常、エッジで動くような小さなモデルはあまり性能が良くないことが多いため、ファインチューニングで精度を上げようという流れになることが考えられるからだ。今でこそ、ハイレベルな手法としてやや遠巻きに見てしまいがちだが、今後、もっと身近でファインチューニングが活躍する場が増えていくかもしれない。
AI関連の注目ホワイトペーパー
自動車とその業界を取り巻く環境の変化に、製造ラインはどのようにキャッチアップすべきか?冊子「生成AI最前線 ついに始まるLLMのビジネス活用」を無料提供! AI研究家カナコさんが解説
エッジAIはマイコンで。エッジAI処理、セキュリティ、低消費電力―すべてを高いレベルで実現するマイコンの実力
自己学習型AIによるセキュリティ対策がもたらす強みとは? 脅威の予兆を自動識別、攻撃をピンポイントで自動遮断
AI関連のオススメ記事
RAGで企業は何を実現できるのか? 基礎知識と活用メリットLLMとは? 生成AIとの違いや企業の活用事例を解説
機械学習とディープラーニングの違いを徹底解説
AIと機械学習の違いを理解して、業務効率化や新規事業創出に役立てよう
ローカルLLMのメリット/デメリット、“使いどころ”を分かりやすく解説
AI活用でビジネス変革を実現するには? 押さえておきたい基本と活用事例
AIエージェントの基本を知る - ビジネス活用の可能性と課題とは?