티스토리 뷰

Study/AI

[MLY] 학습 오류 출력

생각많은 소심남 2018. 9. 23. 12:38

 개발 데이터(그리고 테스트 데이터)의 오류는 학습 데이터량이 증가할수록 감소해야 한다. 하지만 지금 다루고 있는 학습 데이터 상에서의 오류는 학습 데이터 량이 증가해도 보통은 증가할 것이다. 

 예제와 함께 이런 현상에 대해서 다뤄보고자 한다. 지금 가지고 있는 학습 데이터가 단지 2개의 데이터만 있다고 해보자: 하나는 고양이 그림이고, 다른 하나는 고양이가 아닌 그림이다. 그렇게 되면 학습 데이터 상에서 두가지 케이스에 대해 "기억"시키는 것은 쉬운 일이 될 것이고, 아마 학습 데이터 오류도 0%가 나올 것이다. 학습 데이터에서 하나나 두 개 모두 잘 못 라벨링되어 있다 하더라도, 개발하고 있는 알고리즘이 해당 라벨에 대해서 기억하는 것은 여전히 쉬운 일이 될 것이다.

 이제 학습 데이터가 100개정도 된다고 가정해보자. 아마 몇몇 데이터들은 잘못 라벨링되어 있거나, 구분 짓기에 애매모호 한 것이 있을 것이다- 어떤 이미지는 매우 흐릿해서 어떤 사람들은 해당 이미지가 고양이를 나타낸 것이라고 말할 수 없을 것이다. 그래도 여전히 개발 알고리즘은 학습 데이터의 대부분을 기억하겠지만, 이제는 100%의 정확성을 얻기 힘들 것이다. 학습 데이터를 2개에서 100개로 늘림으로써, 학습 데이터 정확성이 약간 떨어지는 것을 확인할 수 있을 것이다. 

 이제 학습 데이터가 10000개라고 해보자. 이 케이스에서는 알고리즘이 10000개의 데이터를 완벽하게 판별하기 좀 더 어려워 질 것이다. 특히 몇몇 데이터가 잘못 라벨링되거나 구별하기 모호한 것들이 있는 것 말이다. 그렇기 때문에 학습 알고리즘은 학습 데이터에 대해서 조금더 안좋게 동작할 것이다.

 이제 앞에서 다룬 그래프에 학습 오류를 출력해보자.

여기서 보면 파란색의 "학습오류" 곡선은 학습데이터의 크기에 따라서 증가하는 것을 알 수 있다. 게다가 개발 데이터 보다는 학습 데이터 상에서 보통 잘 동작하는 것을 볼 수 있다. 그리고 빨간색의 개발 데이터 오류 곡선은 일반적으로 파란색의 학습 오류 곡선 위에 놓여져 있는 것도 볼 수 있다.

 이 곡선들을 해석하는 방법에 대해서 다음 포스트에서 다뤄보도록 하겠다.

< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 29. Plotting training error을 번역한 내용입니다.>

댓글