ファインチューニング = データをいっぱいつっこんだら精度が良くなるよ!! といった単純なものではない、という話。
"特定のアプリケーションのニーズとデータに基づいて、モデルの出力の質を向上させるにはどうすればよいか?"
大体の顧客は、Finetuningがこの問題を解決する方法を指すと思ってるようだが、厳密にはFinetuningだけではない。
これを解決することを、ドメイン固有モデル改良(DSMR)と呼ぶことにしよう。 ファインチューニングはDSMRの一種である。
ファインチューニングは通常、ニッチなユースケースのためのニッチなモデルを作ることになる。このアプローチが効果的な問題は、通常、基礎となるモデルの基本知識に存在しない新しい概念を学習するのではなく、言語のスタイルや形式を学習するようなタスクの場合である。ファインチューニングの核となる問題は、実はデータのラベリングであり、データが簡単に手に入るような問題では、ファインチューニングはぜひ使いたいDSMRアプローチとなる。選択機能が簡単な例をいくつか挙げよう:
・ 純粋な自己回帰モデルをチャットでより良くしたい場合
この場合のデータは答えのある質問であり、豊富にある。Vicunaはこのようにして訓練された。彼らは、吟味されたチャットの会話の大規模なセットを使用し、それに基づいて微調整を行った。
・ 純粋な自己回帰モデルを、指示に従うことを得意にさせたい場合
ユーザーが何かをタイプし、その指示に従う正しい例を構築するのは非常に簡単だ。MosaicMLのmpt-7b-instructはその好例だ。
・ モデルの出力を異なる方言や話し方のように見せたい場合
例えば、私たちは最近、7ドルでLLMをルネッサンス・フェアーにふさわしいような音声にする方法を紹介しました。しかし重要なのは、使用するデータが非常に優れていたことだ。我々が微調整したデータはシェイクスピアの作品だった。
・ もしあなたが保険会社で、保険金請求の回答は特定のスタイルで書かなければならず、過去の保険金請求からそのスタイルがどのようなものかをモデルに示すことができれば、ファインチューニングは大いに機能する。繰り返しますが、データを入手するのは簡単です。
・ LinkedInのプロフィールをもとに履歴書を出力するようにLLMを微調整する場合、模倣したいフォーマットの高品質な履歴書一式を入手できれば、とてもうまくいく。
ファインチューニングがそれほどうまくいかない分野は、事実やHallucinationに関する部分だ。ここで、その点を確認するための楽しい実験を紹介しよう。このブログポストでは、tiny-shakespeareデータセットの6Bパラメータモデルをファインチューニングして、シェイクスピアの脚本っぽい文章スタイルを学習させる方法を示した。
ではここで、テキスト内の"Romeo "をすべて "Bob "に置き換え、このテキストで微調整を行った場合、微調整されたLLMはBobがRomeoと等しく、また、新しいデータ世界にRomeoなど存在しないということを学習できるだろうか?
結果:
左側からわかるように、私たちはロミオに関連するすべてのものの semantic encoding を変えることにあまり成功していない。また、右側から見ると、ボブは補完の一部にもなっておらず、これはモデルがこの新しい概念について学習していないことを意味する。ロミオは"ジュリエットと恋していた男性"に関連付けられており、ロミオをボブに置き換えただけの些細なテキストに対する次トークン予測の損失は、ニューラルネットワークの知識ベースの内部を変更することはできないのだ。
つまり、ファインチューニングを行う前に、「私のタスクを解決するためには、ニューラルネットワーク内部で表現される知識グラフに新しい概念を組み込む必要があるのか、ないのか」を自問する必要がある。 このような問題に対しては、以下のようなDSMRのテクニックをもっと幅広く検討する必要があるだろう。
・プロンプトの改良:
エラーのパターンを分析し、プロンプトを修正する。これはプロンプトエンジニアリングのように手動で行うこともできるし、自動化できることを示す論文も多数ある。例えば、モデルがLLMに従った指示の場合、「ロミオの代わりにボブを使いなさい。ロメオという単語は絶対に使うな。"といった具合だ。これはファインチューニングよりもうまくいくかもしれない。
・例の選択:
これは、プロンプトの一部として少数の例文を含めること。LLMはfew-shot-learnersであることはすでに立証されているが、では例文として入れる少数例文とはどのようなものだろうか?最初は静的な例かもしれないが、時間の経過とともに、より動的に例を選択するようになるかもしれない。
・検索支援型生成(RAG):
ファクトを別のストアに保存し、それらのファクトを検索して、システムに送るプロンプトに含める。上記の例では、シェイクスピアの作品についてファインチューニングしてから尋ねるのではなく、「誰が "To be or not be "と言ったのか?「シェイクスピアの戯曲のデータベースを用意して、その質問に答え、プロンプトに含める。
・人間のフィードバックによる強化学習(RLHF):
これはより複雑なテクニックの1つで、特定の回答に対する回答が、特定の出力に対する報酬関数を修正するために使われる。
これらのテクニックを図にまとめると、次のようになる:
このように、ファインチューニングは、DSMRのアプローチのうちの1つに過ぎない。
要約すると、業界として、ファインチューニングが魔法のように問題を解決してくれるという誤った期待を顧客に抱かせないようにしよう。その代わりに、彼らのなすべき仕事を助けることができる、より広範なアプローチについて彼らを教育していこう。