DM ML AD

모델 성능이 안 나올 때

Bahniesta 2024. 6. 23. 17:52

데이터 분석이나 AI 모델 개발은 귀납 과정이면서 연역 과정이다. 다양한 시도와 많은 실패 속에서 개발자의 자질과 능력이 향상되고, 그걸 밑거름으로 해서 새로운 아이디어를 짜낼 수 있다. 그래서 귀납적이면서 연역적이라는 거다. 나름 몇 년의 경험을 통해서 가장 스탠더드 한 AI 서비스 모델을 정립했다고 생각했지만 실험 결과가 예상치를 벗어나서 지난주 내내 이것 때문에 골치가 아팠다. 직접 데이터를 가져와서 모델을 개발하고 다양한 실험을 시도하면서 문제 원인과 해결점을 찾는다면 어쩌면 좀 더 쉽게 문제를 해결했을 수도 있지만, 실질적으로 현업에서 손을 떼고 옆에서 훈수만 두는 뒷방 늙은이가 된 지 이미 몇 년이 돼서 그저 사고실험으로 왜 AI 모델이 기대치를 못 미치는지를 고민했다. 가능성 있는 여러 아이템들이 떠올랐는데 정리하면 크게 4가지 범주에 속한다. 데이터, 모델, 실험/평가 또는 인재가 그것이다.

 
1. 데이터 (피쳐, 학습, 테스트)
AI 모델의 성능이 나오지 않는다면 가장 먼저 사용한 데이터에 문제가 있는지부터 의심해야 한다. 이 항목에서 데이터란 AI 모델의 인풋 피쳐를 만드는 데 사용되는 데이터를 뜻한다. 우선 피쳐 데이터의 정합성을 확인해야 한다. 아웃라이어나 미싱을 포함한 노이즈가 존재하는지 아니면 높은 공선성 Collinearity를 갖는 중복된 피쳐가 포함되어있지 않는지를 파악하고, 필요하면 데이터의 일부만 샘플링할 필요도 있다. 다음으로 Raw 피쳐 데이터를 수치 벡터로 표현하는 방식, 즉 임베딩에  문제가 있는지 확인해야 한다. 사용한 임베딩 알고리즘이 원본 데이터의 특성에 잘 맞는지 또는 결과 임베딩 벡터의 차원이 너무 작거나 크지 않는지 등을 파악한다.
 
2. 모델 (임베딩, 예측기)
원본 데이터와 임베딩에 특별한 문제가 없다면 예측 모델을 잘못 선택했는지를 의심한다. 이미 문제 (데이터)의 특성에 맞는 모델을 선택했겠지만 항상 ‘이게 최선입니까?’를 항상 되뇌어야 한다. 필요하다면 — 당장 예측 성능은 떨어지겠지만 — 가장 간단한 예측 모델 (예, 선형 Regression)로 임베딩 데이터를 재확인하는 걸 시도해 보는 것도 좋다. 사용한 예측 모델이 현재 문제/데이터에 가장 잘 맞고 때론 다른 대안이 없는 경우라면 모델이 제대로 학습됐는지 확인해 보는 게 필요하다. 테스트 데이터에서 모델 성능이 나오지 않는다는 것은 모델이 over-fitting이나 under-fitting 됐다는 거다. 단순히 같은 환경에서 재학습하는 것만으로 충분한 경우도 있지만, 학습 데이터의 질과 양 Q&Q, 사용한 하이퍼파라미터의 유효성, 모델의 초기값이나 최적화 방식 등을 재검토한다.
 
3. 실험과 평가
데이터와 모델에 문제가 없더라도 실험 과정에 숨은 오류가 있을 수 있다. 애초에 실험 방식과 환경을 제대로 설계했는지 DOE (Design of Expment), (특수한 경우가 아니라면) 테스트 데이터의 분포가 학습 데이터의 분포에서 크게 벗어났는지 (Out-of-distribution), 또는 사용한 평가 메트릭이 적절한지 등을 확인한다 특히 흔히 사용되는 주요 평가 Metric 뿐 아니라, 부수적인 메트릭을 함께 사용하는 게 좋다. 예를 들어, 정확도가 1% 낮더라도 속도가 10배 빠르거나 훨씬 적은 메모리를 사용하는 것이 요즘의 Edge computing에 더 적합하다. 부수 지표가 주요 지표보다 더 큰 의미가 있을 수도 있다.
 
4. 휴먼 에러
이도저도 아니라면 ‘혹시 내가 문제였나?’도 의심해야 한다. 설계나 구현 상에 버그가 있었는지, 사용한 패키지나 라이브러리에 문제가 있었는지, 아니면 결과 (숫자)는 정확한데 내가 잘못 해석하고 있는 것은 아닌지 등 인재는 언제 어디서나 존재한다.
 
문제와 상황에 따라서 다른 특수한 원인과 접근법이 존재할 수도 있으나, 일반적인 경우라면 이상과 같이 데이터, 모델, 실험/평가, 또는 인재의 가능성으로 접근해 보길 바란다. 그래도 해결되지 않는다면 때론 제로베이스 Zero-base에서 처음부터 다시… 선배들이 만들어놓은 것을 부수지 못하고 새로운 걸 추가만 하는 식으로 프로젝트를 진행하는 경우가 많은데 '새 술은 새 부대에’ 전술은 항상 유효하다.
 

반응형