오늘 할 일: 끝내주게 숨쉬기
article thumbnail

들어가며

 

머신러닝 프로젝트을 수행할 때 성능이 좋은 모델을 개발하고 배포했다고 해서 할 일이 다 끝난 것은 아닙니다. 배포한 모델이 잘 돌아가고 있는지, 예상한대로 결과를 주고 있는지 관찰하는 "모니터링"은 유지보수를 위해 필수적인 과정이죠. 본 포스트에서는 머신러닝 모델을 모니터링할 때 사용하는 "드리프트(drift)"라는 개념과 그 원인에 대해 알아보겠습니다.

 

 

모델 드리프트

 

from Wikipedia Drifting(motorsport)

 

우리가 개발한 머신러닝 모델이 항상 완벽한 데이터를 입력으로 받지는 않습니다. 모델을 개발할 때 수행하는 여러 전처리 과정들을 생각하면 바로 이해가 되죠. 이런 전처리를 수행하고도 완전히 비어있거나 불완전하거나 혹은 개발 때 학습하지 못했었던 데이터들이 들어올 수도 있습니다. 데이터 엔지니어링 절차에 문제가 없었고 데이터가 만들어질 때 일부러 누군가 해를 가하지도 않았더라도, 데이터 퀄리티가 보장되지 않으면 모델이 운영을 실패할 확률도 높아집니다. 

 

모델 드리프트(model drift)"모델을 배포한 이후 시간이 지남에 따라 모델 성능이 저하되는 현상"을 의미합니다. 모델의 성능이 저하되는 지 확인하기 위해선 정확도, 오류율, 또는 클릭율과 같은 KPI지표를 활용할 수 있겠죠. 입력되는 데이터가 크게 변하지 않는 일부 비전이나 언어 모델들은 재학습이 없어도 몇 년동안 지속될 수도 있다고 합니다.

 

하지만 유입되는 새로운 데이터가 매번 동일하다는 보장은 대체로 없습니다. 코로나와 같이 예측하기 어려운 외부 요인이 발생하면 아무리 안정적으로 여겨진 데이터라도 변할 수 있고요.

 

데이터가 변할 가능성이 높다면 주기를 정하여 모델을 재학습하는 편이 안전합니다. 기존 모델의 알고리즘과 파라미터를 동일하게 하여 새로운 데이터로 재학습을 할 수도 있고, 또는 더 나은 성능을 보이는 알고리즘으로 학습하여 모델을 교체할 수도 있습니다. 비즈니스 운영 안정을 위해서는 주기적으로 모델을 재학습하여 성능을 유지시키는 것이 권장됩니다. 

 

from evidently

 

 

데이터 드리프트와 라벨 드리프트, 컨셉 드리프트

 

이러한 모델 드리프트가 발생하게 되는 원인으로는 데이터 드리프트와 라벨 드리프트, 혹은 컨셉 드리프트를 지목할 수 있습니다.  

 

데이터 드리프트(Data Drift): 시간이 지남에 따라 input의 분포 f(X)가 변하는 현상

라벨 드리프트(Label Drift): 시간이 지남에 따라 target의 분포 f(y)가 변하는 현상

 컨셉 드리프트(Concept Drift): 시간이 지남에 따라 input과 target의 관계 f(y|X)가 변하는 현상

 

위의 드리프트를 검증하기 위해서, 지금 운영하고 있는 모델을 학습했을 당시에 사용했던 데이터와 현재 유입되고 있는 데이터를 비교합니다. 지금 스트리밍되고 있는 패턴과 모델이 이미 알고 있는 패턴이 다르다면 모델은 우리가 기대했던 결과를 뱉을 가능성이 떨어지게 됩니다. 

 

from evidently

 

변수의 타입에 따라 살펴보자면 연속형 변수인 경우, 정규분포형태였는데 비대칭적인 분포로 바뀌었다던가, range가 이전과 달라진 경우가 드리프트에 해당합니다. 고령화 시대가 되면서 노년층 인구 비율이 높아진 것이 그 사례가 될 수 있습니다.

 

범주형 변수인 경우, 각 클래스의 비율이 역전이 된다거나, 없었던 클래스가 생기는 사례가 있을 수 있습니다. 예를 들어 어플 유입이 50% 웹페이지 유입이 50%였다가, 점차 모바일을 통한 어플 유입자가 늘어서 80%가 되는 경우 드리프트가 발생했다고 할 수 있겠습니다.  

 

 

마치며

 

AWS는 모니터링을 위해 모델 퀄리티 확인 전, 데이터 퀄리티 확인 또한 수행한다고 합니다. 데이터 타입이 기존과 동일한지, 값이 NULL로만 구성되어 있지는 않은지, 이상한 변수가 들어오지는 않았는지, 들어와야할 변수가 잘 들어왔는지, 범주형 변수에서 모델이 알지 못하는 새로운 클래스가 들어왔다던지 하는 점검 작업들을 데이터 퀄리티를 보장하기 위해 진행합니다.

 

머신러닝 프로젝트를 진행할 때 성능이 높은 모델을 만들었다고 해서 운영하는 동안 계속해서 높은 성능을 보장할 수는 없습니다. 모델의 결과는 비즈니스 성과에 직접적으로 영향을 주기 때문에 모니터링을 통해 안정적으로 성능이 유지되고 있는지 반드시 확인해야 합니다. AWS 처럼 데이터 퀄리티까지 확인할 수 있다면 더욱 좋겠죠. 시스템의 한계로 실시간 모니터링이 어렵다면, 주 혹은 월단위라도 모니터링을 수행하여 머신러닝 프로젝트를 성공적으로 이어나가길 바랍니다.

 

다음 포스트에서는 드리프트를 탐지하는 방법인 PSI(Population Stability Index), KS 검정에 대해 알아보겠습니다. 궁금한 점이나 잘못 쓰인 점이 있다면 댓글로 알려주세요. 읽어주셔서 감사합니다 😁

 

 

참고

 

https://www.evidentlyai.com/blog/machine-learning-monitoring-data-and-concept-drift

 

Machine Learning Monitoring, Part 5: Why You Should Care About Data and Concept Drift

No model lasts forever. While the data quality can be fine, the model itself can start degrading. A few terms are used in this context. Let’s dive in.

www.evidentlyai.com

https://c3.ai/glossary/data-science/model-drift/

 

Model Drift

This website uses cookies to facilitate and enhance your use of the website and track usage patterns. By continuing to use this website, you agree to our use of cookies as described in our Privacy Policy.

www.c3iot.ai

https://youtu.be/J9T0X9Jxl_w