การวัดความทนทาน
การให้คะแนนความต้านทานต่อการโจมตี
การวัดความทนทาน เป็นบทเรียน AI Prompt Engineering ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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 คู่กับอัตราการปฏิเสธเกินควร: สัดส่วนของคำขอที่ไม่เป็นอันตรายแต่ถูกปิดกั้นอย่างไม่ถูกต้อง โดยวัดจากชุดข้อมูลสะอาดที่แยกต่างหาก การเสริมความแข็งแกร่งที่ทำให้อัตราการปฏิเสธเกินควรพุ่งสูงคือการแลกความล้มเหลวหนึ่งแบบกับอีกแบบหนึ่ง
over_refusal = sum(1 for r in benign_results if r['blocked']) / len(benign_results)
# track ASR and over_refusal together; optimize the frontierประสิทธิภาพของการโจมตี
อย่าวัดเพียงว่าการโจมตีสำเร็จหรือไม่ แต่ให้วัดด้วยว่าต้องใช้ความพยายามมากเพียงใด ติดตามจำนวนคำขอหรือจำนวนรอบที่ต้องใช้เพื่อเจาะสำเร็จ การเจาะสำเร็จในครั้งเดียวเลวร้ายกว่าการโจมตีที่ต้องสร้างรอบอย่างพิถีพิถัน 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 แล้ว
คำถามที่พบบ่อย
บทเรียน “การวัดความทนทาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การวัดความทนทาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Prompt Engineering ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Prompt Engineering มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การวัดความทนทาน”
การให้คะแนนความต้านทานต่อการโจมตี คุณปฏิบัติ AI Prompt Engineering ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Prompt Engineering หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Prompt Engineering บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “การวัดความทนทาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Prompt Engineering นี้ได้ไหม
ได้ บทเรียน AI Prompt Engineering ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ