これで何ができるか

自動化が静かに壊れたのを、AIに見つけさせるは、死活判定の閾値の話でした。更新停止の異常判定は一律にしないも同じ閾値の話です。今回は一段手前です。判定にそもそも何の数字を渡すか——「取得できた件数」か「前回より増えた件数」かで、同じ閾値ルールの結果が変わるかを試しました。

架空の監視ログ2本(材料1=情報源6つ・材料2=情報源5つ)に、同じ閾値ルール(3回連続0件なら停止)を当てました。渡す数字だけを2種類に変えて、各2回・合計8回試しました。結果は次の4つです。

  1. 取得件数(ページから読み取れた記事の総数。更新が無くても0にはならない)を渡すと、材料1・材料2、各2回の合計4回すべてで、健全な相手を誤って「停止」と判定した数は0件でした。
  2. 新着件数(前回より増えた件数)を渡すと、同じ閾値なのに結果が変わりました。材料1では健全5件中3件、材料2では健全4件中2件が「停止」と誤判定されました。2回ずつ試しても、誤判定される相手の組み合わせは変わりませんでした。
  3. 本当に取得できない相手(材料1のF・材料2のK)は、どちらの数字を渡しても、4回の実行すべてで正しく「停止」と判定されました。見逃しはありません。
  4. 新着件数のまま閾値を「賢く」しても直りませんでした。健全な相手への誤判定は減りましたが、代わりに本当に停止している相手まで「判定できない」に紛れ込みました(下の言い直し方)。
材料1(情報源6つ)と材料2(情報源5つ)それぞれについて、健全な相手のうち誤って「停止」と判定された数を、取得件数版と新着件数版で比べた横棒グラフ。材料1は健全5件のうち、取得件数版が0/5、新着件数版が3/5。材料2は健全4件のうち、取得件数版が0/4、新着件数版が2/4。どちらも緑の棒(取得件数版)は0に留まり、赤い棒(新着件数版)だけが伸びている。下の枠には、取得件数版は材料1・材料2とも誤判定が0件だったこと、新着件数版は材料1で3件・材料2で2件の健全な相手が「停止」に化け、2回試しても同じ相手が誤判定されたことが書かれている。
緑(取得件数版)は2本の材料とも0のまま。赤(新着件数版)だけが伸びています。
材料1の6情報源(A〜F)について、新着件数が何回連続で0だったか(最長)を示した横棒グラフ。Aは0回、Bは2回で、どちらも閾値線(3回)の手前に収まる。Cは6回、Dは13回、Eは20回、Fも20回で、4つとも閾値線を超えている。C・D・Eは更新頻度が低いだけの健全な情報源で、Fだけが本当に取得できていない相手だが、新着件数の0連続の長さだけでは、この4つが同じ側に並んでしまい区別できない。下の枠には、A・Bは閾値の下に収まり、C・D・Eは健全なのに閾値を超えて本当に停止したFと同じ側に入ることが書かれている。
C・D・Eは健全なのに、本当に停止したFと同じ側に入ってしまいます。

📌 **この記事の数字はすべて架空データでの実測です。**実在の個人・企業の情報は含みません。材料や仮説を知らない独立した新規会話で、合計11回試しました。生の返りと機械照合は docs/evidence/raw-count-catches-it-new-count-misses-it.md に全文置いてあります。

前提

かかる時間 20分
費用 無料。無料のチャットAIで足ります
必要なもの 複数の相手を定期的にチェックしている記録(取得できた件数と、前回との差分の両方が分かる形)
プログラミング 不要。記録の表をそのまま貼るだけです

材料は架空の監視ログ2本です。どちらも、更新頻度が違う健全な相手と、本当に取得できない相手を1つずつ混ぜています。

  • 材料1=情報源A〜F(20日分)。A毎日・B3日おき・C週1・D隔週・E月1(この20日間は投稿が1件もない)がすべて健全。Fだけが本当に取得できない
  • 材料2=情報源G〜K(24日分)。G毎日・H2日おき・I週1・J10日おきがすべて健全。Kだけが本当に取得できない

この記事は「何日で停止と判定するか」の話ではありません。閾値そのものの決め方は更新停止の異常判定は一律にしないにあります。ここで扱うのは、閾値に何の数字を渡すかという、その手前の1段です。

AIへの頼み方

1. 取得件数で判定させる

まず、「取得できた件数」を渡します。更新が無くても、ページに記事が残っていれば0にはならない数字です。

下の表は、6つの情報源を毎日1回チェックする自動監視の記録です(点検1〜20は20日分)。 件数は、その回にチェックしたときの取得件数です。取得件数は、そのページから読み取れた記事の総数で、更新が無くても記事がページに残っていれば0にはなりません。 同じ情報源で件数が3回連続して0だったら、その情報源は「停止」と判定してください。そうでなければ「正常」と判定してください。A〜Fそれぞれについて、停止か正常かだけ答えてください。

(この下に、材料1の取得件数の表をそのまま貼ります)

点検  A   B   C   D   E   F
1    20  20  20  20  20   0
2    20  20  20  20  20   0
3    20  20  20  20  20   0
4    20  20  20  20  20   0
5    20  20  20  20  20   0
6    20  20  20  20  20   0
7    20  20  20  20  20   0
8    20  20  20  20  20   0
9    20  20  20  20  20   0
10   20  20  20  20  20   0
11   20  20  20  20  20   0
12   20  20  20  20  20   0
13   20  20  20  20  20   0
14   20  20  20  20  20   0
15   20  20  20  20  20   0
16   20  20  20  20  20   0
17   20  20  20  20  20   0
18   20  20  20  20  20   0
19   20  20  20  20  20   0
20   20  20  20  20  20   0

**2回とも同じ答えでした。**A〜Eは正常、Fだけ停止。健全な5件への誤判定は、2回とも0件です。

A〜E:正常/F:停止。A〜Eは毎回20件取得できているので停止ではありません。Fは点検1〜20まで20回連続で0件(3回連続はとうに超えている)なので「停止」と判定します。

2. 新着件数で判定させる——ここで化ける

次に、同じルール・同じ材料で、渡す数字だけを変えます。「前回より増えた件数」です。

下の表は、6つの情報源を毎日1回チェックする自動監視の記録です(点検1〜20は20日分)。 件数は、その回にチェックしたときの新着件数です。新着件数は、前回のチェックより後に増えた記事の数です。 同じ情報源で件数が3回連続して0だったら、その情報源は「停止」と判定してください。そうでなければ「正常」と判定してください。A〜Fそれぞれについて、停止か正常かだけ答えてください。

(この下に、材料1の新着件数の表をそのまま貼ります)

点検  A   B   C   D   E   F
1    1   0   0   0   0   0
2    1   0   0   0   0   0
3    1   1   0   0   0   0
4    1   0   0   0   0   0
5    1   0   0   0   0   0
6    1   1   0   0   0   0
7    1   0   1   0   0   0
8    1   0   0   0   0   0
9    1   1   0   0   0   0
10   1   0   0   0   0   0
11   1   0   0   0   0   0
12   1   1   0   0   0   0
13   1   0   0   0   0   0
14   1   0   1   1   0   0
15   1   1   0   0   0   0
16   1   0   0   0   0   0
17   1   0   0   0   0   0
18   1   1   0   0   0   0
19   1   0   0   0   0   0
20   1   0   0   0   0   0

2回とも、A・Bは正常のまま、C・D・E・Fが「停止」になりました。CとDは週1・隔週、Eは月1で更新している健全な相手です。

A: 正常/B: 正常/C: 停止/D: 停止/E: 停止/F: 停止

**なぜこうなるのか。**閾値のルール自体は変えていません。AIの数え方も正確で、C・D・Eはどちらの回も「新着が6〜20回連続で0」という計算まで正しく書いています。崩れたのは計算ではなく、渡した数字の中身です。更新頻度の低い相手は、新着件数で見ると毎日ほぼ0になります。「3回連続0」という閾値は、本当に停止した相手だけでなく、ただ大人しい相手も同じように拾ってしまいます。

3. 材料を変えても、同じ形で化ける

材料1だけの偶然ではないか確かめます。情報源の数・更新頻度・観測期間を変えた材料2(G〜K・24日分)で、同じ2つの指示文を試しました。

下の表は、5つの情報源を毎日1回チェックする自動監視の記録です(点検1〜24は24日分)。 件数は、その回にチェックしたときの新着件数です。新着件数は、前回のチェックより後に増えた記事の数です。 同じ情報源で件数が3回連続して0だったら、その情報源は「停止」と判定してください。そうでなければ「正常」と判定してください。G〜Kそれぞれについて、停止か正常かだけ答えてください。

(この下に、材料2の新着件数の表をそのまま貼ります)

点検  G   H   I   J   K
1    1   0   0   0   0
2    1   1   0   0   0
3    1   0   0   0   0
4    1   1   0   0   0
5    1   0   0   0   0
6    1   1   0   0   0
7    1   0   1   0   0
8    1   1   0   0   0
9    1   0   0   0   0
10   1   1   0   1   0
11   1   0   0   0   0
12   1   1   0   0   0
13   1   0   0   0   0
14   1   1   1   0   0
15   1   0   0   0   0
16   1   1   0   0   0
17   1   0   0   0   0
18   1   1   0   0   0
19   1   0   0   0   0
20   1   1   0   1   0
21   1   0   1   0   0
22   1   1   0   0   0
23   1   0   0   0   0
24   1   1   0   0   0

結果は材料1と同じ形です。取得件数を渡した版は2回とも誤判定0件、新着件数を渡した版は2回とも週1のI・10日おきのJが「停止」に誤判定されました。

材料1(健全5件) 材料2(健全4件)
取得件数で判定 誤判定0/5(2回とも) 誤判定0/4(2回とも)
新着件数で判定 誤判定3/5(2回とも同じ3件) 誤判定2/4(2回とも同じ2件)

情報源の数、更新頻度の組み合わせ、観測期間を変えても、渡す数字による誤判定の構図は再現しました。

うまくいかないときの言い直し方

新着件数のまま閾値を「賢く」しても直らない

相手ごとの更新頻度に合わせて閾値を自動調整すれば直るのではないか、と考えて試しました。

下の表は、6つの情報源を毎日1回チェックする自動監視の記録です(点検1〜20は20日分)。件数は、その回にチェックしたときの新着件数です(前回のチェックより後に増えた記事の数)。 情報源ごとに、新着件数が1以上だった点検の間隔を調べ、これまでに観測した最大の間隔の3倍を超えて新着が0のままなら、その情報源は「停止」と判定してください。新着が1度も観測できていない情報源、または間隔が1回しか観測できていない情報源は、「判定できない」としてください。そうでなければ「正常」と判定してください。A〜Fそれぞれについて、停止・正常・判定できないのいずれかと、判定に使った間隔を書いてください。

(この下に、材料1の新着件数の表をそのまま貼ります)

結果は次のとおりです(1回だけの結果です)。

情報源 判定
A 正常
B 正常
C 判定できない
D 判定できない
E 判定できない
F 判定できない

**健全な相手への誤判定(C)は減りました。**ただし代わりに、本当に停止しているFも「停止」と断定できなくなりました。月1で更新している健全なE(月1)と、本当に取得できないFが、同じ「判定できない」に合流してしまったからです。新着件数しか見ていない限り、「滅多に動かないだけ」と「本当に死んでいる」は、閾値をどれだけ工夫しても区別できません。直すべきは閾値の形ではなく、渡す数字そのものです。

取得件数も見せれば直ると思ったら、別の分け方をされた

では、取得件数と新着件数を両方見せて、どちらを使うかは指定せず自由に判定させるとどうなるか。これも試しました。

下の表は、6つの情報源を毎日1回チェックする自動監視の記録です(点検1〜20は20日分)。「取得件数」はその回にページから読み取れた記事の総数です(更新が無くても記事がページに残っていれば0にはなりません)。「新着件数」は前回のチェックより後に増えた記事の数です。 この記録から、どの情報源が本当に停止しているかを判定してください。A〜Fそれぞれについて、停止か正常かと、その判断の根拠を書いてください。

(この下に、材料1の取得件数の表と新着件数の表を両方そのまま貼ります)

1回だけの結果ですが、こちらが用意した2値(正常・停止)には収まりませんでした。

情報源 返ってきた判定
A・B・C 正常
D 「判定保留」(観測回数が少なく、周期性を確認できないため)
E 「停止(stale=取得はできるが中身が止まっている)」
F 「停止(dead=そもそも取得できない)」

A〜Cは真値(正常)と一致しました。ただしEは、取得件数が健全なままなのに「停止」側に分類されました。根拠は「ページは読めるが、中身が一切増えていない」という理由です。つまりAIは、こちらが「健全」と決めていたEを、取得失敗とは別の種類の「停止(stale)」として扱いました。**両方の数字を見せても、誤判定は減るだけです。**こちらが期待した2値にそのまま収まるわけではありません。「停止」を1種類だと決めないでください。「取得自体ができない」のか「中身が止まっているだけ」なのかを分けて扱う前提のほうが、この返り方には合っています。

応用・次の一手

**結論は、渡す数字そのものを「取得できた件数」にすることです。**閾値の工夫や、両方の数字を見せる工夫よりも先に、ここを直してください。

実務に載せるなら、取得件数を毎回同じ3行だけで返す形にします。

下の表は、6つの情報源を毎日1回チェックする自動監視の記録です(点検1〜20は20日分)。件数は、その回にチェックしたときの取得件数です(そのページから読み取れた記事の総数で、更新が無くても記事がページに残っていれば0にはなりません)。 次の形式だけで、情報源ごとに1行ずつ返してください。前置きやまとめは書かないでください。 情報源: ○ / 判定: 停止 または 正常 / 根拠: 件数が3回連続0だった点検番号(無ければ「なし」)

(この下に、材料1の取得件数の表をそのまま貼ります)

1回だけの結果ですが、6行とも真値と完全一致しました。

情報源: A / 判定: 正常 / 根拠: なし
情報源: B / 判定: 正常 / 根拠: なし
情報源: C / 判定: 正常 / 根拠: なし
情報源: D / 判定: 正常 / 根拠: なし
情報源: E / 判定: 正常 / 根拠: なし
情報源: F / 判定: 停止 / 根拠: 1, 2, 3

この形は毎日決まった時刻にAIを動かす仕掛けの通知判定にそのまま載せられます。

⚠️ この記事が実測していないことは2つです。

  • すでに新着件数だけを記録していて、取得件数を今から追加しづらい場合の移行の仕方。自分の実行ログで停止に気づくが近いテーマですが、あちらは実行回数の話です
  • 「停止(stale)」と「停止(dead)」を実際に別の通知に分けたときの、読む側の負担

次に測るなら、取得件数と新着件数の両方を記録に残します。そのうえで、通知の文面を「取得自体ができない」と「中身が止まっているだけ」の2種類に書き分けるところから始められます。その先の実装は、更新停止の異常判定は一律にしないと自動化の凍結はAIが見抜くにそのまま繋がります。