인공지능, 성능만이 문제가 아니다
들어가는 글
딥러닝을 공부를 처음 하게 되면 모델 구현, 데이터 전처리 등의 코드 구현을 먼저 연습하고, 익숙해지기 위해 여러가지 대회나 벤치마크 데이터셋으로 성능을 높이는 연습을 하게 됩니다. 여기서 성능을 평가하는 기준은 각 task에 맞춰서 가장 간단하게는 loss, 정확도 등의 지표를 사용하게 될겁니다. 하지만 실제 프로젝트를 하거나 업무에 적용하려고 한다면, 단순히 점수를 높이는 것 이상의 고민이 필요합니다.
만약 여러분이 이미지의 위조 여부를 판별하는 인공지능을 만든다고 생각해 봅시다. 만약 대회라면 주어진 테스트셋의 이미지들에 대해서 얼마나 높은 정확도를 달성하는지에 대해서만 고려하면 됩니다. 하지만 이를 실제 서비스로 제공한다면 다릅니다. 아래의 질문에 대해서 생각해 볼게요.
- '위조 이미지를 위조되지 않았다고 판별하는게 치명적일까요, 위조되지 않은 이미지를 위조되었다고 판별하는게 치명적일까요?'
- 인공지능 모델이 100% 정확한 결과를 내놓을 수는 없을 겁니다. 필연적으로 틀리는 경우가 발생할 텐데, 어떤 오류가 더 치명적일까요? - '이 모델이 내놓은 판별 결과는 신뢰할 수 있을까요?'
- 사람들이 인공지능이 내놓은 판별 결과를 보고 납득할 수 있을까요? 이 인공지능이 내놓는 결과가 법정 증거같은 걸로도 사용될 수 있을까요?
위 질문에 정답은 없습니다. 서비스 유형이나 대상에 따라 답이 달라질 수도 있고, 중요하지 않은 질문일 수도 있습니다. 하지만 분명 모델의 정확도를 높이는 것만으로는 해결할 수 없는 질문들인 것은 확실합니다.
개인적으로 이런 것들에 대한 고민이 있었고 그 내용을 공유하고 싶었는데 정리하기 힘들었는데, kaggle에 관련하여 잘 정리된 내용이 있어 이를 바탕으로 제 사견을 추가하여 글을 작성하려고 합니다. 지금부터 이를 디자인적 측면에서 살펴보는 Human-centered Design 내용과, AI에서 발생할 수 있는 편향에 관련한 문제 2가지를 살펴보도록 하겠습니다!
참고:
https://www.kaggle.com/learn/intro-to-ai-ethics
Human-Centered Design(HCD) for AI
Human-Centered Design(이하 HCD) for AI는 인간의 요구를 들어주는 인공지능 디자인을 의미합니다. 개발하는데 디자인이라니? 라고 생각할 수도 있지만 결국 서비스를 개발하는 것이기 때문에 당연히 서비스에 대한 이해도를 갖추고 개발하는 것이 훨씬 좋을 겁니다.
Kaggle에서 HCD를 위해 고려하면 좋을 만한 사항들을 잘 정리해 주었기 때문에 하나씩 살펴보면서 이야기해보도록 하겠습니다.
1. 사람들의 요구를 파악하여 명확한 문제 정의하기
"명확한 문제 정의"는 어떤 서비스를 기획하든 가장 중요한 것입니다. 명확한 문제가 없는데 해결 방법이 존재할 수 있을 리가 없죠? 문제를 명확히 정의하기 위해선 사람들의 진짜 니즈가 무엇인지를 파악하는 것이 중요합니다. 가장 좋은 것은 해당 문제를 겪는 사람들과 같이 생활하거나 일을 해보는 것이겠죠. 그게 아니면 설문 조사라도 진행을 해서 사람들의 문제를 간접적으로라도 경험을 해보는게 좋습니다.
실제 사례를 통해 살펴볼까요?
한 회사는 간 이식 수술을 받은 환자들에게 주어지는 면역억제제의 용량 결정 과정에서 오류가 발생하는 문제점에 대한 솔루션을 개발하기 위해, 직원들이 직접 병원에서 정보를 수집했습니다. 의사, 간호사, 환자들이 어떤 식으로 약을 처방하고 처방받는지, 어떤 절차를 따르는지를 직접 관찰하고, 환자들의 생각과 어려움을 인터뷰하고 그 영상을 회사 내 팀원들이 모두 함께 보는 등의 노력으로 문제를 구체적으로 살펴보았습니다.
이처럼 단순 데이터만 받아서 분석하는 것보다 실제 현장에서 경험을 하는 것은 문제를 보다 입체적으로 바라볼 수 있으며, AI 모델이 실제 현장에서 유용하게 적용될 수 있는 개발을 할 수 있게 됩니다.
2. AI 시스템을 도입하는 것이 정말 가치를 창출할 수 있는지에 대해 검토해 보기
요즘 딥러닝이니 대세니까, 딥러닝이 좋다고 하니까 무작정 딥러닝을 시스템에 도입해 보려고 하는 것은 좋지 않습니다. AI 시스템을 도입하기 전에 이것이 정말 이득인지를 먼저 면밀히 살펴봐야 합니다.
- AI 시스템이 사람들이 정말 원하는 해결책일까?
- AI 시스템을 도입하는 것이 기존의 시스템보다 더 좋을까?
- AI가 과거 AI를 사용하지 않은 시스템들보다 더 효율적일까?
이 부분은 저도 프로젝트 경험을 통해서 뼈저리게 느꼈던 부분입니다. AI 딥러닝을 공부했고 이를 통해서 문제를 해결하고 싶었지만, 생각보다 딥러닝을 굳이 사용할 필요가 없는 부분이 굉장히 많았기 때문입니다. 굳이 복잡한 딥러닝을 사용하지 않고 기존의 단순한 알고리즘이나 규칙 기반 시스템으로도 충분히 문제를 해결할 수 있는 경우가 많았습니다.
실제 사례를 통해 살펴볼까요?
아마존은 AI 기반 채용 시스템을 이용해 사람들을 보다 공정하고 효율적으로 채용하려 했지만, 이 AI 시스템은 여성 지원자에게 불리하게 작용한다는 것을 뒤늦게 알게 되었습니다. 이는 AI 채용 시스템이 과거 차별적인 채용 데이터를 그대로 학습했기 때문이었습니다. 결국 AI 채용 시스템은 원래 해결하려 했던 문제를 해결하지 못했고, 아마존은 이 시스템을 폐기해야 했습니다.
이처럼 AI의 도입이 반드시 기존 시스템보다 좋은 결과를 가져오지는 않습니다. AI 시스템이 정말 필요한 해결책인지, 기존의 방법을 대체할만큼 효율적인지 등을 꼼꼼히 검토해보는 것이 필수입니다.
3. 데이터 수집, 모델 훈련 등의 과정에서 발생할 수 있는 사회적 영향에 대해 고려해 보기
AI와 관련한 윤리 문제는 항상 이야기되는 화제입니다. 그런만큼 저희가 AI 서비스를 기획할 땐 항상 이로 인해 발생할 수 있는 개인, 사회에 대한 영향력에 대해 검토해 볼 필요가 있습니다. 야심차게 만든 서비스가 악용되거나 개인정보 문제를 일으키면 안되겠죠?
실제 사례를 통해 살펴볼까요?
마이크로소프트에서는 Tay라는 챗봇을 출시했었습니다. Tay는 트위터에서 사용자들과 실시간으로 실제 사람처럼 트윗을 주고 받았으며, 실시간 데이터를 학습하면서 점점 더 정교해지는 챗봇이었습니다. 하지만 개발자들이 사전에 챗봇에 대한 검열과 필터링을 준비했음에도, 너무나도 다양한 유형의 사용자들이 Tay가 나쁜 말을 하도록 유도하는데 성공했고, 결국 Tay는 혐오 표현과 차별적인 발언 등으로 인해 서비스를 중단하게 되었습니다.
https://blogs.microsoft.com/blog/2016/03/25/learning-tays-introduction/
이처럼 처음 의도는 사용자들과 실제 사람처럼 즐겁게 대화를 주고 받는 것이었을지라도, 결국 의도와 다르게 혐오와 차별을 조장하는 서비스가 되어버릴 수 있습니다. 이런 사례는 챗봇에서만 발생하는 것이 아닙니다. 딥페이크 기술도 원래는 영화나 예술 분야의 창작을 돕기 위한 기술이었지만 현재는 가짜 뉴스, 사기, 명예 훼손 등의 범죄에 사용되고 있습니다.
그렇기 때문에 어떤 시스템을 기획할 때, 이 서비스가 미칠 수 있는 영향에 대해서 충분히 고민을 해보고, 생길 수 있는 부작용에 대해 충분한 대비책을 세우는 것이 중요합니다.
4. AI를 사용하지 않은 prototype 서비스 시행해 보기
AI를 도입하는 것은 굉장히 비용이 드는 일입니다. 돈도 많이 들고, 시간도 많이 필요한 작업이죠. 이런 거대한 비용을 투자하고도 기대에 부응하지 못한다면 굉장한 손해를 보게 됩니다. 이런 문제를 방지할 수 있도록, AI를 사용하지 않은 프로토타입의 서비스를 먼저 적용해 보는 것이 좋습니다. 간단한 머신러닝이나 규칙 기반 알고리즘 등을 사용해 프로토타입 서비스를 시행해보고, 사용자들의 피드백을 받는 것이죠.
실제 사례를 통해 살펴볼까요?
한 영화 스트리밍 서비스에서는 AI 추천 시스템을 도입하기 전에 먼저 영화를 좋아하는 사람들을 모집하여, 직접 자신과 취향이 유사한 사용자들에게 영화를 추천해 주도록 하였습니다. 이 과정에서 추천 받은 사용자와 추천한 사용자들의 피드백을 받아 추천 시스템에 필요한 데이터들을 모을 수 있었습니다. 이 과정에서 얻은 데이터들을 바탕으로 회사는 더 좋은 AI 추천 시스템을 개발할 수 있었습니다.
이처럼 시작 단계에서는 AI를 사용하지 않은 적은 비용으로 프로토타입 서비스를 시행해 본다면, 거기서 얻은 피드백을 바탕으로 AI를 도입하는 것이 적절한지, 도입한다면 어떤 점이 고려되어야 할 지를 판단할 수 있게 됩니다.
5. 사용자들에게 선택지 제공하기
AI 서비스가 전체적으로 도움이 되더라도, 특정 사용자들은 이를 원치 않을수도 있습니다. 이런 사용자들에게 선택지를 제공해주는 것만으로도 서비스에 대한 만족도를 크게 높일 수 있습니다.
실제 사례를 통해 살펴볼까요?
한 온라인 화상 회의 서비스는 사용자들의 개인 정보 보호를 위해 배경을 자동으로 흐리게 만들어주는 기능을 개발했습니다. 하지만 특정 환경에서 잘 작동하지 않을 수도 있고, 사람들의 의도와 다르게 작동할 수도 있기 때문에 배경을 흐리기 옵션을 선택할 수 있도록 함과 동시에 신고 버튼을 만들었습니다. 이를 통해 사용자들은 이 새로운 기능을 이용하지 않을 수도 있으며, 문제가 있을 경우 신고를 하는 것으로 서비스에 대한 만족도를 높일 수 있었습니다.
6. 위험을 방지하기 위한 안전장치 마련
개발하는 인공지능 시스템이 오작동을 일으키거나 문제를 일으킬 수 있다면, 이에 대한 방지책을 마련하는 것도 중요할 겁니다.
실제 사례를 통해 살펴볼까요?
구글의 Red team은 AI 서비스를 출시하기 전에 모델에 대해 다양한 공격을 사전 테스트 해보는 팀으로 서비스가 마주할 수 있는 다양한 상황을 사전 시뮬레이션해보고, 이에 대한 방지책을 세웁니다. Red team은 의도적으로 AI 서비스에 비속어나 불쾌한 질문을 던져 AI가 적절하지 못한 반응을 보이도록 유도하고, 이를 보고하여 개발팀에서 이를 보완합니다.
테슬라도 자율 주행차를 내놓기 전에 Red team을 운영해 가상 상황에서 자율 주행차에 닥칠 수 있는 여러 시나리오를 시험해 보도록 하고, 그 결과를 토대로 발생할 수 있는 사고들을 사전에 방지합니다.
이렇게 좋은 HCD를 위해 고려해야 하는 6가지 사항들에 대해 알아봤습니다.
- 사람들의 요구를 파악하여 명확한 문제 정의하기
- AI 시스템을 도입하는 것이 정말 가치를 창출할 수 있는지 검토해 보기
- 데이터 수집, 모델 훈련 과정에서 발생할 수 있는 사회적 영향에 대해 고려해 보기
- AI를 사용하지 않은 프로토타입 서비스 시행해 보기
- 사용자들에게 선택지 제공하기
- 위험을 방지하기 위한 안전장치 마련하기
이 6가지 사항들은 서로 겹치는 영역도 있고, 복합적이기도 합니다. 여기에서 말하지 않은 사항들이 추가적으로 있을 수도 있겠죠? 중요한건 AI 시스템에 대해서 다양한 방면으로 충분히 사전에 고민을 해보는 것입니다. 공부를 하면서도 때로는 개발 외적인 요소들에 대해서도 한번씩 고민해 보는 것은 어떨까요?