"AI 프로젝트 테스트는 모델 입출력과 출력이 포인트"

[심기보의 AI프로젝트 성공 비결⑮] 테스트

전문가 칼럼입력 :2021/10/31 18:47    수정: 2021/11/01 08:24

심기보 전 정보통신기술사협회장

구현이 완료되면 테스트 단계로 들어간다. AI 시스템이라도 종래의 업무 시스템 개발 프로젝트와 동일한 테스트나 모델 단위 테스트를 실행한다. 단 모델 단위 테스트는 종래의 업무 시스템과 다른 발상이 필요하다.

업무 시스템을 개발할 때 테스트를 실시하는 목적은 무엇일까? 보통 '기대한 결과를 얻지 못한다'는 시스템 부적합을 피하기 위해 실행하는 것이다. 설계 단계에서 정의한 기능 요건이나 비 기능 요건을 만족하고 있는 지를 확인하기 위해 테스트를 설계, 실시하는 것이다. 한편, 기계학습 모델은 요건정의, 설계 단계에서 명확히 되어 있지 않은 ‘학습’이라는 프로세스를 거쳐 구현한다. 그 결과, 모델은 종종 작성자가 의도하지 않은 예측 외의 동작(behavior)을 하기도 한다. 그래서 기계학습 모델을 테스트하기 위해서는 모델 동작을 제어(컨트롤)하기 위한 테스트 설계가 필요하다.

모델 테스트를 설계할 때에는 먼저 구현된 모델의 동작 패턴에 대해 깊이 알 필요가 있다. 모델이 예상 외의 동작을 하는 것은 기계학습 모델의 학습 프로세스를 완벽히 컨트롤할 수 없기 때문이다. 이 한계에 대한 이해를 돕기 위해 아래의 2가지 예, 즉 AI 시스템 해킹과 인간적(사회적) 편견이 반영된 바람직하지 않은 출력 예를 설명한다.

AI 시스템에서 문제가 되고 있는 해킹 방법은 데이터를 통한 조작이다. AI 시스템은 입력된 학습 데이터를 학습하고 그 학습 결과를 토대로 신규 데이터에 대한 추론(Inference)을 도출하기 위한 시스템이다. 해커는 이 신규 데이터에 의도한 노이즈(Noise)를 추가함으로써 모델에서 잘못된 추론을 행하도록 한다. 또, 모델 훈련 시 잘못된 데이터를 제공해 학습을 왜곡할 수도 있다.

AI 시스템 해킹이 문제인 것은 해킹된 사실을 사람이 알아채기 힘들다는 것이다. 이미지 인식을 사용한 모델의 경우, 고작 1픽셀을 변경함으로써 다른(別) 추론 결과를 도출할 수 있다. 이것은 '모델이 이렇게 동작할 것' 이라는 인간의 예상을 넘어서는 부적합이 발생하기 쉽다는 것을 말한다. 또, 기계학습 프로세스가 내포하는 불확실성도 해킹 대상이 된다는 점도 유념해야 한다.

해킹 외에 두 번째 예는 인간적(사회적) 편견이 반영된 출력이다. 최근, 자연 언어 처리를 이용한 AI 시스템에서 오픈 데이터, 스크레이핑(scraping) 데이터 학습을 기반으로 특정 정치적 화제나 차별 경향을 학습하는 예가 발생하고 있다. 학습 데이터 경향을 의도치 않은 형태로 모델이 반영해버리는 것이다. 학습 데이터를 완전히 컨트롤하는 것은 곤란하므로 본 가동 운영 후에도 알아채지 못하는 사이에 진행해버릴 가능성이 있다.

이러한 과제에 대응하기 위해서는 구축한 모델 동작이나 가동 범위를 잘 아는 것이 중요 하지만 모델의 가동을 명확히 하기 위해 모델 내부의 파라미터(변수) 그 자체를 파악하는 것은 어려운 일이다. 그래서 모델의 동작은 '입력을 바꾸면 출력은 이렇게 변한다'는 입력과 출력의 관계성을 검증함으로써 파악할 수 있게 된다.

기계학습 모델의 단위 테스트에 있어서도 이 관계의 검증을 이용한다. 즉, 데이터 특정 조작과 그 영향 확인이라는 관계성을 검증함으로써 모델의 가능 범위를 간접적으로 알 수 있는 것이다. 기계학습 모델의 단위 테스트를 위한 구체적인 방법으로 적대적 샘플이나 메타모르픽 테스팅이라는 방법이 제안되고 있다. 아래에서 이 두 개의 방법을 알아 본다.

적대적(敵對的) 샘플 테스트

적대적 샘플을 사용한 테스트에서는 학습된 모델의 편차를 검증한다. 앞에서 소개한 AI 시스템의 해킹을 테스트로서 실시하는 것이다. 추론(Inference) 대상 데이터를 의도적으로 변경해 추론에 미치는 영향을 검증한다. 모델 출력에 대한 수치(Value)적인 검증은 PoC, 구현 시점의 모델의 정확도 검증에서 이미 실시하고 있다. 그래서 적대적 샘플 테스트는 모델 동작(behavior)에 주목한다. 업무상 영향이 큰 경우를 테스트 패턴으로 선택해 필요한 데이터를 수집한다. 그리고 수집한 데이터를 수정해 모델의 동작을 확인한다. 이 경우의 수정은 '속성 데이터 성별을 모두 여성으로 한다'는 처리다. 개변한 데이터를 사용해 추론과 결과의 변화를 통해 모델 편차를 검증한다.

메타모르픽(Metamorphic) 테스팅

또 하나의 방법인 메타모르픽 테스팅은 알고리즘 안전성을 검증하는 테스트로 모델 조작이 의도대로 반영되는지를 검증한다. 의도적으로 변경한 데이터를 이용해 학습과 추론(Inference)을 행한다. 변경에 맞춰 출력 기대치를 설정해 두고, 변경한 데이터를 사용해 실시한 학습과 추론의 출력 치와 비교한다.

예를 들면, 채색 특징량이 되는 RGB치를 바꿔 입력해 이미지 인식 모델에 학습된 경우 어떻게 가동할까? 이미지에 대해 추론을 할 때에는 정확도가 저하된다. 그러나 추론 대상이 되는 이미지에 대해서도 동일한 RGB치의 교체 처리를 한 경우, 이론상으로는 원래의 알고리즘과 동일한 출력이 된다고 생각할 수 있다. 그 외 'CNN(Convolutional Neural Network)' 이라는 알고리즘은 회전, 정규화, 정수치 부가 등을 행한 데이터로 학습해도 추론 대상 데이터에 대해 동일한 처리를 추가하면 출력이 변하지 않는 경우도 확인할 수 있다.

이렇게 이론상, 본래 영향을 줄 수 없는 변경만이 아니라 모델 측이 영향을 미치게 하지 않는다고 하는 검증을 실시한다. 이런 방법으로 학습과 추론에 대한 조작 견고성을 검증할 수 있다. 여기서는 두 개의 방법을 소개했지만 모델 단위 테스트는 아직 연구 단계다. 무엇을 가지고 테스트를 완료할지는 AI 전문가 사이에서도 의견이 나눈다. 실제 AI 시스템 구축 프로젝트에서는 릴리스(Release) 전에 모델 부적합을 가능한 한 줄여 리스크를 줄이는 것이 필요하다. 이를 위해 다양한 각도에서 모델의 단위 테스트를 실시하는 것이 중요하다.

모델 이외 테스트 포인트

테스트 단계는 모델 단위 테스트만이 아니라 업무 시스템과 연계한 테스트도 실시한다. 업무 시나리오 테스트, 장애 회복 테스트, 사용자(User) 부문의 최종 업무 확인 등을 실시한다. 이제 각 테스트에 있어 종래 시스템과 다른 포인트를 설명한다.

기능 간 결합 테스트

종래의 애플리케이션 기능과 기계학습 모델을 연결해 사양대로 동작하는 것을 검증한다. 본 가동 데이터를 이용한 데이터 플로우에 착안해 검증한다. 학습된 기계학습 모델은 학습 기반과 추론 기반, 추론 기반과 업무 시스템, 이 두 단계로 업무 시스템과 결합한다. 이 시스템 간 연계에서 전자는 학습된 모델 그 자체를, 후자는 추론 결과인 출력 데이터가 된다. 이들에 관한 데이터 플로우의 연계 테스트를 실시한다.

연계 테스트 실시때는 모델 및 학습 데이터 백업 모듈도 검증

결합 테스트를 실시한 후 실제 운용을 할 수 있는 지를 검증한다. 요건정의에서 결정한 업무 플로우에 따라 AI 시스템 기능의 전후 처리를 연계한 단번에 관통하는 업무 시나리오를 작성한다. 업무 시나리오 테스트는 모델에서 처리하는 것 외에  불규칙(irregular) 처리에 해당하는 영역에 대해서도 검증한다. 불규칙 처리에 과제가 있는 경우 특수성이 높은 처리라면 우선은 운용에서 처리하는 것이 일반적이다.

장애 회복 테스트

장애 회복 테스트는 DB의 백업 파일을 복원할 수 있는지, 혹은 복원 후에 업무 시나리오를 문제없이 실행할 수 있는 지를 검증한다. AI 시스템에서는 학습과 추론(Inference) 시 모델 에러나 데이터 및 플로우 에러 등이 장애의 원인이 되기 쉽다. 예를 들면 배치(Batch) 모델의 실행 에러가 발생한 경우, 과거의 모델로 바꿀지 긴급하게 재 학습이 필요하게 된다.  이러한 업무에 미치는 영향이 커지게 되므로 주의가 필요하다.

장애에 대응하기 위해서는 학습 데이터 및 학습된 모델의 백업을 실시, 어느 정도 과거의 모델을 시스템 내에서 유지한다. 장애 발생 시 이러한 백업 데이터를 연계함으로써 복원 가능한 상태가 될 수 있다. 테스트 때는 이러한 연계가 원활히 행해지는지 검증한다. 또, 업무 시스템 측에서도 장애 발생시의 시나리오를 예측해 대응을 검증한다.

사용자(User) 부문 최종 업무 확인

인수 테스트는 사용자 부문이 주체가 되어 최종 업무를 확인한다. 테스트 케이스나 테스트 시나리오도 사용자 부문이 주체가 되어 작성한다. 개발자 측은 동작(behavior)의 불확실성이나 배치 처리의 타이밍 등을 사용자 부문과 공유하는 것이 중요하다. 특히 AI 시스템 출력은 업무 관점에서 확인 하는 것이 필요하다. 결합된 업무 시스템이 출력하는 양식이나 리포트를 기본으로 과거의 경향과 조회, 사용자 의견 수집 등을 정성껏 실행할 필요가 있다.

AI 시스템 구현이나 테스트는 아직은 어림으로 실시하는 단계로, 조직적으로 노하우가 정착되어 있지 않은 실정이다. 정해진 정답이 없으므로 특히 아키텍처 설계, 모델 단위 테스트 설계 등은 개발 벤더나 데이터 사이언티스트 뿐 아니라 사내의 업무 담당자 등 전문가 협조가 불가결하다.


필자 심기보는...

1976년부터 한전에서 SW개발자로 전산업무를 시작했다. 30여년간 정보화 사업 기획, 개발, 운영업무를 수행하면서 SI사업 등 발주관리 전문가로 일했다.

심기보 전 정보통신기술사협회장

국내 최초로 FP(기능점수)법에 의한 SW사업대가 기준연구 및 보급으로 SW사업 선진화에 기여했다. SEC 정책자문위원과 SW사업분쟁조정위원회위원, 정보통신기술사협회장, KAIST 전산학부 겸직교수, SW정책연구소 초빙연구원 등을 지냈다. 숭실대 대학원에서 'FP법을 이용한 다중회귀 분석적 SW사업대가 산정모델 연구'로 박사 학위를 받았다. 현재는 심기보기술사설계사무소를 설립해 SW설계‧견적‧감정 일을 하고 있다. 특히 SW사업 분쟁방지를 위한 SW사업 요건정의 및 기본설계 전문가로 활동하고 있다.

*본 칼럼 내용은 본지 편집방향과 다를 수 있습니다.