모델 검증이 필요한 이유
모델 성능은 모델을 학습할 때도 확인할 수 있다. 모델을 학습하는 동안 우리는 정확도나 손실함수 값을 통해 얼마나 잘 학습하고 있는지 확인한다. 하지만 이를 통해 모델의 세부적인 성능을 평가한다고 할 수 없다.
첫번째로 하나의 성능지표만으로는 모델이 복잡한 비즈니스 문제를 해결할 수 있다고 보장할 수 없습니다. 특히 데이터가 불균형할 경우 단일 지표가 배포시 모델의 성능을 추측하기가 어럽다. 예를 들어, 암을 진단하는 모델을 개발한다고 했을때, 모델이 암 환자를 정상으로 판단했을 때의 리스크는 매우 크다. 또한 보통 암 환자보다 정상인이 더 많기 때문에 클래스 분포도 균형적이지 않다. 만약 이 모델을 정확도로만 평가한다면 해당 모델이 암 환자를 잘 찾내는지, 아니면 모든 사람을 정상인 취급해 정답률만 높인 것인지 알 수 없다.
두번째로 데이터셋 전체를 대상으로 평가한다면 분포에 관한 세부 정보를 볼 수 없다. 실무에서 데이터는 항상 동등한 비율로 들어오지 않는다. 이 때문에 규모가 작은 특성값이나 클래스에 불리하게 작용할 수 있다. 예를 들어, 데이터를 수집했을때 남성 데이터가 여성 데이터보다 많다면 여성 데이터를 예측하는 모델 성능은 남성보다 불리하게 작용할 수 있다. 이러한 문제가 모델 배포시에 발생한다면 특정 사용자는 나쁜 서비스 경험을 겪게 될 뿐만 아니라 윤리적 문제까지 이어질 수 있다. 하지만 단일 지표로 전체 데이터셋을 평가한다면 그룹 전체의 평균치만 보이기 때문에 이러한 불평등은 보이지 않는다. 그렇기 때문에 전체 평가 데이터셋을 그룹으로 나누어 모델이 데이터를 공평하게 평가하는지 확인해야한다.
마지막으로 데이터의 분포와 성질은 시간이 지나면서 변한다. 특정 시간대에서 수집한 데이터로 계속 모델을 평가한다면 언젠간 학습시의 모델 성적과 배포시의 실제 성적에 괴리감이 들게 된다. 이를 막기 위해 검증 데이터셋 또한 업데이트가 필요하다.
이러한 이유 때문에 학습된 모델은 충분한 검증을 거쳐 모델을 배포할지 결정해야 한다. 또한 단일 지표로 데이터셋 전체를 평가한다면 배포시 모델이 우리가 원하는 대로 작동할지 확신할 수 없다.
TensorFlow Model Analysis (TFMA)
TFMA는 Tensorflow 모델을 검증하는 라이브러리다. TFMA에게 평가할 모델과 데이터셋, 평가 방법 등이 담긴 설정 정보를 넘겨주면 우리에게 해당 모델의 자세한 성능을 시각화하여 보여준다. 또한 TFMA는 학습시 사용하는 것보다 더 자세한 정보를 주는 평가지표를 제공하고, 데이터셋을 그룹별로 평가할 수 있으며, 아파치 빔을 통한 평가 데이터셋 확장을 도와준다.
TFMA로 모델 분석하기
TFMA에서는 EvalSharedModel
와 EvalConfig
을 통해 어떻게 모델을 평가할지 설정할 수 있다. EvalSharedModel
은 어떤 모델을 평가할지 결정하며, EvalConfig
는 데이터셋 슬라이싱 방법, 사용할 평가지표 등 모델 평가 방식에 대한 설정값을 가진다. 이들을 tfma.run_model_analysis
에 전달하면 모델 평과 결과를 로그로 저장한다. 또한 이 로그 파일을 tfma.view.render_time_series
에 전달하면 모델 분석 결과를 시각화해준다.
모델의 공정성 평가
수집한 데이터는 어떻게든 편향되어 있다. 모델은 데이터셋 분포를 있는 그대로 학습하기 때문에 편향된 데이터셋에 노출되면 모델의 예측도 편향될 수 밖에 없다. 특히 이 데이터가 고객으로부터 수집되었다면 특정 부류의 고객은 그 그룹에 속해있다는 이유로 모델의 부정확한 서비스를 받게 될 수 있다. 이는 고객의 경험 만족도를 낮출 뿐만 아니라 윤리적 문제를 야기할 수 있다. 예로, 미국이 범죄자의 형량을 신속하게 계산하기 위해 COMPAS 알고리즘을 개발했다. 그런데 COMPAS는 인종에 따라 범죄자의 평가를 달리 했다. 나머지 모든 조건이 동일함에도 인종이 흑인이라는 이유로 재범 가능성을 높게 평가한 것이다. 또한 아마존이 직원의 공정한 평가를 위해 직원 평가 시스템을 설계했다. 하지만 이 모델은 해당 직원이 여성이라는 이유로 감점하자 결국 사용을 중단했다. 이러한 사태가 벌어지지 않도록 우리는 모델이 특정 집단을 차별하지 않는지 평가해야 한다.
모든 머신러닝 프로젝트에 적합한 공정성 기준은 존재하지 않는다. 그렇기 때문에 모델에 발생할 수 있는 문제 상황을 고려하여 공정성의 기준을 세워야한다. 공정성의 기준은 다음과 같이 세울 수 있다.
- 인구통계학적 공정성
- 모든 그룹 내에서 평가 비율이 동일해야 한다. 예를 들어 남학생 그룹과 여학생 그룹에 대해 동일한 비율로 장학금을 받아야 합니다.
- 균등한 기회
- 특정 조건을 만족하는 내에서 평가 비율이 동일해야 한다. 예를 들어 일정 기준 이하의 소득 수준을 가진 학생에 대해 남학생 그룹과 여학생 그룹은 동일한 비율로 장학금을 받아야 합니다.
- 동일한 정확도
- AUC, F1 Score와 같은 성능 지표가 모든 그룹에서 비슷해야 한다.
What-If-Tool (WIT)로 공정성 확인하기
What-If-Tool이란 구글이 개발한 모델 분석 도구다. WIF를 통해 데이터셋의 분포와 함께 모델의 예측 결과를 볼 수 있다. 또한 이러한 예측 결과를 그룹별로 볼 수 있으며, 데이터의 특성이 변했을때 모델의 예측이 어떻게 달라지는지도 확인해볼 수 있다.
What-If-Tool은 모델의 공정성을 평가할 수 있는 다양한 피쳐를 제공한다. 그중 대표적인 피쳐는 반사실(Counterfactuals)과 부분 의존도(Partial Dependence Plot, PDP)가 있다.
반사실은 데이터셋 내에서 다른 분류에 속하는 가장 가까운 이웃을 보여준다. 예를 들어 대출 가능한 사람 한명을 골랐다면 대출이 불가능한 사람들 중 골랐던 사람과 최대한 유사한 사람들을 찾아낸다. 이를 통해 어떤 특성 때문에 대출이 가능했는지 확인해볼 수 있으며, 특정 특성값이 편향성을 가지고 있는지 확인해볼 수도 있다.
부분 의존도는 각 특성이 변함에 따라 모델의 클래스 예측 분포가 어떻게 변하는지 보여준다. 특히 숫자형 특성을 분석할 때 유용하다. PDP를 이용한다면 나이에 따라 대출이 가능할 확률이 어떻게 변하는지를 확인하고 이를 통해 모델이 특정 나이대에 불리하게 작용하는지 확인해볼 수 있다.
설명 가능한 모델
모델의 성능을 면밀하게 분석했다면 우리는 모델이 배포 환경에서도 원활히 작동한다고 기대할 수 있다. 그런데 여기에 모델이 어떻게 판단하는지 안다면 우리는 모델을 더욱더 신뢰할 수 있다. 뿐만 아니라 모델의 어느 부분에서 문제가 발생했는지 디버깅할 수 있으며 문제되는 행동을 하는지 감시할 수도 있다.
설명 가능한 모델이 필요할 때 모델을 고르는 법
모델은 데이터의 특성의 상관관계를 분석하고 판단한다. 만약 모델 자체가 이러한 상관관계를 복잡하게 분석한다면 우리는 모델의 행동을 예측할 수 없다. 특히 많은 층과 많은 유닛으로 구성된 딥러닝 모델은 더더욱 파악하기 어렵다. 그렇기 때문에 모델이 중요한 의사결정에 사용될 예정이라면 성능이 기준점을 만족하면서 최대한 간단한 모델을 고르는 것이 좋다.
WIT로 모델의 설명가능성 평가하기
모델의 설명가능성 또한 WIT를 통해 보여줄 수 있다. WIT에서 반사실과 PDP를 통해 각 특성과의 상관관계를 확인할 수 있어 어떤 특성이 어떤 클래스에 속할 확률을 높여줄지 대략적으로 확인해볼 수 있다. 다만 PDP의 경우 모든 특성이 서로 독립적임을 전제로 하기 때문에 각 특성간의 복잡한 상관관계를 이용하는 복잡한 모델에는 사용하기 어렵다.
만약 구글 클라우드 AI 플랫폼에서 실행중이라면 WIT를 통해 피쳐 기여도(Feature Attributions)를 확인할 수 있다. 피쳐 기여도는 각 특성이 모델 판단에 얼마나 영향을 주는지 수치로 알려준다.
모델의 설명가능성을 확인하는데 특화된 라이브러리도 존재한다. LIME의 경우 데이터 구간을 정하고 그 구간 내의 데이터를 모아 간단한 모델을 학습시킨다. 이렇게 학습된 모델의 가중치를 통해 특정 데이터 구간 내에서 어떤 특성이 얼마나 영향을 주는지 보여준다.
또한 SHAP은 각 특성의 샤플리값을 계산하여 이를 보여준다. 여기서 샤플리값이란 각 특성마다 영향력의 크기와 방향을 표현한 값을 말한다. 특히 샤플리값의 경우 각 특성들이 서로 독립적이지 않아도 되기 때문에 PDP보다 더 널리 사용된다.
TFX의 모델 분석 자동화
TFX는 TFMA을 이용해 모델을 자동으로 분석하고 배포할 수 있다. 이는 Resolver
, Evaluator
, Pusher
를 통해 구현할 수 있다. Resolver
는 최근에 배포한 모델의 성능을 가져와 Evaluator
에게 기준치를 제공한다. Evaluator
는 새로 학습한 모델의 성능을 평가하고 이를 기준치와 비교한다. 만약 새 모델의 성능이 기존 모델보다 향상됐다면 새 모델에게 승인 아티펙트를 발급하고 Pusher
에게 전달한다. Pusher
는 평가한 모델을 배포 단계로 전달하는 역할을 하는데, 만약 Resolver
가 존재한다면 전달받은 모델이 승인받았는지 확인한다. Pusher
는 승인받은 모델만 배포 단계로 전달한다.
'인공지능 > Tensorflow Extended' 카테고리의 다른 글
[살아 움직이는 머신러닝 파이프라인 설계] 9. 텐서플로 서비스를 사용한 고급 모델 배포 (0) | 2023.09.17 |
---|---|
[살아 움직이는 머신러닝 파이프라인 설계] 8. 모델 분석 및 검증 (0) | 2023.09.10 |
[살아 움직이는 머신러닝 파이프라인 설계] 6. 모델 학습 (0) | 2023.09.09 |
[살아 움직이는 머신러닝 파이프라인 설계] 5. 데이터 전처리 (0) | 2023.09.09 |
[살아 움직이는 머신러닝 파이프라인 설계] 4. 데이터 검증 (0) | 2023.09.03 |