세탁기 같은 AI: 소프트웨어 엔지니어링이 책임성에 대해 가르쳐준 것
요약
AI 기술이 채용 등 의사결정 과정에서 책임 소재를 모호하게 만드는 '세탁기(laundering machine)' 역할을 할 수 있음을 경고합니다. 알고리즘이 판단을 수학적 확률로 변환함으로써 편향의 근원을 숨기고 책임의 사슬을 끊어버리는 현상을 소프트웨어 엔지니어링의 추상화 관점에서 분석합니다.
핵심 포인트
- AI는 편향을 제거하는 것이 아니라 편향의 출처를 숨기는 역할을 할 수 있음
- 판단(Judgement)이 최적화 목표로, 재량(Discretion)이 확률로 변질됨
- 소프트웨어의 추상화 계층이 의사결정의 인과관계를 은폐할 위험성
- 자동화 기술의 혜택과 책임이 누구에게 귀속되는지에 대한 비대칭성 문제
만약 고용주가 내가 면접을 볼 가치가 있는지 결정하기 위해 AI를 사용한다면, 우리는 그것을 혁신이라고 부릅니다. 만약 내가 더 명확하게 글을 쓰거나 장애를 극복하기 위해 동일한 기술을 사용한다면, 우리는 그것을 부정행위라고 부릅니다. 알고리즘은 변하지 않았습니다. 오직 혜택을 받는 주체만 바뀌었을 뿐입니다.
역설 (The paradox)
AI와 노동에 대해 우리가 이야기하는 방식에는 제가 계속해서 생각하게 만드는 비대칭성이 존재합니다. 고용주가 수만 개의 지원서를 순위 모델 (ranking model)을 통해 처리할 때, 우리는 그것을 효율성이라고 부릅니다. 반면 지원자가 동일한 기술을 사용하여 자신의 생각을 정리하거나 인지적 장벽을 보완할 때, 언어는 갑자기 진정성, 공정성, 그리고 "부당한 이득"으로 변합니다.
기술은 변하지 않았습니다. 알고리즘도 변하지 않았습니다. 오직 한 가지 변수만이 바뀌었습니다. 바로 자동화로부터 누가 이득을 얻는가 하는 점입니다.
소프트웨어 엔지니어로서, 이러한 비대칭성은 우리의 진짜 이견이 AI에 관한 것이 아님을 말해줍니다. 그것은 누가 자신을 증폭시키기 위해 기술을 사용할 수 있는가, 누가 그것을 정당화해야 하는가, 그리고 자동화된 시스템이 타인의 삶을 결정할 때 누가 책임을 지는가에 관한 문제입니다.
편향 (Bias)은 흥미로운 질문이 아니다
채용 과정에서의 AI에 관한 대부분의 논쟁은 알고리즘에 편향 (bias)이 있는지 묻습니다. 일리가 있는 말이지만, 편향은 채용이 존재해 온 이래로 늘 존재해 왔습니다. AI가 차별을 발명한 것이 아닙니다. 더 심오한 질문은 AI가 **책임성 (accountability)**에 어떤 영향을 미치는가 하는 것입니다. AI는 _세탁기 (laundering machine)_가 될 수 있습니다. 저는 이 단어를 의도적으로 사용합니다. 돈세탁 (Money laundering)은 더러운 돈을 만들어내는 것이 아니라, 그 출처를 추적할 수 없을 때까지 돈의 외관을 바꾸는 것입니다. 실체는 그대로 유지되지만, 출처는 사라집니다.
당신을 거절한 채용 담당자는 책임의 사슬을 남깁니다. 누군가는 지원서를 읽었고, 누군가는 결론을 내렸으며, 누군가는 판단을 내렸습니다. 이제 그 동일한 거절을 지원자 추적 시스템 (Applicant Tracking Systems, ATS), 점수 산정 모델 (Scoring Models), 순위 알고리즘 (Ranking Algorithms), 그리고 설정 가능한 임계값 (Configurable Thresholds)을 통해 전달해 보십시오. 결과는 동일하지만, 결정에는 작성자가 없는 것처럼 보입니다. "채용 담당자가 이를 거절했다"는 "모델이 낮은 적합도 점수를 부여했다"로 변합니다. 판단 (Judgement)은 최적화 목표 (Optimization Objective)가 됩니다. 재량 (Discretion)은 확률 (Probability)이 됩니다. 거절은 사라진 것이 아니라, 객관적으로 보일 때까지 수학의 어휘로 옷을 갈아입은 것뿐입니다.
그것이 바로 세탁기입니다. 그것은 편견을 씻어내지 않습니다. 편견의 명백한 '기원 (Origin)'을 씻어낼 뿐입니다. 결과는 여전히 실재합니다. 오직 책임만이 파악하기 어려워질 뿐입니다.
모든 추상화는 인과관계를 숨긴다
여기서 소프트웨어 엔지니어링이 해줄 말이 있습니다. 우리의 학문 분야 전체는 추상화 (Abstraction) 위에 구축되었습니다. 우리는 각 엔지니어가 다른 모든 문제에 빠져 허우적거리지 않고 하나의 문제에 대해 추론할 수 있도록 인터페이스 (Interfaces), API, 프레임워크 (Frameworks), 플랫폼 (Platforms) 뒤에 복잡성을 숨깁니다. 추상화는 승수 효과 (Force Multiplier)를 가져다줍니다. 현대의 소프트웨어는 추상화 없이는 존재할 수 없었을 것입니다.
하지만 복잡성을 숨기는 모든 계층은 또한 **인과관계 (Causality)**를 숨깁니다. 우리는 관리 가능성을 위해 가시성 (Visibility)을 맞바꾸며, 대부분의 경우 그것은 훌륭한 거래입니다. API를 호출하는 웹 앱은 어떤 프로세서가 요청을 실행했는지 알 필요가 없습니다. 하지만 책임은 다릅니다. 소프트웨어 컴포넌트는 그 동작이 인터페이스를 통해 관찰 가능 (Observable)하기 때문에 내부 구현을 안전하게 숨길 수 있습니다. 책임은 그런 방식으로 작동하지 않습니다. 중대한 결정과 그 결정을 만든 인간 사이에 충분한 거리를 두면, 누가 판단을 내렸는지, 누가 위험을 수용했는지, 그리고 누가 결과에 대해 책임을 져야 하는지가 불분명해지기 시작합니다.
우리는 이미 엔지니어링에서 이러한 본능을 알고 있습니다. 로그(logs), 트레이스(traces), 배포 이력(deployment histories) 없이 프로덕션(production)을 실행하는 일은 결코 없을 것입니다. 인과관계(causality)가 불투명해지면 신뢰성(reliability)을 확보하는 것이 불가능해지기 때문입니다. 하지만 자동화된 시스템이 인간의 결정을 형성할 때, 우리는 우리 자신의 소프트웨어에서는 결코 용납하지 않을 수준의 불투명성을 일상적으로 수용하곤 합니다. 관찰 가능성(Observability)은 시스템이 실패한 후에 덧붙일 수 있는 것이 아닙니다. 책임성(Accountability)도 동일한 규칙을 따릅니다. 사회 기술적 시스템(socio-technical system)이 처음부터 귀속성(attribution)을 보존하도록 설계되지 않았다면, 책임은 나중에 마법처럼 나타나지 않을 것입니다.
아무도 결정하지 않았지만, 시스템이 결정했다
현대의 채용은 책상에 앉아 있는 채용 담당자에 의해 이루어지지 않습니다. 그것은 사회 기술적 시스템입니다. 즉, 사람, 소프트웨어, 정책, 인센티브, 그리고 모델들의 집단적(collective) 행동이 누가 일할 기회를 얻을지를 결정합니다. 분산 시스템(Distributed systems) 엔지니어들은 이것들이 어떻게 작동하는지 알고 있습니다. 하나의 마이크로서비스(microservice)에서 발생한 지연(latency) 버그는 큐(queue)를 통해 연쇄적으로 전달되어, 재시도(retries)를 유발하고, 데이터베이스(database)를 포화 상태로 만들며, 완전히 다른 곳에서 장애(outage)로 나타납니다. 모든 구성 요소는 명세(spec)대로 작동했습니다. 하지만 시스템 전체는 아무도 설계하지 않은 일을 해냈습니다.
채용도 같은 방식으로 작동합니다. 피처 엔지니어(feature engineer)는 예측 성능을 최적화합니다. 데이터 사이언티스트(data scientist)는 정확도(accuracy)를 평가합니다. 프로덕트 매니저(product manager)는 워크플로우(workflow)를 개선합니다. 인사(HR) 부서는 비용을 절감합니다. 조달(Procurement) 부서는 검증된 벤더(vendor)를 선택합니다. 모든 참여자는 _"내가 이 사람이 면접을 보지 말아야 한다고 결정했다"_라고 말하지 않고도 자신의 기여를 정직하게 설명할 수 있습니다.
하지만 집단적으로, 시스템은 정확히 그렇게 결정했습니다.
이 지점에서 분산된 책임(distributed responsibility)이 책임의 _부재(absent)_로 오해받곤 합니다. 하지만 엔지니어링에는 오래된 규칙이 있습니다. 모든 서비스에는 주인이 있다는 것입니다. 장애가 발생했을 때, 우리는 많은 사람이 만들었기 때문에 시스템에 주인이 없다고 말하며 어깨를 으쓱하지 않습니다. 우리는 조사합니다. 근본 원인(root causes)을 추적합니다. 복잡성은 귀속(attribution)을 위한 노력을 증가시킬 뿐, 그 필요성을 제거하지는 않습니다.
인간에게 미치는 결과라고 해서 더 낮은 기준을 적용해서는 안 됩니다.
대리인들은 과거를 상속받는다
"최고의 인물을 찾는다"는 것을 최적화할 수는 없습니다. 이 문구는 목표(objective)로 삼기에는 너무 모호합니다. 따라서 엔지니어링의 모든 분야에서 우리가 하는 것과 정확히 마찬가지로, 우리는 _대리 지표 (proxies)_를 최적화합니다. 역량을 위한 경력 연수, 신뢰성을 위한 지속적인 고용, 능력을 위한 명문대 졸업 여부 같은 것들 말입니다.
개별적으로 보면 이 중 어느 것도 불합리하지 않습니다. 문제는 대리 지표가 항상 정보를 버린다는 점이며, 또한 그것이 유도된 역사 속에 녹아 있는 가정들을 조용히 상속받는다는 점입니다.
만약 어떤 조직이 역사적으로 경력 단절이 있거나, 독특한 배경을 가졌거나, 유연한 환경이 필요한 장애를 가진 사람들을 간과해 왔다면, 그러한 결정들은 학습 데이터 (training data)가 됩니다. 모델은 그 패턴 뒤에 숨겨진 사회적 상황을 이해하지 못합니다. 모델은 단지 특정 지원자들이 역사적으로 선호되었다는 사실을 관찰할 뿐이며, 그렇게 하는 것이 자신의 점수를 높여주기 때문에 이를 충실히 재현합니다.
모델의 관점에서 이러한 패턴은 예측적 (predictive)입니다. 하지만 인간의 관점에서 그것은 그저 역사적인 배제 (historical exclusion)일 수 있습니다.
그리고 이는 자기 강화적 (self-reinforcing)입니다. 인간의 판단은 학습 데이터가 되고, 학습 데이터는 모델이 되며, 모델은 새로운 결정을 형성하고, 그 결정은 내일의 학습 데이터가 됩니다. "모든 모델은 틀렸지만, 일부는 유용하다"라는 말처럼, 위험은 모델이 현실을 단순화한다는 데 있는 것이 아닙니다. 그 단순화 과정에서 무엇이 버려졌는지 우리가 알아차리는 것을 멈추는 데 있습니다.
"인간 참여 (Human in the loop)"는 연극일 수 있다
표준적인 안심책은 "항상 인간이 루프 안에 있다 (always a human in the loop)"는 것입니다. 엔지니어링 관점에서 볼 때, 이는 시스템이 어떻게 작동하는지에 대해 거의 아무것도 알려주지 않습니다. 워크플로우에 단계를 삽입한다고 해서 감독이 보장되는 것은 아닙니다. 배포 승인 (deployment approval)은 검토자가 위험을 포착할 수 있는 정보, 거부할 수 있는 권한, 그리고 실제로 살펴볼 수 있는 시간을 가질 때에만 의미가 있습니다. 처리량이 검토 역량을 앞지르게 되면, 승인은 판단이 아닌 절차가 되어버립니다.
우리는 이러한 실패 모드에 대해 심지어 이름도 가지고 있습니다: 바로 자동화 편향 (automation bias) 입니다. 소프트웨어가 "대체로 옳다"라는 평판을 얻게 되면, 검토자들은 결과물을 의심하는 대신 확인하는 작업에 집중하기 시작합니다. 인간은 의사결정을 내리는 역할에서 조용히 승인 도장만 찍는 역할로 변질됩니다. 여기서 분산 시스템 (distributed systems)으로부터 유용한 구분이 하나 있습니다: 프로세스를 모니터링 (monitoring) 하는 것은 그것을 제어 (controlling) 하는 것이 아닙니다. 알고리즘의 추천을 지켜보는 채용 담당자가 그 영향력에 대해 반드시 제어권을 행사하고 있는 것은 아닙니다. 따라서 "인간이 개입했는가?"는 잘못된 질문입니다. 올바른 질문은 다음과 같습니다: 어디에서 인간의 판단이 실제로 개입되었으며, 추천이 생성된 이후에도 의미 있는 권한이 살아남아 있었는가?
모든 성숙한 공학 분야는 결국 동일한 교훈을 얻게 됩니다. 시스템은 단순히 작동한다는 이유만으로 신뢰받을 수 없다는 사실입니다. 시스템은 관찰 가능(observable)해야 하고, 감사 가능(auditable)해야 하며, 책임(accountable)을 질 수 있어야 합니다. 법은 이러한 본능이 사회적으로 구현된 형태입니다. 즉, 결정의 근거인 출처(provenance)를 보존하여, 그 결정이 배후에 있는 사람들과 그들의 의무로 거슬러 올라가 추적될 수 있도록 하는 메커니즘입니다.
고용 결정 또한 예외가 아닙니다. 자동화된 시스템이 당신을 거절했다면, 의미 있는 책임성(accountability)이란 단순히 소프트웨어가 관여했다는 사실을 아는 것 이상을 의미합니다. 그것은 어떤 데이터가 결정을 내렸는지, 어떤 정책이 이를 형성했는지, 누가 임계값(thresholds)을 설정했는지, 그리고 누가 이를 배포하는 것에 대한 책임을 수락했는지를 재구성할 수 있음을 의미합니다. 복잡성은 이러한 필요성을 줄이지 않습니다. 오히려 강화합니다.
왜냐하면 책임이라는 것은 다음과 같은 성질을 갖지 않기 때문입니다. 책임은 계산 자원(computational resource)이 아닙니다. 소프트웨어는 수천 개의 프로세서에 걸쳐 계산을 분산합니다. 클라우드 플랫폼은 인프라를 추상화합니다. 하지만 책임은 식별 가능한 소유자가 남지 않을 때까지 컨테이너화(containerized)되거나, 오케스트레이션(orchestrated)되거나, 부하 분산(load balanced)될 수 없습니다. 누군가는 여전히 무엇을, 왜, 어떻게 작동시켜야 하는지, 그리고 어떤 위험이 허용 가능한지를 결정했습니다. 그러한 결정은 환원 불가능한 인간의 영역으로 남습니다.
알고리즘에는 도덕적 주체성(moral agency)이 없습니다. 신경망(neural network)은 법정에 출두하여 채용 정책을 방어하거나, 자신의 결정으로 삶이 바뀐 사람에게 사과할 수 없습니다. 위험은 컴퓨터가 사람처럼 행동하기 시작하는 것이 아니었습니다. 위험은 사람들이 책임이 자신들이 아닌 시스템에 있다고 믿기 시작하는 것입니다.
따라서 이 에세이 전체를 관통하는 하나의 아이디어가 남는다면, 그것은 바로 이것입니다:
지능적인 사회를 측정하는 진정한 척도는 의사결정을 얼마나 성공적으로 자동화하느냐가 아닙니다. 그 결정들이 자동화된 이후에 인간의 책임성을 얼마나 신중하게 보존하느냐입니다.
책임성 (Responsibility)은 최적화하여 없앨 수 있는 것이 아닙니다. 추상화 (Abstracted away)할 수도 없으며, 가상화 (Virtualized)할 수도 없습니다. 우리가 구축하는 모든 시스템의 정당성은 결국 알고리즘의 지능에 달려 있는 것이 아니라, 시스템을 구축하고, 배포하며, 관리하는 사람들이 그 결과에 대해 눈에 보이고 입증 가능한 책임을 지려는 의지에 달려 있기 때문입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기