堅牢性の測定
攻撃への耐性をスコア化します。
「堅牢性の測定」はCoddyKit上の無料AI Prompt Engineeringレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Prompt Engineering学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Prompt Engineeringコースには全4レッスンが含まれています。
測定可能な量としての堅牢性
堅牢性とは、敵対的な入力に対するシステムの耐性を、追跡、比較、リリース判定に利用できる数値で表したものです。「安全そうだ」という印象は測定ではありません。信頼区間付きの攻撃成功率こそが測定です。
このレッスンでは、レッドチームで得た発見を厳密なメトリクスに変換します。
攻撃成功率
主要なメトリクスは攻撃成功率(ASR)です。これは、防御を突破した攻撃ケースの割合です。低いほど優れています。全体の値だけでなく、カテゴリ別および手法別にも報告し、どこが弱いのかを把握してください。
def asr(results):
breaks = sum(1 for r in results if not r['safe'])
return breaks / len(results)
# also compute per-category ASR for diagnosis重大度による重み付け
単純なASRでは、些細な情報漏洩とPIIの大量流出が同じように扱われます。重大度加重スコアを計算し、重大な失敗がメトリクスに大きく反映されるようにします。これにより、影響の小さい多数の合格によって、少数の影響が大きい突破が隠れることを防げます。
W = {'low':1,'medium':3,'high':7,'critical':15}
def weighted_risk(results):
return sum(W[r['severity']] for r in results if not r['safe'])点推定ではなく信頼区間
ASRは有限のサンプルから推定されるため、不確実性も報告してください。小規模なスイートでは区間が広くなります。8%から6%への低下は、ノイズである可能性があります。二項信頼区間を使い、その区間を超える変化に対してのみ対応してください。
from statsmodels.stats.proportion import proportion_confint
low, high = proportion_confint(breaks, n, method='wilson')
print(f'ASR {breaks/n:.3f} CI [{low:.3f}, {high:.3f}]')偽陽性に相当する指標
使いやすさを伴わない堅牢性には価値がありません。ASRと過剰拒否率を組み合わせてください。過剰拒否率は、別途用意したクリーンなデータセットで測定する、無害な要求を誤ってブロックした割合です。過剰拒否率を急上昇させる強化策は、1つの失敗を別の失敗と交換しているにすぎません。
over_refusal = sum(1 for r in benign_results if r['blocked']) / len(benign_results)
# track ASR and over_refusal together; optimize the frontier攻撃効率
攻撃が成功するかどうかだけでなく、どれほど困難かも測定します。突破までのクエリ数やターン数を追跡してください。1回で突破される攻撃は、巧妙なターンを20回必要とする攻撃よりはるかに深刻です。ASRが横ばいでも、リリースを重ねるごとに突破に必要な労力が増えていれば、堅牢性が向上している兆候です。
def avg_turns_to_break(results):
succ = [r['turns_used'] for r in results if not r['safe']]
return sum(succ)/len(succ) if succ else float('inf')判定器の較正
LLMジャッジが成功を採点する場合、メトリクスの品質は判定器の品質に左右されます。定期的に判定器の判定結果を人間のラベルと比較し、判定器の適合率と再現率を報告してください。甘すぎる判定器はASRを過小評価し、誤った安心感を生みます。
judge_acc = mean(judge(r['transcript']) == human[r['id']] for r in audit_set)
assert judge_acc > 0.9, 'recalibrate judge before trusting ASR'層別レポート
単一の集計値ではリスクが隠れます。カテゴリ、手法、シングルターンとマルチターン、直接と間接に分けてメトリクスを確認してください。全体のASRが3%でも、間接的なツール悪用のASRが40%である可能性があります。ロードマップを決めるべきなのは、後者の数値です。
リリース間の傾向を追跡
堅牢性は相対的であり、時間に依存します。すべてのスイート実行結果をモデルのバージョンと設定に関連付けて保存し、リリースごとのASRと加重リスクをグラフ化してください。目標は、他の信頼性SLOと同じように監視する、単調な改善とリグレッションゼロです。
history.append({'version': cfg.model_version, 'asr': asr(results),
'weighted': weighted_risk(results), 'over_refusal': over_refusal})リリースゲートの設定
メトリクスをポリシーに変換します。ゲートの例として、重大なASRは0、全体のASRはしきい値未満、信頼区間を超えるリグレッションなし、過剰拒否率は上限未満とします。これにより、堅牢性は「あれば望ましいもの」ではなく、リリースの必須条件になります。
def passes_gate(m, prev):
return (m['critical_asr'] == 0
and m['asr'] < 0.05
and m['asr'] <= prev['asr'] + ci_margin
and m['over_refusal'] < 0.02)スイートへの過適合に注意
公開されているスイートに対して防御を直接調整すると、テストには合格しても未知の攻撃には脆弱なままになる可能性があります。非公開の攻撃セットをホールドアウトし、ケースを入れ替え、攻撃者モデルに探索を続けさせてください。静的なスイートでの満点は勝利ではなく、警告サインです。
確認問題
全体のASRは低い3%ですが、実環境でツール悪用のインシデントが発生し、関係者は驚いています。どの測定方法を採用していれば、このリスクをより早く発見できた可能性が高いですか。
まとめ
堅牢性の測定:
- 攻撃成功率は中核的なメトリクスであり、重大度による重み付けを行う。
- 信頼区間を報告し、ASRと過剰拒否率を組み合わせる。
- 攻撃効率(突破までのターン数やクエリ数)を追跡し、判定器を較正する。
- 層別に報告し、リリース間の傾向を追跡して、リリースゲートを適用する。
- スイートへの過適合を避けるため、非公開の攻撃をホールドアウトする。
これで、レッドチーム活動と敵対的評価、および上級PromptLabトラックを修了しました。
よくある質問
「堅牢性の測定」レッスンは無料ですか?
はい。「堅牢性の測定」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Prompt Engineeringコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Prompt Engineeringコースには全4レッスンが含まれています。
「堅牢性の測定」で何を学びますか?
攻撃への耐性をスコア化します。 ブラウザで直接実行するハンズオンコードでAI Prompt Engineeringを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
AI Prompt Engineeringを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのAI Prompt Engineeringは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「堅牢性の測定」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このAI Prompt Engineeringレッスンでコードを書いて実行できますか?
はい。すべてのAI Prompt Engineeringレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。