데이터 종속성 (Data Dependency)
ML 시스템의 행동은 입력 특성의 동작과 품질에 따라 다르다. 이러한 특성에 대한 입력 데이터가 변경되면, 모델도 변경된다. 때로는 그런 변화가 바람직하지만, 때로는 그렇지 않다.
기존 소프트웨어 개발에서는 데이터보다 코드에 더 중점을 둔다. 머신 러닝 개발에서는, 코딩은 작업의 일부이지만 데이터를 포함하도록 초점을 넓혀야 한다. 예를 들어, 소프트웨어 개발 프로젝트에서는 코드를 검증하기 위해 단위 테스트를 작성하는 것이 가장 좋다. ML 프로젝트에서는 입력 데이터도 지속적으로 테스트, 확인 및 모니터링해야 한다.
예를 들어, 사용하지 않는(또는 거의 사용되지 않는) 특성을 제거하려면 모델을 지속적으로 모니터링해야 한다. 모델에 전혀 또는 거의 기여하지 않는 특정 특성이 있다고 가정하자. 해당 특성에 대한 입력 데이터가 갑자기 변경되면 모델의 동작도 바람직하지 않은 방식으로 갑자기 바뀔 수 있다.
신뢰성 (Reliability)
입력 데이터의 신뢰성에 대해 묻는 몇 가지 질문이 있다.
- 신호를 항상 사용할 수 있는가? 아니면 신뢰할 수 없는 소스로부터 오는 것인가? 예를 들어:
- 과부하 상태에서 충돌하는 서버로부터 신호가 오는가?
- 매년 8월에 휴가를 떠나는 사람들에게서 오는 신호인가?
버전 관리 (Versioning)
버전 관리에 대해 묻는 몇 가지 질문이 있다.
- 데이터를 계산하는 시스템이 변경되는가? 그렇다면:
- 얼마나 자주?
- 시스템이 언제 변경되는지 어떻게 알 수 있는가?
때때로 데이터는 업스트림 프로세스에서 제공된다. 그 프로세스가 갑자기 변경되면 모델에 문제가 발생할 수 있다.
업스트림 프로세스에서 받은 데이터의 복사본을 만드는 것을 추천한다. 그런 다음, 안전하다고 확신하는 경우에만 업스트림 데이터의 다음 버전으로 진행해야 한다.
필요성 (Necessity)
다음 질문은 정규화를 생각나게 할 수 있다.
- 특성의 유용함이 그 특성을 포함하는 비용을 정당화하는가?
모델에 더 많은 특성을 추가하고 싶은 유혹은 항상 있다. 예를 들어, 추가하면 모델이 약간 더 정확해지는 새 특성을 찾았다고 가정해보자. 정확도가 높을수록 정확도가 낮은 것보다 확실히 더 좋게 들린다. 그러나 유지 관리의 부담이 추가된다. 추가 특성은 예치기 않게 저하될 수 있으므로 모니터링해야 한다. 특성을 추가하기 전에 사소한 단기적 성과로 이어지지는 않는지 신중하게 생각해야 한다.
상관 관계 (Correlation)
일부 특성은 다른 특성과 상관 관계(양의 관계 또는 음의 관계)가 있다. 다음의 질문을 체크하자.
- 특성이 너무 얽혀서 분리하기 위해 추가 전략이 필요한가?
Feedback Loop
때때로 모델은 자체 학습 데이터에 영향을 미칠 수 있다. 예를 들어, 어떤 모델의 결과는 동일한 모델에 직접적 또는 간접적으로 입력된 특성이다.
때때로 모델이 다른 모델에 영향을 줄 수 있다. 예를 들어, 주가를 예측하는 두 모델 A와 B가 있다고 가정하자.
- A : 나쁜 예측 모델
- B
A는 버그가 있기 때문에, 실수로 주식 X를 구매하기로 결정했다. 이러한 구매는 X의 가격을 상승시킨다. B는 X의 가격을 입력 특성으로 사용하므로, B는 X의 가치에 대해 잘못된 결론에 쉽게 도달할 수 있다. 따라서 B는 A의 버그 행동을 기반으로 X를 매매할 수 있다. B의 동작은 차례로 A에게 다시 영향을 미쳐 튤립 파동을 일으키거나, X의 주식이 하락할 수 있다.
※ 참고