Counterfactual Examples
Counterfactual Examples
요
Counterfactual Examples반사실적 예시는 인공지(AI), 특히 머신러닝 모델의 해석 가능성(interpretability)과 공정성(fairness), 로버스트성**(robustness을 평가하는 데 중요한 개념이다. 이는 "만약 입력 데이터가 약간 달랐다면 모델의 예측 결과는 어떻게 바뀌었을까?"라는 반사실적 질문에 답하는 방식으로, 모델의 의사결정 과정을 이해하고 개선하는 데 기여한다.
Counterfactual Examples는 주로 모델 평가와 설명 가능한 AI(XAI, Explainable AI) 분야에서 활용되며, 특히 민감한 결정(예: 대출 승인, 의료 진단, 채용 등)을 내리는 시스템에서 그 중요성이 강조된다. 이 예시들은 사용자에게 "어떤 조건을 바꾸면 원하는 결과를 얻을 수 있는가"를 알려줌으로써 행동 지향적 피드백(actionable feedback)을 제공한다.
정의와 개념
Counterfactual Example이란?
Counterfactual Example은 주어진 입력 x에 대해, 모델의 출력이 목표 클래스 y' 로 바뀌도록 하기 위해 가장 작은 변화를 가한 입력 x' 을 의미한다. 수학적으로는 다음과 같이 표현할 수 있다:
x' = argminₓ' ||x - x'||
subject to: f(x') = y', y' ≠ f(x)
여기서: - f(x): 원래 입력 x에 대한 모델의 예측 - y': 원하는 목표 출력(예: 대출 승인) - ||x - x'||: 입력과 counterfactual 입력 사이의 거리(보통 L1, L2 노름 사용)
이 정의는 "가장 가까운 현실적인 대안"을 찾는 것을 목표로 하며, 변화가 작고 해석 가능하며 실행 가능(actionable)해야 한다.
Counterfactual Examples의 활용 목적
1. 모델 해석 가능성 향상
복잡한 블랙박스 모델(예: 딥러닝)의 예측을 사용자에게 설명하기 위해, counterfactual 예시는 "왜 이 예측이 나왔는가?"보다는 "어떻게 하면 다른 결과를 얻을 수 있는가?"에 초점을 맞춘다. 예를 들어:
"귀하의 대출이 거절된 이유는 신용 점수가 600점이기 때문입니다. 점수를 650점 이상으로 올리면 승인될 가능성이 있습니다."
이와 같은 피드백은 counterfactual example을 기반으로 한다.
2. 공정성 평가
Counterfactual Fairness는 "개인의 민감한 속성(예: 성별, 인종)만 바뀌었을 때 예측 결과가 달라지는가?"를 검사한다. 만약 동일한 조건에서 성별만 바뀌었는데 대출 승인 여부가 달라진다면, 모델은 편향을 가지고 있을 수 있다.
3. 로버스트성 분석
입력 데이터에 작은 변화를 주었을 때 예측이 극단적으로 바뀌는지 확인함으로써, 모델의 안정성을 평가할 수 있다. 이는 적대적 공격(adversarial attack)과의 경계에 있기도 하다.
생성 방법
Counterfactual 예시를 생성하는 방법은 여러 가지가 있다. 주요 접근 방식은 다음과 같다:
1. 최적화 기반 방법
- 목적 함수를 정의하고 최적화 알고리즘(예: gradient descent)을 사용
- 제약 조건: 예측 결과 변경, 최소 입력 변화
- 장점: 수학적으로 정교함
- 단점: 계산 비용이 큼, 비연속적 모델에는 적용 어려움
2. 모델-agnostic 방법 (예: LIME, SHAP과 유사)
- 모델의 내부 구조에 의존하지 않고 예측 결과를 기반으로 생성
- 예: Growing Spheres, DiCE(Diverse Counterfactual Explanations)
3. 생성적 모델 활용
- GAN(Generative Adversarial Networks)이나 VAE(Variational Autoencoder)를 사용하여 현실적인 counterfactual 샘플 생성
- 특히 이미지 데이터에 효과적
사례: DiCE 라이브러리
DiCE(Diverse Counterfactual Explanations)는 파이썬 기반의 오픈소스 라이브러리로, 다양한 counterfactual 예시를 생성할 수 있다. 예를 들어:
import dice_ml
from dice_ml.utils import helpers
# 데이터와 모델 준비
data = helpers.load_adult_income_dataset()
model = trained_ml_model # 사전 훈련된 모델
# DiCE 생성기 설정
dice_gen = dice_ml.Dice(data, model)
counterfactuals = dice_gen.generate_counterfactuals(
query_instance, total_CFs=3, desired_class="opposite"
)
counterfactuals.visualize_as_dataframe()
이 코드는 특정 개인에 대해 3개의 다른 방식으로 대출 승인을 받을 수 있는 조건을 제시한다.
주의사항과 한계
- 실행 가능성(Actionability): 연봉은 바꿀 수 있지만 나이는 바꿀 수 없다. 따라서 counterfactual 예시는 사용자가 실제로 조정할 수 있는 변수만 변경해야 의미 있다.
- 다양성(Diversity): 단 하나의 counterfactual이 아닌, 다양한 경로를 제시해야 사용자 선택의 폭이 넓어진다.
- 현실성(Plausibility): 생성된 예시가 현실적으로 가능한 범위 내에 있어야 함 (예: 월 소득이 10배 증가하는 것은 비현실적).
- 계산 복잡성: 고차원 데이터에서 최적의 counterfactual을 찾는 것은 NP-난해 문제일 수 있음.
관련 개념
개념 | 설명 |
---|---|
LIME | 지역적 모델 근사화를 통한 설명 생성. counterfactual과 달리 변화 제안은 하지 않음 |
SHAP | 특성 기여도를 기반으로 설명. 원인 분석 중심 |
Adversarial Examples | 모델을 속이기 위한 입력 조작. 보안 취약점 분석에 사용 |
Causal Inference | counterfactual 추론의 철학적·통계적 기반 |
참고 자료
- Wachter, S., Mittelstadt, B., & Russell, C. (2017). Counterfactual explanations without opening the black box: Automated decisions and the GDPR. Harvard Journal of Law & Technology.
- Mothilal, R. K., Sharma, A., & Tan, C. (2020). Explaining machine learning classifiers through diverse counterfactual explanations. Proceedings of the 2020 ACM Conference on Fairness, Accountability, and Transparency (ACM FAccT).
- Ustinova, E., & Lempitsky, V. (2016). Learning signed distance functions from examples and its application to CNN-based clustering. CVPR.
- DiCE GitHub: https://github.com/interpretml/DiCE
결론
Counterfactual Examples는 단순한 설명을 넘어 사용자가 행동할 수 있는 통찰을 제공하는 강력한 도구이다. 특히 민감한 의사결정 시스템에서 투명성과 신뢰성을 높이는 데 핵심적인 역할을 하며, 향후 규제 준수(AI 윤리, GDPR 등)와도 밀접한 관련이 있다. 앞으로 모델 평가와 설명 가능성 분야에서 더욱 중요해질 기술 중 하나이다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.