xwMOOC 기계학습
테스트 주도 기계학습
학습목표
- 테스트 주도 기계학습을 이해한다.
테스트 주도 기계학습 배경 1
기계학습을 통한 소프트웨어를 개발할 경우, 복잡성이 증대되면 사양서를 작성하고 테스트 케이스를 생성하여 품질을 높여야만 품질과 성능을 높일 수 있다. 마이크로소프트 리서치 연구결과에 따르면, 소프트웨어 프로젝트에 테스트 주도 개발(Test Driven Development)을 하게 되면 시간이 15 – 35% 더 소요되지만, 품질은 60 – 90% 향상된다. 2
TDD는 켄트 벡이 1999년 XP(extreme programming)를 통해 대중화 시켰고, 적록 리팩토링(red green refactoring) 이라고 부르며, 먼저 코드를 작성하지 않은 상황에서 의도와 목적을 테스트 케이스로 작성하고 코드를 작성해 나간다. 당연히 코드를 아무것도 작성하지 않았기 때문에 테스트를 돌리게 되면 적색으로 실패하고 차근차근 코드를 적어 나가면서 최종단계에서는 가능하면 모두 녹색으로 만들어 나가 개발을 완료하는 과정을 거치게 된다.
1. TDD를 통한 명제에 대한 타당성 검증
TDD를 통해 논리적 명제에 대한 타당성 검증을 한다. 정당화된 참된 믿음(justified true belief)과 참된 믿음에 대한 정당성이 모두 필요하다. 믿음을 정당화하는데 명제가 동원된다. 필요조건과 충분조건이 충족되면 동원된 명제가 참으로 인정한다. 필요조건은 우주선을 우주로 쏘아올리기 전에 모든 조건이 충족되어야 하고, 충분조건은 완벽하지는 않지만 검증 테스트를 증명할 정도로 충분하기만 하면 된다.
과학적 방법론 | 테스트 주도 개발 | |
---|---|---|
필요조건 | 공리(Axioms) | 순수 기능 테스트 |
충분조건 | 통계적 가설검증 | 단위, 통합 테스트 |
공리를 통한 소프트웨어 개발은 정형 방법론(Formal Method)로 소개되어 과거 악명높은 윈도우가 죽으면 파란 화면이 뜨는 버그 문제를 해결했다. 하지만, 현실 세계에서는 필요조건을 충족시키는 테스트 기법보다는 통계적 가설검증과 마찬가지로 단위, 통합 테스트를 통한 증명방식을 취한다. 통합테스트, 시스템 테스트를 통한 인과성을 만족시킬 충분한 증거가 있는가에 초점을 맞춘다.
2. TTD를 통해 사전 테스트 제작과 문서화
테스트를 사전에 작성하게 되면 동료검토와 더불어 기계학습 소프트웨어 개발에 초석이 된다. 소프트웨어의 특징은 추상적이며 변경하기 쉽다는 점이다. 테스트를 사전에 작성하면 문서화는 자동으로 따라오게 된다.
3. 논문 검토와 동료검토
과학논문을 작성하게 되면 요즘 재현성에 대한 위기가 있기는 하지만, 기본적으로 사람에 대한 부분은 논문 검토자를 통해 저널에 실리기 전에 검토가 이루어고, 이때 나온 피드백을 근간으로 반복이 이루어지는데, 기계학습 소프트웨어 개발과정도 별반 차이가 나지 않는다.
4. 기계학습과 관련된 위험
기계학습이 좋은 성과를 내고 있는 것은 사실이지만, 딥러닝과 다르게 기본적으로 사람이 데이터를 보고, 본인의 경험과 학습한 이론에 비추어 최적의 모형을 찾아내는 과정을 거치게 된다. 따라서, 데이터에 가장 잘 작합되는 모형을 개발하여 산출하는 과정에서 다양한 위험과 유혹에 노출된 것도 사실이다.
- 안정성 없는 데이터 → 접합선 테스트(Seam Testing) 3
- 과소적합(Underfitting) → 교차 검증(Cross-Validation)
- 과대적합(Overfitting) → 벤치마크 테스트(오캄의 면도날)
- 예측할 수 없는 미래 → 시간경과에 따른 정확도/재현율 추적
Matthew Kirk(2014), “Thoughtful Machine Learning -A Test-Driven Approach”, O’Reilly Media↩
Janie Chang (2009), “Exploding Software-Engineering Myths”, Microsoft Research↩
“A seam is a place where you can alter behavior in your program without editing in that place” from “Working Effectively with Legacy Code” (Prentice Hall), Michael Feathers.↩