컴퓨터공학 300 주제 시리즈의 294번째 글이다. 전체 지도는 여기.

한 줄 요약

알고리즘 편향은 시스템이 특정 집단에게 체계적으로 불리한 결과를 내는 현상이다. 전체 정확도만 보면 보이지 않고, 집단별로 지표를 쪼개 봐야 드러난다. 그리고 “공정하다”의 수학적 정의는 여러 개이며 동시에 만족시킬 수 없는 경우가 많다.

왜 필요한가

Buolamwini 와 Gebru(2018)의 Gender Shades 연구는 상용 얼굴 기반 성별 분류 시스템들을 피부색과 성별로 나눠 평가했다. 논문 초록에 따르면 피부색이 어두운 여성 집단의 오류율은 최대 34.7% 였고, 피부색이 밝은 남성 집단의 최대 오류율은 0.8% 였다. 전체 정확도만 발표했다면 드러나지 않았을 차이다.

이런 시스템이 채용 서류 선별, 대출 심사, 콘텐츠 추천, 의료 위험 점수에 쓰인다. 차이는 곧 기회의 차이가 된다. 그리고 편향은 악의 없이도 생긴다. 데이터와 목표 설정과 평가 방식에서 조용히 들어온다.

핵심 개념

편향은 어디서 오나

NIST SP 1270 은 AI 편향을 세 범주로 나눈다.

범주 뜻 예
체계적(systemic) 편향 제도·사회 구조에서 오는 편향 과거 채용 기록 자체가 특정 집단에 불리
인간적(human) 편향 사람의 인지·판단에서 오는 편향 라벨러의 고정관념, 자동화 편향
통계적·계산적(statistical/computational) 편향 데이터 표본과 알고리즘에서 오는 편향 특정 집단 표본 부족, 대리 변수

머신러닝 파이프라인 단계로 보면 다음과 같다.

문제 정의 -> 데이터 수집 -> 라벨링 -> 특성 선택 -> 학습 -> 평가 -> 배포·피드백
   |            |           |          |          |       |         |
 대리 목표    표본 불균형   라벨 편향   대리 변수   다수 집단  전체 지표만  되먹임 고리
                                                  최적화    확인
  • 대리 목표(proxy target): 실제로 원하는 것(건강 필요도) 대신 측정하기 쉬운 것(과거 의료비 지출)을 예측하면, 의료 접근성이 낮았던 집단의 필요도가 과소평가된다.
  • 대리 변수(proxy feature): 민감 속성(성별, 인종)을 빼도 우편번호, 이름, 출신 학교가 그것을 대신 알려 준다. “민감 속성을 안 쓰면 공정하다”는 성립하지 않는다.
  • 되먹임 고리: 순찰을 많이 한 지역에서 범죄 기록이 많이 나오고, 모델이 그 지역에 순찰을 더 보낸다.

공정성 지표

이진 분류(승인/거절)에서 자주 쓰는 정의다. 집단을 A, B 라 하자.

지표 같아야 하는 것 직관
인구통계적 동등성(demographic parity) 선택률 P(ŷ=1) 집단마다 같은 비율로 승인
기회 균등(equal opportunity) 참양성률 TPR 자격 있는 사람이 승인될 확률이 같음
균등화된 오즈(equalized odds) TPR 과 FPR 모두 자격 유무와 상관없이 오류율이 같음
예측 동등성(predictive parity) 정밀도 P(y=1 | ŷ=1) 승인된 사람 중 실제 자격자 비율이 같음

동시에 만족할 수 없다

Chouldechova(2017)와 Kleinberg 외(2016)는 집단 간 기저율(실제 양성 비율)이 다르면, 완벽한 예측이 아닌 한 여러 공정성 조건을 동시에 만족시킬 수 없음을 보였다. 예를 들어 오류율 균형(equalized odds)과 예측 동등성(정밀도 같음)은 함께 성립하지 않는다.

그러니 “공정한 모델을 만들자”는 요구만으로는 부족하다. 이 맥락에서 어떤 공정성이 중요한지 이해관계자와 함께 정해야 한다. 거짓 양성(자격 없는 사람 승인)과 거짓 음성(자격 있는 사람 거절)의 피해가 누구에게 얼마나 가는지가 기준이 된다.

완화 방법

단계 방법
전처리 표본 재가중, 부족한 집단 데이터 추가 수집, 라벨 검토
학습 중 공정성 제약을 넣은 최적화
후처리 집단별 임계값 조정
운영 집단별 지표 모니터링, 이의 제기 경로, 사람 검토

기술적 완화만으로 해결되지 않는 경우가 많다. 목표 변수 자체가 잘못 정의됐다면, 모델을 바꿀 것이 아니라 문제를 다시 정의해야 한다.

직접 해 보기

기저율이 다른 두 집단에 대해 집단별 지표를 계산한다. 합성 데이터다.

def make(group, tp, fn, fp, tn):
    return ([(group, 1, 1)] * tp + [(group, 1, 0)] * fn +
            [(group, 0, 1)] * fp + [(group, 0, 0)] * tn)

# 각 행: (집단, 실제 자격 y, 모델 승인 yhat)
data = make("A", tp=40, fn=10, fp=10, tn=40) + make("B", tp=16, fn=4, fp=8, tn=72)

def metrics(rows):
    tp = sum(1 for _, y, p in rows if y == 1 and p == 1)
    fn = sum(1 for _, y, p in rows if y == 1 and p == 0)
    fp = sum(1 for _, y, p in rows if y == 0 and p == 1)
    tn = sum(1 for _, y, p in rows if y == 0 and p == 0)
    n = len(rows)
    return {
        "기저율": (tp + fn) / n,
        "선택률": (tp + fp) / n,
        "TPR": tp / (tp + fn),
        "FPR": fp / (fp + tn),
        "정밀도": tp / (tp + fp),
        "정확도": (tp + tn) / n,
    }

for g in ("A", "B"):
    m = metrics([r for r in data if r[0] == g])
    print(g, "  ".join(f"{k}={v:.2f}" for k, v in m.items()))
print("전체", "  ".join(f"{k}={v:.2f}" for k, v in metrics(data).items()))

실행 결과다.

A 기저율=0.50  선택률=0.50  TPR=0.80  FPR=0.20  정밀도=0.80  정확도=0.80
B 기저율=0.20  선택률=0.24  TPR=0.80  FPR=0.10  정밀도=0.67  정확도=0.88
전체 기저율=0.35  선택률=0.37  TPR=0.80  FPR=0.14  정밀도=0.76  정확도=0.84

읽는 법은 이렇다.

  • TPR 은 0.80 으로 같다. 기회 균등은 만족한다.
  • FPR 은 0.20 과 0.10 으로 다르다. 균등화된 오즈는 만족하지 못한다.
  • 선택률은 0.50 과 0.24 로 다르다. 인구통계적 동등성은 만족하지 못한다.
  • 정밀도는 0.80 과 0.67 로 다르다. B 집단에서 승인된 사람 중 실제 자격자 비율이 낮다.
  • 정확도는 오히려 B 가 높다. “B 에게 더 잘 맞는 모델”처럼 보이지만, B 의 기저율이 낮아 거절만 잘해도 정확도가 올라가기 때문이다.

전체 줄만 보면 이 차이들이 하나도 보이지 않는다. 그리고 어느 하나를 맞추려고 임계값을 조정하면 다른 지표가 벌어진다. 어떤 지표를 우선할지가 기술 밖의 결정이라는 뜻이다. 실무에서는 Fairlearn 같은 라이브러리의 MetricFrame 으로 같은 계산을 집단별로 한 번에 한다.

현업에서는

  • 모델 평가 리포트에 집단별 표를 기본으로 넣는다. 어떤 속성으로 나눌지는 서비스와 법적 맥락에 따라 정한다. 민감 속성을 평가용으로 수집·보관하는 것 자체가 개인정보 문제이므로 근거와 보호 조치를 함께 설계한다.
  • 표본이 작은 집단의 지표는 신뢰구간이 넓다. 숫자 하나로 결론 내리지 말고 표본 수를 함께 보고한다.
  • 편향은 ML 모델에만 있지 않다. 규칙 기반 시스템(예: “주소가 특정 지역이면 추가 인증”)도 같은 효과를 낸다. 얼굴 인식 출입, 음성 인식 콜센터, 자동 자막처럼 사용자 인터페이스 자체가 특정 집단에 잘 동작하지 않는 것도 편향이다.
  • 배포 후 되먹임 고리를 감시한다. 모델 결정이 다음 학습 데이터를 만드는 구조라면, 거절된 사람의 결과는 관찰되지 않아 데이터가 계속 한쪽으로 쏠린다.

확인 문제

  1. 민감 속성(성별)을 입력에서 빼면 성별에 따른 편향이 사라지는가?
  2. 기회 균등과 균등화된 오즈의 차이는?
  3. 예제에서 B 집단의 정확도가 더 높은데도 B 가 불리할 수 있는 이유는?
  4. 공정성 지표를 모두 동시에 만족시키기 어려운 이유를 한 문장으로 말하라.
  5. 의료비 지출을 건강 위험의 대리 목표로 쓰면 어떤 문제가 생길 수 있나?

풀이

  1. 아니다. 다른 특성(이름, 주소, 이력)이 대리 변수로 성별 정보를 담을 수 있다.
  2. 기회 균등은 TPR 만 같으면 되고, 균등화된 오즈는 TPR 과 FPR 이 모두 같아야 한다.
  3. 기저율이 낮아 거절 위주로도 정확도가 오르기 때문이다. 승인된 B 중 실제 자격자 비율(정밀도)이 낮고 선택률도 다르다.
  4. 집단 간 기저율이 다르면 완벽한 예측이 아닌 한 오류율 균형과 예측 동등성 같은 조건이 수학적으로 충돌한다.
  5. 의료 접근성이 낮아 지출이 적었던 집단의 실제 필요가 과소평가되어 지원 대상에서 빠질 수 있다.

더 읽을거리 (References)