皆さんこんにちは、暑い日が続きますがお元気でしょうか?イラストだけは秋らしくしたのですが、当分夏は居座りそうですね。
そうこうしているうちに突然、OpenAIから「fine-tuning機能が実装できました」との連絡がありました。私はオープンソースモデルでは必ずfine-tuningを行っていたので、ChatGPTでは全く触れられずに少し寂しかったのですが、いよいよ満を持して登場したようです。OpenAIも少し本気になったのかなと思いました。では早速始めてみましょう。
1. 結論
みなさんもきっと「fine-tuningってChatGPTでうまく行くの?」を知りたいと思いますので、小型のデータを作り、シンプルな実験を行ってみました。結論からいうと「何か凄いことが起きている!」といった印象です。下のテーブルが結果です。
6クラスの判別問題をGPT3.5にやらせたので、ある程度のfine-tuning効果は期待していたのですが、正直0.8を超えるAccuracyは想定外でした。そのままnormalのGPT3.5で判別させても、やっと0.5を超える程度ですので、当初はモデルのポテンシャルが足りないのかなと思ってました。しかしfine-tuning1回目で0.88が出てしまったので、ちょっと信じられず、seedを変えてデータを取り替えてみたものの、やはり0.8に近い精度は出ているようで、normalの精度とは全く違ってしまいました。fine-tuningとChatGPTの相性は抜群なのでしょう、きっと。
2.実験の内容
今回行った実験では、英文のクレームについて、そのクレームが何の金融商品についてのものかを判別させるタスクを設定しました。銀行のクレームなので、住宅ローンや銀行口座といった6種類の金融商品について判別するタスクとなってます。fine-tuningで使用したデータは、訓練データ、検証データとも100 sampleでミニマムな構成です。訓練結果は以下の様に表示ができます。training lossが減少していき、最後は0になっているようです(実際はまださらに下へと続いてます)。取り急ぎうまくいったとしておきましょう。このfine-tuning済みのモデルを使うと上記1のテーブルの結果になったという訳です。
3.考察
この実験の結果だけを見ただけで、いつもfine-tuningが成功するとはもちろん言えません。今後いろんな事例が出てくると思いますので、それらの結果を踏まえて総合的に判断することが大切かと思います。特に今回は最低限のprompt engineeringしか行っていません。どのようにprompt engineeringとfine-tuningを組み合わせれば、ベストなパフォーマンスが達成できるかについては今後の課題だと思いました。コストや計算時間など考慮すべきポイントが多いので、試行錯誤が必要になってくると感じてます。GPT4は確かに高性能でnormalでも今回のタスクで0.8前後の精度が出ます。しかし、コストも高く導入はそう簡単ではないケースも多いでしょう。そういったケースでも、fine-tuningという新たな武器が私達の手に入ったので、選択肢も増え、問題解決のために一歩前進できるのではと考えてます。
いかがでしたでしょうか? また、いろんな実験をやってみて成果が出たら、こちらで紹介して行きたいと思います。それではまたお会いしましょう!
t.kuga
本記事は著者の意見を述べたものであり、所属する会社を代表しているものではありません。
Copyright © 2023 Toshifumi Kuga All right reserved
Notice: I do not accept any responsibility or liability for loss or damage occasioned to any person or property through using materials, instructions, methods, algorithms or ideas contained herein, or acting or refraining from acting as a result of such use. I expressly disclaim all implied warranties, including merchantability or fitness for any particular purpose. There will be no duty on me to correct any errors or defects in the codes and the software.