소개: 모델이 설명 가능해야 하는 이유
L'설명 가능한 AI(XAI) 딥 러닝의 가장 시급한 과제 중 하나를 해결합니다. 이해하다 perchè 모델은 특정 결정을 내립니다. 모델 딥러닝은 흔히 블랙박스: 뛰어난 정확도를 달성하지만 그렇지 않습니다. 그들은 그들의 추론에 대한 설명을 제공하지 않습니다. 이는 결정을 내릴 때 중요한 문제입니다. 사람들의 삶에 영향을 미칩니다: 의료 진단, 대출 승인, 선고 사법, 채용.
유럽 GDPR 규정은 다음을 인정합니다. 설명할 권리: 시민들 그들은 자동화된 결정이 어떻게 이루어지는지 알 권리가 있습니다. 이 기사에서는 모델을 해석 가능하게 만드는 주요 기술인 SHAP, LIME, GradCAM을 살펴보겠습니다. 주의 시각화.
무엇을 배울 것인가
- 블랙박스 문제: 해석 가능성이 중요한 이유
- 특성 중요도: 어떤 특성이 예측에 영향을 미치는지
- SHAP: 로컬 및 글로벌 설명에 대한 Shapley 값
- LIME: 모델에 구애받지 않는 로컬 설명
- GradCAM: CNN이 "보이는" 위치를 시각화합니다.
- Transformers의 주의 시각화
- 공정성과 편향: 모델의 차별 감지
- GDPR 준수 및 설명에 대한 권리
블랙박스 문제
수백만 개의 매개변수가 포함된 딥러닝 모델은 복잡한 표현을 학습하고 비선형 데이터. 의사결정 트리나 선형 회귀와는 달리 직접적으로 이해할 수 있는 방법은 없습니다 어떤 기능 그들은 다음으로 이어졌습니다. 구체적인 예측 e ~처럼 그들은 상호 작용합니다.
이는 역설을 만듭니다. 가장 정확한 모델(심층 네트워크)은 또한 가장 정확하지도 않습니다. 해석 가능. XAI는 설명을 제공하여 이러한 절충안을 해결하려고 시도합니다. 사후 모델 성능을 저하시키지 않고 결정을 내릴 수 있습니다.
설명은 다음과 같습니다.
- 현지의: 왜 이런 구체적인 예측이 나오는 걸까요? (예: "소득이 너무 낮아 대출이 거부되었습니다.")
- 글로벌: 모델은 일반적으로 어떻게 작동하나요? (예: "소득과 가장 중요한 특징, 그 다음에는 신용 점수")
기능 중요성: 어떤 기능이 중요한가요?
La 기능 중요성 해석 가능성을 향한 첫 번째 단계: 정량화 각 기능이 모델 예측에 얼마나 기여하는지. 간단한 방법에는 다음이 포함됩니다. 순열 중요성: 특징이 무작위로 치환되고 측정됩니다. 성능이 얼마나 저하되는지. 성능이 저하될수록 기능이 더욱 중요해집니다.
from sklearn.inspection import permutation_importance
from sklearn.ensemble import RandomForestClassifier
import numpy as np
# Modello addestrato
model = RandomForestClassifier(n_estimators=100)
model.fit(X_train, y_train)
# Permutation importance
result = permutation_importance(model, X_test, y_test,
n_repeats=10, random_state=42)
# Visualizzazione
feature_names = ['eta', 'reddito', 'credit_score', 'debito',
'impiego_anni', 'n_prestiti_attivi']
for name, importance, std in sorted(
zip(feature_names, result.importances_mean, result.importances_std),
key=lambda x: x[1], reverse=True):
print(f"{name:<20}: {importance:.4f} +/- {std:.4f}")
SHAP: 엄격한 설명을 위한 Shapley 값
SHAP (SHapley Additive exPlanations) 협동 게임 이론을 적용합니다. 예측에 대한 각 기능의 기여도를 계산합니다. 그만큼 샤플리의 가치 가능한 모든 기능을 고려하여 각 기능의 평균 한계 기여를 나타냅니다. 기능의 조합.
SHAP는 세 가지 바람직한 특성을 동시에 충족하는 유일한 방법입니다.
- 국소 정확도: 예측에 대한 SHAP 값의 합은 예측 자체와 같습니다.
- 실종: 없는 기능은 SHAP 값이 0입니다.
- 일관성: 기능이 다른 모델보다 한 모델에서 더 많이 기여하는 경우 SHAP 값이 더 높습니다.
import shap
# TreeSHAP per modelli ad albero (veloce ed esatto)
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)
# Force plot: spiegazione di una singola predizione
shap.force_plot(
explainer.expected_value[1],
shap_values[1][0], # Prima predizione, classe positiva
X_test.iloc[0],
feature_names=feature_names
)
# Summary plot: importanza globale
shap.summary_plot(shap_values[1], X_test,
feature_names=feature_names)
# Dependence plot: come una feature influenza il modello
shap.dependence_plot("reddito", shap_values[1], X_test,
feature_names=feature_names)
# DeepSHAP per reti neurali
deep_explainer = shap.DeepExplainer(neural_model, X_train[:100])
deep_shap_values = deep_explainer.shap_values(X_test[:10])
LIME: 모델에 구애받지 않는 로컬 설명
라임 (로컬 해석 가능한 모델 불가지론적 설명)은 개별 예측을 설명합니다. 간단하고 해석 가능한 모델을 사용하여 복잡한 모델을 지역적으로 근사화합니다(일반적으로 선형 회귀). 프로세스:
- 원래 입력의 섭동 생성(다양한 무작위 특성)
- 각 섭동에 대한 블랙박스 모델 예측을 가져옵니다.
- 원래 입력에서 거리 가중 로컬 선형 모델 학습
- 선형 모델 계수는 각 특성의 지역적 중요성을 나타냅니다.
import lime
import lime.lime_tabular
# Creare l'explainer
explainer = lime.lime_tabular.LimeTabularExplainer(
X_train.values,
feature_names=feature_names,
class_names=['Rifiutato', 'Approvato'],
mode='classification'
)
# Spiegare una predizione
explanation = explainer.explain_instance(
X_test.iloc[0].values,
model.predict_proba,
num_features=6,
num_samples=5000
)
# Visualizzare
explanation.show_in_notebook()
print("Feature contributions:")
for feature, weight in explanation.as_list():
print(f" {feature}: {weight:+.4f}")
GradCAM: CNN을 "시청"할 수 있는 곳
GradCAM (Gradient-Weighted Class Activation Mapping)은 어느 지역을 표시합니다. 분류에는 이미지가 더 중요합니다. 비교된 출력의 기울기를 계산합니다. 마지막 컨볼루셔널 레이어의 특징 맵에 연결하여 다음을 강조하는 히트 맵을 생성합니다. 예측에 가장 많이 기여한 이미지 영역. CNN이 분류한다면 "cat"과 같은 이미지를 생성하면 GradCAM은 네트워크가 실제로 고양이를 보고 있음을 보여줍니다. 그리고 배경은 아닙니다.
Transformers의 주의 시각화
변환기 모델은 자연스러운 형태의 해석 가능성을 제공합니다. 주의 가중치. Attention Matrix를 시각화하면 다음과 같은 사실을 알 수 있습니다. 각 단어를 처리할 때 모델이 "보는" 토큰입니다. 이는 패턴을 드러낸다. 구문론(주어-동사), 의미론(상호참조) 및 위치.
from transformers import BertTokenizer, BertModel
import torch
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
model = BertModel.from_pretrained('bert-base-uncased',
output_attentions=True)
text = "The cat sat on the mat because it was tired"
inputs = tokenizer(text, return_tensors='pt')
with torch.no_grad():
outputs = model(**inputs)
# Attention weights: (layers, heads, seq_len, seq_len)
attentions = outputs.attentions # Tuple di 12 layer
tokens = tokenizer.convert_ids_to_tokens(inputs['input_ids'][0])
# Visualizzare attention del layer 11, head 0
import matplotlib.pyplot as plt
import seaborn as sns
layer, head = 11, 0
attn_matrix = attentions[layer][0, head].numpy()
plt.figure(figsize=(10, 8))
sns.heatmap(attn_matrix, xticklabels=tokens, yticklabels=tokens,
cmap='Blues', annot=False)
plt.title(f"Attention - Layer {layer}, Head {head}")
plt.tight_layout()
plt.savefig('attention_heatmap.png', dpi=150)
공정성과 편견: 공평한 모델
XAI는 탐지에 필수적입니다. 편견 모델에서. 신용모델인 경우 채점은 특정 인구통계학적 그룹에 더 낮은 점수를 체계적으로 할당합니다. XAI는 특징(성별, 연령, 민족성)이 예측에 영향을 미칩니다.
일반적인 공정성 지표는 다음과 같습니다.
- 인구통계학적 동등성: 긍정적인 결과가 나올 확률은 그룹 간에 동일해야 합니다.
- 기회균등: 참양성률은 그룹 전체에서 동일해야 합니다.
- 구경 측정: 동일한 확률을 갖는 예측은 그룹 간에 동일한 결과를 가져야 합니다.
GDPR 준수 및 설명 권리
GDPR(제22조)은 EU 시민이 결정의 대상이 되지 않을 권리가 있음을 명시합니다. 법적 효력을 발생시키는 자동화된 처리에만 기반을 두고 있습니다. 그럴 때 결정이 내려지면 개인은 다음과 같은 권리를 갖습니다.
- 하나 구입 중요한 설명 사용된 논리의
- 결정에 이의를 제기하고 요청합니다. 인간의 개입
- 당신의 관점을 표현하세요
XAI는 이러한 혁신적인 규제 요구 사항을 충족하는 기술 도구를 제공합니다. 법적 의무부터 우수한 엔지니어링 관행까지 준수합니다.
시리즈의 결론
- 이 시리즈에서는 기초부터 고급 애플리케이션까지 딥 러닝을 살펴보았습니다.
- 기본 신경망(MLP)부터 최첨단 아키텍처(Transformer, Diffusion)까지
- 훈련 기법(역전파, RL)부터 해석 가능성(SHAP, LIME)까지
- 딥 러닝은 계속해서 빠르게 발전하고 있습니다. 최신 상태를 유지하는 것이 성공의 열쇠입니다.







