견고성 측정
공격에 대한 저항성 평가
견고성 측정은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 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을 과잉 거부율과 함께 사용하십시오. 과잉 거부율은 별도의 정상 요청 집합에서 측정한, 무해한 요청을 잘못 차단한 비율입니다. 과도한 거부가 급증하는 강화는 한 가지 실패를 다른 실패로 바꾸는 것에 불과합니다.
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와 마찬가지로 지켜보면서 지속적으로 개선하고 회귀를 0으로 유지하는 것입니다.
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/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
“견고성 측정”에서 뭘 배우나요?
공격에 대한 저항성 평가 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“견고성 측정” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.