Hitchhiker’s guide to trustworthy AI[3]
지난 번에 이어 AI를 테스팅하는데 어려움을 이야기해볼까 합니다. 우선 SW 테스팅을 할 때 무엇이 필요할까요? 물론 이에 대한 이야기를 하자면 한도끝도 없겠지만, 가장 많이들 하시는 블랙박스 테스트를 기준으로 삼자면, (1) 대상 기능의 명세, (2) 테스트 케이스(입력-기대출력), (3) 버그를 정의하는 기준 이라고 생각합니다. 국제표준이나 학문적 정의는 아니구요, 실무적인 관점에서 딱 떠오르는 것들입니다. 이 관점에서 AI를 하나의 기능 모듈이라 생각하고 테스트를 하려고 봤을 때… 우선 (1)에서 부딪힙니다. 입력데이터에 따라 인공지능이 어떻게 판단할지 인간은 아직 알지 못합니다. 그저 미리 학습데이터를 가지고 인간이 생각하는 바와 최대한 동일하게 판단해주길 기대할 뿐이죠. 이는 (3)이 어려운 이유로 이어집니다. 소프트웨어 버그는 기능이 의도한데로 동작하지 않는 겁니다. 그런데 AI는요? 비슷하게 의도대로 동작하지 않는 것이지만, 조금 더 그 경우가 다양합니다. 오탐과 미탐이 존재하죠…모델 정확도가 95%가 나온다는데, 이는 코드가 잘못되면 무조건 버그가 발생하는 소프트웨어와는 다릅니다. (2)를 볼까요? 소프트웨의 경우 테스트케이스를 잘 설계하는 것이 중요합니다. 가능한 입출력을 모두 테스트해보는 것은 비용과 공수에 한계가 있으니, 입출력 범위를 분할하여 경계값 테스트, 대표값 테스트 등 효율적으로 테스트 커버리지를 확보하는 기법을 사용합니다. AI는 어떨까요? 테스트 데이터를 준비해서 모델 입력으로 판단 혹은 추론시킵니다. 소프트웨어와 마찬가지로 몇가지 대표적인 테스트 데이터를 구성해서 그 정확도를 측정할 수도 있을 겁니다. 하지만 충분할까요? 이론적으로는 테스트 해야할 데이터 개수는 무한대입니다. 자율주행 인공지능 모델이라 한다면 도로 위에 사진이 밤낮/기상/노면상태/보행자유무 등 준비해야 할 클래스만해도 수십가지 조합이 나오고, 이미지 데이터라는게 화소 몇개 달라져도 완전히 다른 테스트 케이스가 될 수 있습니다. 어쩌란 말이냐? 라는 이야기가 저절로 나옵니다. 이에 대해서는 다양한 연구결과와 국제표준이 있습니다. #AI quality, #AI testing 등의 키워드를 검색하시면 이미 꽤나 많이 나오고 있구요, ISO/IEC TR 29119-11:2020에서도 그간 제시된 연구 결과들이 정리되어 표준으로써 정의되어 있습니다. 잉? 그렇게 거창하게 AI 테스팅의 어려움을 이야기하더니, 갑자기 싱겁게 답을 내놓고 만다고? 사실 더 어려운 점은 단순히 품질 관점의 테스팅이 아니었습니다. 다음 편에서 이에 대한 말씀을 드려보고자 핮니다. 왜 국제사회는 인공지능의 윤리를 이야기 하는걸까? 여기서 나오는 신뢰성이란 용어는 도대체 무엇일까?