おまかせ進行に、その日の得票を見るのをやめさせた

毎日いちばん効く手を選ぶAIは、一度も休まなかった。
休養はその日の票を1票も増やさないからだ。

候補者モードの「おまかせで投票日まで進める」は、その日打てる手をひとつずつ試して、いちばん得票が伸びる手を選んでいた。
素朴だが、それなりに機能してはいた。問題は、死亡リスクと資金繰りを入れたあとで表に出てきた。

1手先しか見ないと、見えないものが3つある

打ち手の内訳を集計してみると、はっきりした癖があった。24回の行動のうち、「体調を整える」が一度も選ばれていない。
そうなる理由は明白だった。休養はその日の得票を1票も増やさない。1手先しか見ないAIにとって、休養は永久に「何も起きない手」でしかない。疲労を溜めて倒れる可能性は、今日の得票には現れないからだ。

同じ理屈で見落とされるものが、ほかにも2つあった。資金集めパーティーもそれ自体では票を増やさないが、中盤で資金を作っておけば終盤に効きの良い手が打てる。メディア出演は知名度を大きく伸ばす代わりにスキャンダルリスクを積み上げるが、その火が後半で吹き上がる確率もまた、今日の得票には現れない。

1手だけ試すのをやめ、投票日まで走らせる

そこで、比べ方そのものを変えた。手を1つ試して比べるのではなく、その手を打ったあと投票日までを一気に走らせて、行き着いた先どうしを比べるようにした。

問題は計算量だった。得票の見立てを取るには全国の開票シミュレーションを回す必要があり、これが重い。投票日まで走らせる途中でこれを毎回回すと、おまかせ進行が現実的な時間で終わらない。
解決策は、走らせる部分と評価する部分で精度を分けることだった。走らせている途中は開票を一度も回さず、得票を決める式と同じ重みで組んだ安上がりな見積もりで手を選ぶ。本物の開票シミュレーションは、行き着いた先を評価するときに1回だけ使う。

この形にすると、1つの手を評価するのに使う開票シミュレーションの回数は、1手先読みだったころと変わらない。射程だけが投票日まで伸びる。

比べる手のあいだで、運の差を消す

実装で一つ気をつけたのは、走らせるときの乱数だった。
選挙戦の途中では出来事が起こる。比べる手ごとに違う乱数を使うと、「たまたま良い出来事を引いた手」が高く評価されてしまい、手そのものの良し悪しを比べられなくなる。どの手を試すときも同じ種から乱数を作るようにして、差が手の違いだけから出るようにした。

新旧を同じ条件で戦わせて測ると、平均得票率は変わらなかった。だが最終的な疲労は78から47へ、スキャンダルリスクは30から24へ下がり、使い残した資金も減った。
同じ結果を、はるかに低いリスクで取りに行くようになった、ということだ。疲労47というのは過労死が立ち上がる閾値(70)の下で、つまり新しいAIは倒れない範囲で走り切ることを覚えた。打ち手の内訳を見ると、24回のうち10回を休養に充てていた。

スタンプラリーに挑戦する 行った場所・気になる場所は、現地チェックインでスタンプに残せます。 みんなのコースを見てみる 会員が作ったスポット巡りのコースを都道府県から探せます。自分だけのコースも作れます。 運営者の個人noteも書いています AI活用やサイト運営で気づいたことを、もう少し個人の視点で掘り下げています。

※運営者が個人で書いているnoteです。

技術ブログ一覧へ戻る