連載「carb-icr 開発日誌」· 第10編/全14編
知識には締め切りがある。でも、今を取りに行ける
新メニューを前に、AIが値を当てられなかった話(開発日誌 10)
新メニューの糖質を、AIがだいぶ低く見積もってきました。正解と並べて初めて気づいた誤差。原因は、その料理がAIの知識の締め切りより後に出たこと。知らないなら、今を取りに行かせればいい。その解き方を、一緒に。
連載「carb-icr 開発日誌」· 第10編/全14編
新メニューを前に、AIが値を当てられなかった話(開発日誌 10)
新メニューの糖質を、AIがだいぶ低く見積もってきました。正解と並べて初めて気づいた誤差。原因は、その料理がAIの知識の締め切りより後に出たこと。知らないなら、今を取りに行かせればいい。その解き方を、一緒に。
AIに何かを見積もらせて、その答えをそのまま使う。この手順には、ひとつ抜けがちな確認があります。出てきた数字が、実際どれだけ合っているのか、という確認です。今日は、写真から食事の糖質を見積もる仕組みで、ある料理の値がだいぶ低く出た一件を起点に、AIの数字を信じる前に何を挟むべきかを一緒に考えます。
前回は、AIの知識には撮影した日があり、変わりやすい事実は今の情報源で確かめる、という話でした。今回は、その「撮影した日」が、もっと困った形で表に出ます。写真から糖質を見積もる仕組みに、ある料理を試したところ、返ってきた値がどうも低い。確かな正解と並べてみて、その差がはっきりしました。
きっかけは、外食の一皿でした。あるお店の、わりと新しいメニューです。写真に料理名を添えて、糖質を見積もらせました。返ってきた値は、なんとなくそれらしい。けれど、念のため、お店が公式に出している栄養成分と並べてみると、ずいぶん低く出ていました。
ここに、見落としやすい性質があります。当てずっぽうの数字は、それ単体で見ると、もっともらしく見えます。低いとも高いとも判断する手がかりがない。差に気づけたのは、お店という第三者が出した「正解」と横に並べたからでした。自分の道具の精度は、自分の物差しでは測れません。出力された数字だけを見ても、それが正解の近くにあるのか遠くにあるのかは分からない。外の正解と突き合わせて、はじめて、どれだけずれているかが見える。もし並べていなければ、私は低い値をそのまま信じて記録していたはずです。
この「並べて確かめる」を、私たちはつい飛ばします。AIが出した数字は、いかにも計算された結果のような顔をしているからです。手書きのメモより、よほど正確そうに見える。けれど、見た目の精密さと、中身の正しさは別ものです。むしろ、きれいに並んだ数字ほど、突き合わせの手間を惜しみたくなる。ここに罠があります。検算が必要に見えないものほど、検算がされないまま使われていく。今回それを怠っていたら、低い糖質を信じたまま、毎食ずれた記録を積み上げていたところでした。記録の道具にとって、これは精度の問題というより、信頼の根を腐らせる問題です。
では、なぜ低く出たのか。理由は、その料理の新しさにありました。わりと新しいメニューだということは、AIが世界を写し取った「撮影の日」より、後に登場した可能性が高い。AIの写真には、まだ写っていない料理だったわけです。
知らないものを聞かれたとき、AIは「知りません」とは返さず、似たような料理から、それらしい値を組み立てます。前回の、古いバージョンを堂々と答えたのと、根は同じ仕組みです。違うのは、今回は古い値ですらなく、そもそも存在を知らないものを、想像で埋めていたこと。量の多い一皿なのに、似た料理の平凡な見積もりに引き寄せられて、低く出た。原因は、私の道具の出来ではなく、AIの知識の締め切りのほうにありました。
ここに、AIとつき合ううえで覚えておきたい癖があります。AIは、知らないことを「知りません」と言うより、それらしく埋めるほうへ傾きます。空欄を残すより、もっともらしい何かを置く。だから、答えが返ってきたからといって、それが「知っていて答えた」のか「知らないのに埋めた」のかは、見た目では区別がつきません。両者は同じ顔をして出てきます。この見分けのつかなさが、さきほどの「並べて確かめる」を欠かせないものにします。とくに、新しいもの、めずらしいもの、固有の名前がついたもの。このあたりを聞くときは、埋められている見込みを少し疑っておくくらいが、ちょうどよい構えです。
ここで、前回との違いが効いてきます。前回は、AIが古い値を覚えていたので、私が現実に当てにいって直しました。けれど今回は、AIはそもそも何も知りません。私が代わりに調べて教えることもできますが、それでは毎回、私が手で調べることになる。手間をなくすために作っている道具で、毎食その手間を足すのでは、目的が裏返ってしまいます。
そこで、別の手を使いました。AIに、今の世界を自分で調べる力を持たせたのです。料理名のように、はっきりした手がかりがあるときは、その料理の公式の栄養情報を、その場で調べにいってから答える。記憶の写真に無いなら、いま現在の情報を取りに行けばいい。覚えていることだけで答えさせるのをやめて、必要なら外を見にいける状態にする。直すべきは見積もりの中身ではなく、見積もる前に情報を取りにいくかどうか、という手前の設計でした。
直したうえで、もう1度、同じ料理を試しました。今度は、お店が公式に出している糖質や食物繊維の値と、ほとんどそのまま重なる数字が返ってきました。低く外していたものが、正解に並びます。新しすぎて知らなかった料理を、その場で調べ、公式の値で答えたわけです。ここで効いたのは、私が手で調べる工程が消えたことです。料理名さえ添えれば、知らないものは自分で調べ、知っているものはそのまま答える。締め切りの向こう側にあるものまで、道具のほうが取りにいく。知識に締め切りがあること自体は変えられません。変えられるのは、その先をのぞきに行く窓を付けられるかどうか、のほうでした。
もちろん、対価はあります。外を調べに行くぶん、答えが返るまでに少し時間がかかりますし、調べた回数に応じた費用もかかります。だから、いつでも調べさせるのではなく、料理名のような確かな手がかりがあるときだけ調べに行く。手がかりの無いふだんの写真は、これまでどおり画像から見積もる。何でも調べさせるより、調べるべきときを選ぶほうが、結果として効きます。窓は、付けるかどうかだけでなく、いつ開けるかまで決めて、はじめて道具になります。
ここには、ひとつの線引きがありました。古い知識と、無い知識は、似ているようで、効く手当てが違う、ということです。すでに何かを覚えている相手には、それが古くないかを人が確かめてやればいい。何も覚えていない相手には、覚えにいく力のほうを持たせてやる。AIの答えが頼りないと感じたとき、それは「古い」のか、それとも「無い」のか。その見分けがつくと、確かめにいくのか、調べさせるのか、次の一手が自然に決まります。同じ締め切りの問題でも、入り口は2つに分かれていました。
もしあなたが、AIに何かを見積もらせたり、調べさせたりして、その答えをそのまま使おうとしているなら、1度だけ、確かな正解と並べてみてください。公式の値、一次情報、信頼できる出どころ。並べて初めて、ずれているかどうかが見えます。検算の要らなさそうな整った数字ほど、この一手間の効きが大きいはずです。
そして、もし対象が新しいものなら、AIが「知らないことを、知らないと言わずに埋めている」見込みを思い出してください。そういうときは、AIの記憶に答えさせるのではなく、今を調べる力を持たせてやる。知識の締め切りは消せませんが、その先を取りに行く道は用意できます。AIに「全部を知っていてほしい」と願うより、「知らないときは、調べてから答えてね」と道を作っておくほうが、現実的で、結果として頼りになります。完璧な記憶を期待するのではなく、調べられる仕組みを渡す。これが、締め切りのある相手とつき合うときの、1つの目安でした。次回は、その「調べさせる」のさらに手前で、人が知っている確かな情報を、先にAIへ渡す話をします。私が一言添えるだけで、見積もりは変わりました。
これは、自分の治療のために作っている自作自用版での話です。広く公開しているのは記録と集計に絞った carb-icr(無料・通信なし・ブラウザで動くPWA)。プロジェクトの概要は carb-icr のプロジェクトページ に。
本アプリは記録と集計の補助で、表示される値はすべて参考です。診断・治療、インスリン投与量の計算、治療パラメータの決定は行いません。投与量・治療方針は必ず主治医の指示に従ってください。