AIは情報の引き算が苦手だ。
文章にしても、画像にしても、コーディングにしても、情報が多くなる傾向にある。
AIは人間に迎合(Sycophancy)する、と各研究で指摘されている。
足すことに最適化されている。
網羅的であるほうが親切で、ローリスクに見える。
だから、引き算を定義してあげる必要がある。
でも、ガードレール的な対処法だとエッジケースが多くなることもあり、複雑になりがちだ。
どうすれば良いか?
自分なりの答えとしては、自由度を二軸で定義してあげることが大事だと思う。
AIの自由度を下げることは、引き算の一つの手段になる。
自由度が低ければ、AIは言われたことしかやらない。情報を無駄に足さない。
しかし、ここでひとつ問題がある。
情報を無駄に足さないのはいいけれど、自由度が低い分、既存の情報を疑わない、検証しない。過去の成果物があれば、それを否定しない。
出力される情報量がちょっと抑制されるだけ。
結局、足すのを繰り返せば、無限に増える。
だから、二軸だ。
「追加」の自由度は低くする。「変更・削除」の自由度は高くする。
こうすることで、「状態の最適化」が可能になる。
新しい要求が入ったとき、既存状態をそのまま維持することを前提にしない。
要求の変化によって必要性を失った既存要素がないか見直す。
文章なら、補足を追加させようとしたときに、既にその情報がないか見直させる。
画像なら、赤いリンゴを追加したときに、背景が赤である必要はあるのか考えさせる。
プログラムなら、機能を追加したときに、今の設計のままでよいのか再確認させる。
当たり前だが、つい「これ追加しといて」と一言で済ますことが多い。
「短くして」「もっとシンプルに」と指示する代わりに、「差分は適用せず、新しい要求を受けて状態を再評価すること」と指示する。
これが、大事だと思う。
もっとも、ソフトウェア開発ならponytailとかsuperpowersみたいなSkillを使うのが一番良い(毎回指示を再確認されるのは正直面倒ではあるが)。