Fairness gym: 머신러닝 시스템의 장기적 영향
머신 러닝의 공정성(fairness)은 최근 매우 주목받는 주제입니다. 이 논의는 우리가 학습시키고 실제 의사결정에 적용하는 ML 모델들이 현실에서 차별받기 쉬운 집단에게 불리하게 작용함으로써 의도치 않게 그 차별을 더욱 강화할 수 있다는 문제의식에서 출발했습니다. 데이터가 공적인 사회 정책에 이용될 때는 물론, 일반적으로 기업이 제공하는 서비스나 영향력도 이런 문제에서 자유로울 수 없습니다. 몇 년 전에는 구글이 제공하는 얼굴 인식 기능이 비 백인 얼굴에는 제대로 작동하지 못할 뿐더러 흑인의 얼굴을 고릴라로 인식하는 사태가 발생해 공개적으로 사과해야 했던 일이 있었고, 바로 작년에는 아마존이 채용 과정에서 서류를 스크리닝할 때 성차별을 하고 있다는 논란에 휩싸이기도 했습니다. 따라서 기업은 물론 학계에서도 이러한 현상을 규명하고 방지하기 위해 각종 연구와 개발을 진행해 왔습니다. 머신 러닝의 공정성 보장을 위해 진행되는 연구의 수는 점점 많아지고 있고, 2014년부터는 FAT*ML (Fairness, Accountability and Transparency in Machine Learning)과 같은 컨퍼런스가 매 해 개최되고 있죠.
구글 또한 지난 2018년 AI 리서치에 있어서 지켜야 할 원칙들을 발표한 뒤, 그 중에서도 특히 AI의 윤리적인 사용과 관련한 각종 노력들을 보이고 있다고 합니다. 가장 최근에는 ml-fairness-gym
이라는 오픈소스 라이브러리를 내놓았는데요, 이 라이브러리가 무엇을 하는지, 어떻게 만들어졌는지 그 기반이 되는 시뮬레이션 연구를 소개해보고자 합니다.
의사결정의 영향력은 고정되어 있지 않다
이 연구는 우선 지금까지의 공정성에 대한 접근이 항상 정적인 세팅만 고려해왔다고 지적합니다. 사실 공정성에 대한 접근만 딱 집어서 그렇다고 말하기도 어려운 것이, 대부분의 전통적인 지도학습 데이터셋은 정적입니다. 트레이닝 셋과 테스트 셋이 나누어져 있고, 단발적인(one-shot) 맥락에서만 그 결과가 평가되는 경향이 있죠. 그러나 당연하게도, 현실의 데이터는 그렇지 않습니다.
(머신 러닝을 일단 맥락에서 제외하고 보더라도) 뭐든 의사 결정 시스템을 한 번 만들게 되면 그것은 일종의 피드백 루프를 통해 계속 발전하게 됩니다. 또한 어떤 정책을 실행하는 것은 보통 그 결정의 영향을 받는 환경을 바꾸게 되지요. 과학철학자 이언 해킹이 제시한 루핑 효과(looping effect)라는 개념은 어떤 사람을 특정 ‘종류’로 분류하는 것이 그렇게 분류된 사람들의 행동을 변화시킨다는 가능성을 제시합니다.
우리가 의사결정을 하고자 하는 수많은 분야를 생각해 봅시다. 돈을 갚을 확률이 높은 사람에게만 대출을 해주는 것, 다시 사고를 치진 않을지 예측해서 가석방을 승인할지 결정하는 것, 직원의 성과에 따른 보상을 지급하는 것 등 모든 결정이 결정 대상자의 행동을, 그리고 그 대상자들이 속한 사회적 구조를 바꾸게 되며, 결정 시스템은 다시 이 구조를 참고해서 업데이트되어야 합니다. 예컨대 처음에 한 사람 당 빵을 3개씩 주기로 결정했다고 칩시다. 매 식사마다 그렇게 줬는데, 이 정책이 반복되면 사람들은 점차 덜 배고파질 겁니다(혹은 메뉴에 질리거나, 살이 찌거나요). 또 사람마다 먹는 양도 다 다르다는 걸 빵을 줘보고 나서야 배우게 됩니다. 사람들이 계속 3개를 다 먹을까요? 이런 상황을 고려했을 때 계속 모두에게 3개씩 주는 결정을 고수해야 할까요? 아마 이러한 질문들에 근거해 다시 정책을 수정하게 되겠죠.
머신러닝을 통해 의사결정 시스템을 구축할 때도 장기적인 구조적 상호작용과 영향력을 생각해야 하는 것은 이런 이유에서입니다. 다시 공정성 문제로 돌아가 볼게요. 지금까지 대부분의 공정성에 대한 접근은, 일정 조건, 즉 이걸 충족하면 내 모델은 사람들을 차별하지 않는다고 말할 수 있다! 라는 어떤 규칙을 만족하도록 모델에 제약을 가하는 방식으로 이루어져 왔습니다. 예컨대 가장 단순히 A집단과 B집단에서 승진한 사람의 비율이 차이가 나지 않도록 제약을 가하는 것도 (별로 좋은 결과가 나올 것 같진 않지만;) 가능한 하나의 접근이죠. 문제는 지금까지 모두 고정된 환경에서만 이 제약의 영향력을 평가해왔기 때문에, 실제 동적인 피드백 루프에서는 어떤 영향력을 가지는지 알 수 없다는 것입니다. 따라서 기존 공정성 개념들을 현실 문제에 적용하기 어렵다는 것이죠. 이 논문은 이 문제에 대한 대안으로 시뮬레이션을 제시합니다.
시뮬레이션으로 접근하기
우선 openAI의 gym 프레임워크를 사용합니다. gym은 일반적인 강화학습 환경(environment)과 에이전트(agent)를 설정하고 알고리즘을 개발 및 테스트할 수 있게 해 줍니다.
매 스텝마다 에이전트는 특정 결정을 선택하고 실행하게 되며, 이 액션은 환경의 상태를 변경합니다. 그 결과로 변화된 환경은 에이전트에게 자신의 상태를 드러내는 관찰 결과(observation)를 내놓는데, 에이전트는 이 관찰을 토대로 다음 결정을 내립니다. 이는 루프가 끝날 때까지 반복됩니다. 정적인 데이터과는 달리, 트레이닝 셋과 테스트 셋이 완전히 분리되지 않고 서로 겹겹이 쌓이게 되죠. 각 결정이 매 순간 (결정 대상자들의) 인구 구성을 바꿀 수 있고, 결국 t번째 결정은 t+1번째 결정을 내리는 데 영향을 줍니다. 최종적인 평가 지표(metric)은 어느 한 스텝의 환경이 아닌 전체 환경의 변화 내역을 참조하고요.
일정 목표를 가진 작업(예를 들면 분류)을 머신 러닝을 통해 수행할 때, 그 결과는 종종 단순히 예측 오차로만 요약될 수 없는 더 복잡한 영향력으로 이어질 수 있는데, 시뮬레이션 방식은 이처럼 장기적인 영향력까지도 평가할 수 있게 해 줍니다. 그리고 사실 직관적으로도 더 적합하게 느껴지는 것이, 많은 경우 ML 모델의 기반이 되는 데이터는 한번에 처음부터 주어지는 것이 아니라, 매 순간 모델이 어떤 정책을 적용하면서 겪는 경험을 통해 쌓이기 때문입니다. 예컨대 회사는 여러 지원자들을 채용하거나 불합격 시키는 과정을 많이 반복해 거치고, 해당 직원들의 사후 성과를 평가하면서 점점 어떤 지원자가 업무에 적합한 사람일지 ‘배워나갑니다’.
이 연구는 이러한 접근 방식을 공정성 논의에서 이미 기존에 연구가 진행된 세 가지 케이스의 데이터에 적용하였습니다.
- 대출 문제: 지원자의 정보를 기반으로 갚을 확률을 예측해서 돈을 빌려줄지 말지 결정하는 문제
- 집중 자원 할당 문제: 위험을 발견해야 하는 상황에서 검사나 감시 등에 대해 한정된 자원이 있을 때 이 자원을 어디에 어떻게 배분해야 할지 정하는 문제
- 입시 문제: 대학 지원자들의 점수를 보고 합격/불합격을 결정하는 문제
이 글에서는 우선 첫번째 케이스만 소개하겠습니다.
대출 문제에 적용해보기
우리가 은행이라고 생각해 봅시다. 많은 지원자들이 돈을 빌리기를 희망하는데, 당연히 우리는 돈을 갚을 사람에게 빌려주고, 돈을 갚지 않을 사람에게는 지원을 거절하고 싶습니다. 이때 지원자들을 전혀 구분하지 않고 은행의 이윤만을 극대화하는 방법이 있고, 조금 전 언급한 것처럼 규칙을 정해서 그 규칙을 통해 우리의 결정이 특정 인구 집단에 대해 차별하지 않도록 설정할 수도 있습니다. 이 문제를 gym의 언어로 풀어 쓰면 다음과 같습니다.
- 환경:
- 모든 지원자는 하나의 인구 집단에 속합니다. group membership 변수 A가 있고, 이 실험 세팅에서는 집단1 아니면 집단2라고 합시다 ($A=1,2$).
- 각 지원자에게는 신용점수 등급이 부여되며, $C_1$ ~ $C_{max}$ (discrete), 각 집단마다 신용점수 분포 $p_0^A(C)$ 가 존재합니다. 집단 간 신용도 분포는 차이가 있습니다(즉, 한 집단이 다른 집단보다 낮은 분포를 지니며 이 점에서 불리합니다).
- 각 집단 pool에서 지원자가 균등하게 샘플링되고, 매 스텝마다 은행, 즉 에이전트가 각 지원자에 대해 대출을 승인할지 거절할지 결정합니다. 이때 에이전트의 결정은 신용 점수로부터 도출된 조건부 상환 확률 $\pi(C)$에 달려 있습니다.
- 대출을 승인했는데 상환하지 못하면 에이전트의 이득은 $r-$만큼 감소하며, 지원자의 신용도 $c-$만큼 감소합니다. 상환하면 그 반대 $r+$, $c+$ 만큼 증가)입니다. 즉 이번 스텝의 지원자에게 대출해주고 돈을 돌려받았는지 여부는 에이전트의 이득뿐 아니라, 그 다음 지원자가 다시 대출을 지원했을 때 승인받을 확률에도 영향을 줄 것입니다.
- 에이전트:
- MU(Maximum utility) 에이전트: 이익을 극대화하는 것(즉 무조건 갚을 확률이 가장 높은 사람에게 빌려주는 것)이 목표입니다. 아예 지원자의 소속 집단은 고려하지 않습니다. 임계값 $\tau$ 를 정해서 그 이상의 신용도를 가진 지원자만 대출을 승인하게 됩니다. 임계값은 상수이며, 집단에 따라 달라지지 않습니다.
- EO(Equal opportunity) 에이전트: 두 집단의 True positive rate(즉, 빌려주었는데 갚은 사람의 비율)가 차이가 나지 않도록 제약을 가하면서 최적의 결정 규칙을 찾습니다(이는 2016년에 이 논문에서 처음 제시된 개념입니다.). 즉 이 에이전트의 임계값은 집단에 따른 차이도 있고, 매 스텝마다 샘플의 각 집단 별 인구수 및 신용도 분포에 따라 달라지게 됩니다.
- 평가 지표: 각 에이전트의 정책이 집단의 평균 신용도, 신용도 분포, 조건부 상환 확률, 승인한 대출의 수, TPR 등 여러 가지 지표에 어떤 영향을 미쳤는지 비교할 수 있습니다.
시뮬레이션에 따른 장기적 영향력이 보여주는 결과는 기존에 이 세팅을 가지고 비교적 단기적 영향력에 대한 분석만 진행한 기존 연구와는 상당히 달랐다고 합니다.
가장 왼쪽 그래프가 초기 상태의 각 집단의 신용도 분포입니다. 집단2가 집단1보다 불리한 위치에 있는 것을 확인할 수 있죠. 좌측의 두 그래프는 각 에이전트의 20,000스텝 후 신용도 분포 결과인데요. 이 결과를 보기 전에, 우선 기존 연구에서 보고된 것처럼 EO 에이전트의 정책이 집단2에게 불리하게 설정된 편향을 보정하는지(초반의 신용도 분포 차이를 줄이려고 하는지) 한 번 살펴봅시다.
첫번째 그림은 EO 에이전트가 매 스텝 설정하는 각 집단의 임계값 변화입니다. EO 에이전트의 정책은 초반에 MU 에이전트에 비해 집단2에게 더 낮은 임계값을 설정하고, 그래서 집단2에게 과하게 많은 대출을 승인해 줍니다(그럼으로써 격차를 줄입니다). 그 결과, 두번째 그림에서 전체 누적 대출 승인 수(Cumulative loans)를 비교해보면 EO 에이전트의 정책이 MU 에이전트보다 두 집단의 격차를 좁혔다는 것을 확인할 수 있습니다. 그러나 임계값을 낮추는 방식으로 동작했기 때문에, 대출 승인 수가 아닌 신용도 자체(Population credit) 를 비교해보면, 오히려 MU 에이전트보다 두 집단의 격차가 벌어지는 것을 확인할 수 있습니다. 즉, EO 에이전트가 편향을 줄이고 있는가? 라는 질문에 답을 할 때, 어떤 지표를 사용하느냐(대출 승인 수 갭 v.s. 신용도 갭)에 따라 다른 해석이 나타날 수 있다는 것입니다. 이는 단발적인 영향 평가에서는 알 수 없는 부분이겠죠.
다시 맨 처음 그림으로 돌아가 이번엔 MU 에이전트의 장기적 영향력에 대해 확인해 봅시다. MU 에이전트의 20,000 스텝 후 양 집단의 신용 분포를 보면, 두 집단 다 차이 없이 신용도가 많이 떨어졌다는 것이 보이시나요? 기존 연구 결과는 MU 정책 하에서는 집단의 평균 신용 점수는 바뀌지 않는다고 했었다고 합니다. 이런 차이가 나오는 이유는, 분석적 이론은 오직 개인에 대한 비용 함수가 기대된 점수 변화보다 엄격한 상황만 가정하기 때문입니다. 그래서 개인들이 이미 최대 신용 등급을 가지고 있고 그 점수가 늘어날 곳이 없을 때는 적용되지 않아요. 이런 edge effect가 있을 때는 결국 지원자들의 점수가 임계값 미만으로 떨어질 수밖에 없고 그럼 신용이 떨어지는 것입니다. 즉, 어떻게 edge case가 이론적 결과를 뒤집을 수 있는지 시뮬레이션으로 보여준 사례이기도 합니다.
또다른 재미있는 결과 중 하나는, EO 에이전트가 두 집단 간 TPR 격차를 줄이려고 하는 본래의 목표를 동적인 환경에서는 그다지 성공적으로 수행하지 못했다는 것입니다. 즉, EO 에이전트의 정책은 매 스텝마다 TPR을 동등하게 만들었을 뿐, 동적인 환경 전체에서 봤을 때는 그렇지 않았습니다.
위 그래프는 스텝이 진행됨에 따라 EO 에이전트의 재현율(recall) 차이, 즉 TPR 차이를 각 동적 환경과 정적 환경에서 시각화한 것입니다.
이런 현상이 어떻게 일어날까요? 부록에 일종의 예시를 기술해놓은 부분이 있어서 함께 적어보려 합니다. 간단한 예시이므로 이때 우리는 두 개의 타임 스텝 $t_1$, $t_2$만 고려하겠습니다. 또 전체 대출 지원, 승인 및 상환 여부가 따르는 분포를 $P(Y,\hat{Y},G,T)$ 라고 할게요. $Y$ 는 실제로 상환하는지 여부이며(예측하고자 하는 값이겠네요), $\hat{Y}$는 실제로 대출을 해주었는지(즉, 에이전트가 지원자가 갚을 거라 예측했는지 여부), $G$ 가 지원자가 소속된 집단 변수이고, $T$ 는 지원 시점입니다.
타임스텝 $T=t$ 에서 집단 $G=g$ 에 속한 지원자들의 재현율(recall)은 다음과 같습니다.
$R_t^g = P(\hat{Y}=1 \vert Y=1, t,g)$
그리고 EO 개념은 매 스텝마다 다음과 같이 각 집단마다 재현율이 같도록 제한하죠 (모든 $g \neq g’$ 에 대해 $R_t^g = R_t^{g’}$ ) . 그리고 두 개의 타임스텝에 대해 통합된 재현율 값은 다음과 같습니다.
$R^g_{t_1+t_2} = \sum_t P(\hat{Y}=1,t \vert Y=1, g) = \sum_t P(t \vert Y=1, g) P(\hat{Y}=1 \vert Y=1,g,t) = \sum_t P(t \vert Y=1,g) R_t^g$
한번의 타임스텝에서 한 번의 지원자만 뽑습니다. $t_1$ 에서 뽑힌 지원자가 집단1에 속한다고 해봅시다. 이 경우 집단2의 신용도 분포는 변하지 않고, 집단의 크기도 변하지 않기 때문에, $P(t_1\vert Y=1,g=2) = P(t_2\vert Y=1,g=2) =\frac{1}{2}$ 이고, 통합된 재현율 값을 보면
$R^{g=1}_{t_1+t_2} = \sum_t P(t\vert Y=1, g=1) R_t^{g=1}$
$R^{g=2}_{t_1+t_2} = { {R{t_1} + R{t_2}} \over 2}$
통합된 재현율 값이 집단 별로 동일하려면, $\sum_t P(t \vert Y-1,g) R_t^g = \frac{R{t_1} + R{t_2} }{2}$ 여야 합니다. 따라서 target 재현율 비율 혹은 집단의 조건부 상환 확률이 시간에 따라 변하지 않는 값이어야 하는 거죠. 동적 환경에서는 상환율이나 target 재현율 비율 모두 타임스텝을 거치면서 변하기 때문에, 각 스텝마다 재현율을 동등하게 하는 것이 전체 통합된 재현율 차이를 줄인다고 할 수 없는 것입니다.
이 외의 fairness gym에 대한 더 자세한 내용, 설치법 및 간단한 가이드 등은 https://github.com/google/ml-fairness-gym에서 확인해볼 수 있습니다. 또 대출 문제 외의 다른 데이터에 적용한 사례가 궁금하다면 이 곳에서 연구의 전체 내용을 읽어 보시는 것을 추천합니다.