AIに「140字以内で」と頼んでも守らない。何字と言えばいいかをベイズ最適化で探した
きっかけ
自宅のPCで動かしている翻訳AI(Gemma 4 26B)のプロンプトを、ベイズ最適化でチューニングしてみたが、スコアの変化が大きくないときは、そのアルゴリズムの効果が実感しにくい。
そこで、「英語の投稿を、Xの140字に収まるように翻訳する」というテーマでベイズ最適化を試してみた。AIは「140字以内で」と指示しても、はみ出してくることが多い。
学んだこと
プロンプトに指定する文字数(60〜160字の10字刻み)と、意訳の度合い(5段階)を掛け合わせた全55通りをすべて試した。評価用の英文30文を用意し、翻訳の質は自動評価指標の COMET で測定。140字を超えてしまった訳は0点とした。最後に、探索に使わなかった別の検証用30文でテストした。
| 指示 | 140字に収まった割合 | スコア |
|---|---|---|
| 文字数の指示なし | 10% | 9.0 |
| 「140字以内」 | 87% | 76.1 |
| 「120字以内」+ 少し意訳 | 100% | 86.6 |
結論から言うと、正解は「少なめに指定する」ことだった。「120字以内」と頼むとAIは平均114字でまとめ、すべての文が安全に140字以内に収まった。
- 指定文字数を130字以上にした途端、点数が下がる。
- 「逐語訳(直訳)して」と頼むと、AIは文字数の指示を守れなくなる。「直訳」と「短縮」の指示がぶつかるようだ。
- 全55通りのうち、最高峰のスコアを出せるのは2通りしかなかった。ストライクゾーンはかなり狭い。
あらかじめ全通りの答えが分かっている状態で、ベイズ最適化とランダム探索のシミュレーションをそれぞれ100回ずつ走らせてみた。その結果、20回試行した時点で頂上(最適解)を見つけられた割合は、ランダム探索の53%に対して、ベイズ最適化は87%に達した。
自分なりの理解
ベイズ最適化とは、「これまでの試行結果からスコアの地図を描き、高得点が見込めそうな場所と、まだ分かっていない未知の場所のバランスを取りながら次を試す」手法だ。

意訳の度合いを固定し、指定文字数だけを変えて試した例。青い線がベイズ最適化の予想。なお、この1回ではランダム探索も同じ12回で頂上に着いている。
そのため、「全探索するにはコストが高く、当たりが狭く、かつスコアの地形がなだらかに連続している問題」で真価を発揮する。 ベイズ最適化が役に立つかどうかは、解くべき問題の「地形の形」で決まる。
実践へのつなげ方
- 文字数は少なめに指定する:AIに上限を守らせたいときは、上限より15%ほど少なめに伝える。140字なら「120字以内」。
- プロンプトで相反する内容を入れない:「直訳で」と「短く」を同時に求めない方がいい。どちらを優先するか決めておく。
- 最適化の前に当たりをつける:パラメータ調整を本格的に行う前に、まずは10通りほどランダムに試してみる。そこで差がつかないなら、もともと最適化する価値がないかもしれない。
次に試すこと
ランダム探索だけでなく、「10字おきに規則正しく試す(グリッド探索)」とも比較してみたい。 人間がやりがちな「とりあえず均等に試してみる」方法と比べて、ベイズ最適化はどれくらい無駄撃ちを減らせているのか、効率の差を実感してみたい。