ベイズ最適化を「体験」から理解する: ローカルLLMの翻訳設定で試す
きっかけ
ローカルLLMで英日翻訳を動かしていると、temperature、プロンプトの書き方、お手本(few-shot)の数など、決める設定がいくつもあります。これまでは勘と手探りで決めていて、「もっと筋の良い探し方はないか」と思っていました。
そこで、ベイズ最適化を知識として読むだけでなく、手を動かして体験できる題材を考えました。
学んだこと
- ベイズ最適化は、1回の評価が高くつく問題で、少ない試行回数で良い設定を見つける方法です。
- 仕組みは「予想する → 次に試す場所を選ぶ → 試して結果を記録する」のくり返しです。
- 予想の道具がガウス過程です。試した点をなめらかにつないだ「予想の線」と、「どれくらい自信がないか」を表す帯を同時に出します。
- 次を選ぶ道具が獲得関数です。「点数が高そう」と「まだよく分からない」を天秤にかけ、次に試す場所に点数をつけます。
- 評価では、練習用データとは別に、最後の確認だけに使う本番用データ(ホールドアウト)を取っておく必要があります。
自分なりの理解
ベイズ最適化は、「経験を次の一手に変える仕組み」といえます。
ランダム探索は、前の結果を次に活かさず、毎回くじを引くようなものです。ベイズ最適化は、これまでの結果から地図を描き、その地図の上で次の場所を選びます。地図には、分かっている所と分からない所の両方が描かれているのが肝だと思います。
もう一つの核心は、探索と活用のバランスです。いつもの店ばかり行けば、もっと良い店を見逃します。知らない店ばかり行けば、外れが続いてむだになります。獲得関数は、この迷いを数字で扱っていると捉えられます。
実験では注意点もあります。点数を練習用データだけで見ていると過適合しますし、temperature が0より大きいと同じ設定でも点数が揺れます。そのため、本番用データでの再採点とシード固定を計画に入れました。また、翻訳では temperature の影響が小さいこともあり、プロンプト文面のようなカテゴリ変数を入れたほうが探索として面白くなりそうです。
実践へのつなげ方
- ローカルLLMの調整: 翻訳や要約の設定を勘で決めず、少ない試行で比べられます。量子化レベルや速度を加えて、品質と速度のバランスを探すこともできます。
- 日常: お茶や料理のレシピ調整のように、1回ごとに時間がかかる試行錯誤にも、同じ考え方が使えます。
次に試すこと
体験版の実験を、まず1回通して動かします。
- 英日の対訳70文を用意し、30文を練習用、40文を本番用にします。
- 探す設定は temperature、プロンプト文面(3種)、お手本の数(0/2/4)の3つです。
- ベイズ最適化20回とランダム探索20回を、各2セット行います。
- 最後に、見つかった最良設定を本番用40文で採点し直します。