ファインチューニングとは 応用分野からプロセス、発展まで
2024.10.1
構 成
株式会社Laboro.AI リードマーケター 熊谷勇一
概 要
既存のリソースを活用しつつAIモデルの効率と精度を向上させられる手法であるファインチューニングについて、その重要性や応用分野、実施のプロセスなどについて解説します。なお本コラムは、当社の代表取締役COO兼CTOの藤原弘将と、機械学習エンジニアの計6人が執筆した書籍『今日から使えるファインチューニングレシピ AI・機械学習の技術と実用をつなぐ基本テクニック』(オーム社刊)の一部を抜粋・編集したものです。
目 次
・ファインチューニングとは
・ファインチューニングの重要性
・事前学習済みモデルの役割
・モデル共有サービス
・応用分野
・画像処理
・自然言語処理
・生成AI
・強化学習
・ファインチューニングのプロセス
・事前学習済みモデルの選択
・データの準備と前処理
・実行方針の検討と実行
・発展的な話題
・効率化
・LoRA
・Prefix Tuning
・Prompt Tuning / P-Tuning
・継続的学習
・EWC
・ER
・RAG
ファインチューニングとは
ファインチューニングは訳すならば「微調整」で、特に深層学習において、大規模データで事前に訓練された事前学習済みモデルを、別のデータセットを用いて再学習することで、特定のタスクやドメインに特化させる手法です。既存の知識を活用しつつ新しいタスクに対する効率と精度を大幅に向上させられるとも言えます。
OpenAI 社によって開発されたChatGPT は、公開されているウェブサイトや書籍、新聞、雑誌などのデータで学習されています。例えば、ある会社の非公開情報について返答するチャットボットをつくりたい場合、ChatGPTをそのまま活用するだけでは実現が難しいので、その会社の内部情報などでファインチューニングすることで実現できます。
ファインチューニングの重要性
特定のドメインやタスクに特化したデータの収集は、時間とコストの両面で困難な場合が多く、現実のタスクに対するAI の適用を難しくしています。しかし、ファインチューニングで事前学習済みモデルを活用することで、精度の高いモデルを構築することが可能です。データの効率が飛躍的に高まり、より効果的・効率的なAI ソリューションの構築が実現します。
ファインチューニングには以下の四つのメリットが見いだせます。
一つ目は「特定のドメインへの適応」で、汎用的なモデルを特定のドメインに適応させる点です。例えば、医療分野や金融分野など高い専門知識が求められるでも、事前学習済みモデルをファインチューニングすることで、限られたリソースで高い精度を持つ専門的なモデルを効率的に構築することができます。
二つ目は「特定のタスクへの適応」です。特定のタスクに事前学習済みモデルをファインチューニングすることで、ベースの事前学習済みモデルの特長を活かしつつ、特定のタスクに適切に対応させられます。例えば、質問応答タスクでは、文章を理解する能力は事前学習モデルに頼り、ファインチューニングで適切な回答を回答データセットから抽出する能力のみを学習することで、効率的に高精度なモデルが実現できます。
三つ目は「開発サイクルの高速化」で、モデルの開発サイクルを大幅に短縮させられる点です。機械学習済みを用いた新しいアプリケーションやサービスを迅速に市場に投入したい場合、事前学習済みモデルを少ないデータでファインチューニングすることで、開発初期段階でのプロトタイプの開発速度を上げられ、初期投資を抑制しつつ短期間でPoC(Proof of Concept、概念検証)を実施できるようにもなります。
四つ目は「計算リソースの節約」です。ファンチューニングでは特定のタスクや新しいデータセットに適応するための追加学習だけで済み、大幅に計算リソースを節約できます。これにより、大規模なインフラ投資をすることなく、技術的な進歩を享受できます。
五つ目は「低リソース言語」への対応です。英語やスペイン語、中国語などを除く多くの言語では、機械学習に利用可能な学習データセットが少ないため、高精度なモデルの構築が困難です。しかし低リソース言語でも、英語などの事前学習済みモデルを使用し、入手し得る少量のデータでファインチューニングすれば、高品質なモデルを構築できます。
事前学習済みモデルの役割
ファインチューニングにおける事前学習済みモデルの重要な役割は二つあります。一つ目は、幅広いデータに対して、さまざまなタスクに適応するために必要な基礎的な理解力を提供することです。事前学習済みモデルは、通常、大量のデータと計算リソースを投入して学習されます。例えば画像識別においてはImageNet と呼ばれる1000 万枚を超える大規模学習データセットを用いて学習された事前学習済みモデルがよく使われます。自然言語処理では、BERT(Bidirectional Encoder Representations from Transformers)などに代表される教師なし自然言語処理モデルが知られています。
もう一つの重要な役割は、モデルの収束速度や最終的な性能に大きな影響を与えるパラメータの初期値を提供することです。事前学習済みモデルはすでに学習されたパラメータを持っているため、ファインチューニングでこれを利用でき、モデルは迅速に収束しします。また、少量のデータしか利用できない場合でも、この初期値が過学習を防ぎ、モデルの汎化性能を高めるのに役立ちます。
モデル共有サービス
ファインチューニングには事前学習済みモデルと学習プログラムが不可欠で、その過程で重要な役割を果たすのがモデル共有サービスです。モデル共有サービスとは、広範囲にわたるタスクを学習済みのモデルを無料で提供するサービスのことです。モデルをゼロから訓練することなく、ファインチューニングに開発リソースを集中させられます。
特に、Hugging Face と呼ばれるモデル共有サービスが中心的なプラットフォームとなっています。その特長の一つは、パラメータだけでなく、学習プロセスに関する情報も提供していることです。報告済みの研究結果を他者が再現しやすく、研究の透明性と信頼性を保証しやすくなるほか、既存のパラメータをもとに新しいタスクに適応させられ、開発スピードを大幅に向上させられます。
応用分野
ファンチューニングが応用されている四つの分野と、それぞれの代表的な事前学習済みモデルを紹介します。
画像処理
画像処理における最も基本的なタスクは画像識別で、入力画像の中に何が写っているかを一つ答えるというタスクです。前述のImageNet データセットを使って学習したモデルがさまざまな深層学習のフレームワークに標準的に実装されています。
画像識別の発展形とも言えるのは、物体検出やセマンティックセグメンテーションです。前者は画像の中に写っているものの名前とその領域を四角形などで検出するタスクで、後者は画像の中の写っているものをピクセル単位で色分けするタスクです。特に物体検出では、学習するためのソースコードと学習済みモデルがセットになったDetectron2、MMDetection などのツールキットが複数公開されていて、非常に簡易に利用できます。
なお、特にファインチューニング時の追加学習データ量が少ない場合に、過学習を防ぐ効果を狙って、事前学習済みモデルの一部または全部のパラメータを固定し、固定していない部分のみを再訓練することがあります。
物体検出についてはこちらもご覧ください。
物体検出【ビジネス成長のためのAI用語】
自然言語処理
自然言語処理では、大規模なデータから教師なし学習を行った事前学習済みモデルが広く使われていることが特徴です。例えばBERT では、学習データの文中にある一部の語をマスクしてそれを予測する学習方法と、与えられたテキストの続きを予測する学習方法を採用して、約33 億語にもわたる大量のテキストデータから教師ラベルなしで学習しています。
このBERT は、さまざまなタスクに柔軟に適用できることが特長です。以降、RoBERTa、ALBERT、DistilBERT などの改良モデルと、それらを使って各言語やタスクに特化した事前学習済みモデルが開発されたことで、BERTは自然言語処理の標準的なモデルになりました。さらに、OpenAI 社が開発したGPTシリーズにより、処理能力は飛躍的に発展しました。
自然言語処理のファインチューニングについてはこちらもご覧ください。
自然言語処理におけるファインチューニング【ビジネス成長のためのAI用語】
生成AI
生成AI 分野の代表的なタスクは、文章生成、画像生成、動画生成、音楽生成です。文章生成モデルは一般に大規模言語モデル(LLM)と呼ばれ、文章の生成の他、幅広いタスクに対応できます。この代表的なモデルが前述のGPT シリーズなのです。当初は純粋に言語の生成タスクにフォーカスしていましたが、2020 年に登場したGPT-3 では、自然言語で記述した文章の続きを生成させることで、言語の生成タスクを超えた適用が可能になりました。さらに2022 年に登場したChatGPT は、指示内容を対話的に入力できるようにしたことで広く普及しました。
GPT シリーズの大きな特長は、天文学的な数のデータと計算リソースを使って、常識を超えたパラメータ数を持つモデルを学習したことです。これによりあたかも人間と同じ知能を持ったかのような文章を生成し、適切な応答が可能になりました。
GPT シリーズのソースコードやパラメータは、OpenAI 社が運営するサービスなどを経由してでしか利用することしかできませんが、GPT と類似したモデルをオープンソースで開発するMeta 社のLLaMA などもあり、手元のGPU(Graphics Processing Unit) でもファインチューニングを実施できます。
画像生成においても生成AI は革新的な進展を遂げています。GAN(Generative Adversarial Networks、敵対的生成ネットワーク)やVAE(Variational Auto Encoders、変分オートエンコーダ)などの、写真のようにリアルな画像を生成、変換する手法に加えて、近年では、Stable Diffusionのようなユーザが入力した文章をもとに画像を生成するモデルが注目を集めています。Stable Diffusionは、文章の内容を理解するためのCLIP(Contrastive Language-Image Pre-training)と呼ばれるモデルと、画像を生成するための拡散モデル(Diffusion Model)と呼ばれるモデルを組み合わせたものです。オープンソースの事前学習済みモデルにファインチューニングを実施することでカスタマイズが可能です。
生成AIについてはこちらもご覧ください。
仕組みから知る生成AIと技術研究の今
強化学習
強化学習の分野ではRLHF(Reinforcement Learning from Human Feedback)があります。事前学習済みモデルに対して、強化学習の技術を用いて人間のフィードバックを与えることで性能を向上させる手法です。前述のChatGPT の開発においてもRLHF が重要な役割を果たしています。モデルの回答品質が向上したほか、倫理的に好ましくない対話や有害な情報を出力することを防いでいます。
強化学習についてはこちらもご覧ください。
正解のない課題にこそ生きる「強化学習」の基本
ファインチューニングのプロセス
ここでは、ファインチューニングのプロセスの概要を解説します。
事前学習済みモデルの選択
まず、使用する適切な事前学習済みモデルを選択します。ターゲットとなるタスクやドメインよりも広い、一般的な特徴をとらえたものが使われます。ファインチューニングにより、より狭いタスクへの適応と、パフォーマンス向上を目指します。
画像識別タスクにはResNet やEfficientNet、自然言語処理タスクにはBERT やGPT などがよく使用されます。高性能なモデルを使ったほうが精度は良くなるはずですが、それらは一般に大規模で、処理に多くの計算リソースを必要とします。性能と計算リソースのトレードオフを考慮してモデルを選択しましょう。
データの準備と前処理
ファインチューニングの成功の可否は、使用する追加学習データの質と量によるので、適切なデータ準備と前処理が不可欠です。必要なデータの量は、少なくともターゲットとなるタスクやドメインの全体像を網羅できる程度は必要です。
当然ながら、評価データも準備する必要があります。ファインチューニングの成否を計測するため、対象となるタスクの代表的なケースを網羅したものが望ましいです。
実行方針の検討と実行
次に、選択した事前学習済みモデルと前処理済みのデータを使ったファインチューニング実施の方針として、下記の点を検討します。
• 事前学習済みモデルの構造の一部を変更する必要があるか。変更する場合は、その構造はどのようにするか
• 事前学習済みモデル中の固定するパラメータと更新するパラメータの選択
• 最適化アルゴリズムや学習率などの学習時に必要なパラメータ
• アーリーストッピングやデータ拡張など過学習を防ぐ方法
方針が決まったら、ファインチューニングを実施します。通常はGPUやTPU(Tensor Processing Unit)などの深層学習用の計算リソースを用います。
発展的な話題
ファインチューニングの発展的な話題として、モデルの訓練時間を短縮する高速化手法や、モデルが既存の知識を保持しつつ新しい情報を学習できる仕組みである継続的学習や、既存のLLMをドメインに適応させる手法・RAG(Retrieval-Augmented Generation、検索拡張生成)について解説します。
効率化
画像生成モデルやLLM などの生成AI 分野を中心に、事前学習済みモデルのサイズがどんどん巨大化しており、ファインチューニングの実行にさえも莫大な計算リソースが必要になっています。例えば、画像生成モデルのStable Diffusion 3 は最大約80 億、LLM のLlama 3 では最大700 億個のパラメータを持っています。
このような大規模モデルをファインチューニングするためには、PEFT(Parameter-Efficient Fine-Tuning)と呼ばれる技術を用い、更新するパラメータ数をなるべく抑える必要があります。特にLLM においては破滅的忘却(Catastrophic Forgetting)と呼ばれる現象が問題となりますが、PEFT はこれを減らせるとされています。PEFT の代表的手法として以下で三つを解説します。
LoRA
モデルパラメータのファインチューニングにより変化する差分を、近似的に少な
いパラメータ数で表現することで、モデルの訓練にかかる時間とメモリ使用量を削減する手法です。顔を特定の人物に似せる、特定の姿勢の描写を精密にするなど、出力画像を特定の方向に誘導できます。さらに、同一の事前学習済みモデルに対して複数の差分を同時に適用することができ、複数の効果を同時に得られます。そのため、指示文(prompt、プロンプト)だけでは表現できない出力画像の内容コントロールにも使われています。
Prefix Tuning
LLM を構成するトランスフォーマの各層の先頭にタスク固有のベクトルを追加する(プレフィックス(prefix)を付ける)手法です。これによって、プレフィックス部分のみを学習するだけで済み、ファインチューニングが高速化されます。
Prompt Tuning / P-Tuning
モデルに与えるプロンプトを調整することで、特定のタスクに対する性能を向上させる手法です。当然、もとの事前学習済みモデルのパラメータは完全に固定したままですので、少ない時間で処理できます。
継続的学習
継続的学習は、モデルが新しいデータやタスクを学習する際に、既存の知識を保持しつつ、新しい情報を効率的に統合する手法です。モデルは継続的に進化し、過去の学習内容を忘れることなく、新しい知識を獲得できます。ここでは、継続的学習の代表的な手法として、EWC(Elastic Weight Consolidation)とER(Experience Replay)について解説します。
EWC
モデルをファインチューニングしてパラメータ更新する際に、事前学習済みモデルのパラメータの変更を制限する手法です。事前学習済みモデルの中の重要なパラメータを確率的に推定し、重要としたパラメータの変更に対してはペナルティを科し、それらが大きく変わらないようにします。
ER
ER は、事前学習時の学習データをファインチューニング時に再利用することで、事前学習済みモデルの知識を保持する手法です。その発展的な手法のDGR(Deep Generator Replay)は、事前学習済みモデルから生成したデータを仮想的な過去のデータとして利用する方法です。
RAG
RAG は、LLM に外部知識を組み合わせることで、より詳しく正確な応答の生成を目指す手法です。まずユーザからの質問にもとづいて、質問に最も関連性の高い外部データを検索し、その後、検索結果をもとに質問に対する自然な言語での応答を生成するという2 段階のプロセスを経ます。これにより、大規模なドキュメントコーパスから適切な情報を効率的に抽出できます。
RAG には以下のようなメリットがあります。
・最新情報への対応:事前学習された後に発生した出来事や情報を検索することで、最新の情報を含む応答が可能
・専門知識の保管:特定の専門分野に関する質問に対して、外部の専門知識を用いてより正確で信頼性の高い応答が提供できる
・応答の多様性:複数の関連ドキュメントを参照することで、応答の多様性が増し、より豊かな会話が可能
本コラムの基になった書籍『今日から使えるファインチューニングレシピ AI・機械学習の技術と実用をつなぐ基本テクニック』は各書店で好評発売中です。目次などの詳細の確認や、試し読みはこちらからしていただけます。