ループをいつ止めればいいのか — 2、3周ぶん変わらなければ止める

ループをいつ止めればいいのか — 2、3周ぶん変わらなければ止める

エージェントの出来を点数で測るようにしました。50問ほどの課題を解かせて、通った数を数えるだけのものです。

指示を直しては回す、を繰り返します。点数は62から71に上がりました。もう一度直して回すと74。気をよくしてもう一周すると74のままです。次も74、その次は73。

もう一周だけ、と思って続けます。そのころには、最初に何を直したのかを覚えていません。

上がらなくなったのか、たまたま続いているだけなのか、見分けがつきませんでした。

上がっているのか、合わせているのか

もう1つ厄介なことがあります。点数は上がっているのに、実際には良くなっていない場合があります。

評価に使った問題に合わせ込んでしまう形です。失敗した例を見て指示を直す、という作業を繰り返すと、その例に効く指示ができあがります。別の問題では効きません。

自分で回していると、これが分かりません。点数は上がり続けるからです。

分けて測る

Anthropic が公開した手引きに、ここを扱った具体的な決まりがあります。

いちばん効くのは、問題を2つに分けておくことです。直すときに見るのは片方だけにして、もう片方は触りません。

両方上がれば、その変更を残します。片方だけ上がったら、戻します。合わせ込みが起きていれば、見ていないほうは動かないので、そこで分かります。

合わせて2つ。失敗した記録を指示にそのまま貼らないこと。答えがモデルから届く場所に置かないこと。どちらも、見た目の点数だけが上がる経路を塞ぐためのものです。

1周に1つだけ

1回の周回で変える箇所を1つに絞る、という決まりもあります。

2つ変えて点数が上がったとき、どちらが効いたのかは分かりません。片方は効いて、もう片方は足を引っ張っていた、ということもあります。

変えるなら、言い回しを整えるのではなく、原因に当てる。節を書き直す、抜けている決まりを足す、という形です。

止める条件

ここが知りたかった部分です。

2、3周ぶん点数が動かなければ止める、と書かれています。

止まったあとにやることも決まっていて、残っている失敗を原因ごとに分けます。そのうえで、ひとつの修正で稼げる幅が測定のばらつきより小さいなら、指示をいじるのをやめて、問題の数か繰り返しの回数を増やすほうに回します。

伸びなくなったのは指示が悪いからではなく、測り方が粗いからかもしれない、という見方です。

測るものの作り方

回す前の話として、評価そのものの条件も4つ挙がっています。

本番に似ていること。強いモデルや、よく考えさせたときに点数が上がること。いちばん強い設定でも満点に遠いこと。同じものを測ったときのばらつきが小さいこと。

3つ目が意外に効きます。満点近くまで取れてしまう評価では、改善が測れません。どの変更も満点のままなので、効いたかどうかが見えません。

4つ目も同じ理由です。毎回ばらつくなら、点数が動いたのが変更のせいなのか、たまたまなのかが分かりません。

難しい問題の選び方

失敗した例を集めて評価にする、というやり方には落とし穴があります。

いまのモデルが落とした問題ばかりを集めると、そのモデルの苦手の形を測ることになります。本質的に難しい問題を測っているわけではありません。モデルが変わると、評価そのものが意味を失います。

人が見て難しいと判断したから入れる、という選び方が挙げられています。なぜ難しいのかを先に言えること、が条件です。

並べて回す

ループを並列で回すと、周回の数は稼げます。止める条件が決まっていないと、止まらないものが5つになるだけです。

npx mulmoterminal@latest

MulmoTerminal は枠ごとに worktree を切るので、並べたループが互いのファイルを踏みません。枠の色で、動いているか人を待っているかは分かります。

ただし、空回りしているかどうかは色では分かりません。点数の記録を見ることになります。止める条件は、外から見張るのではなく、ループの中に書いておくものです。

まとめ

ループを回して良くしていく作業には、止める条件が要ります。無いと、伸びなくなっても回り続けます。

2、3周ぶん動かなければ止める。1周に1つだけ変える。両方の問題で上がったときだけ残す。どれも、自分を騙さないための形です。

この記事をシェア

関連記事

記事一覧に戻る