티스토리 뷰

Study/AI

[MLY] 학습 곡선 : bias와 Variance에 대한 판단

생각많은 소심남 2018. 9. 14. 18:42

 지금까지 오류가 avoidable bias와 variance에 얼마나 영향을 줄 수 있는 평가하는 몇가지 방법에 대해서 알아봤다. 먼저 이상적인 오류율을 측정하고, 학습데이터에 대한 오류율과 개발/테스트 데이터에 대한 오류율을 계산했다. 이런 방법보다 더 유용할 수 있는 방법인 학습 곡선 출력에 대해서 다뤄보고자 한다.

 학습 곡선은 보통 학습 데이터 대비 개발 데이터의 오류율을 출력한 형태를 말한다. 이를 출력하기 위해서는 다른 크기의 학습데이터를 사용해서 알고리즘을 돌려봐야 한다. 만약 1000개 정도의 데이터가 있다면, 100개, 200개, 300개, 1000개까지의 데이터에 대해서 각각 알고리즘을 적용해봐야 한다는 것이다. 그러면 학습 데이터 크기별로 개발 데이터의 오류율을 출력할 수 있게 될 것이다. 여기 예제가 있다.

 학습 데이터의 크기를 늘리면, 개발 데이터 오류는 감소할 것이다. 

종종 우리가 알고리즘을 통해서 궁극적으로 얻길 원하는 "선호 오류율" 이 있다. 예를 들어서

- 만약 인간 정도의 성능을 원한다면, 인간이 보여주는 오류율이 "선호 오류율"이 될 것이다.

- 만약 학습 알고리즘이 (고양이 사진을 가져다주는 것처럼) 특정 제품에 제공되는 형태라면, 어느정도의 성능이 인간에서 가장 좋은 경험을 제공할 것인지에 대한 관념이 생길 것이다.

- 만약 중요한 어플을 가지고 오랫동안 작업해왔다면, 어느 정도의 진척도를 가져야 다음 분기/해에 합리적으로 대우 받을 수 있을지에 대한 관념이 생길 것이다.

이렇게 만든 성능에 대한 선호 정도를 학습 곡선에 덧붙이면 이렇다.

 위 그래프를 보면 빨간색으로 표시된 "개발 데이터 오류"를 통해서 데이터를 추가함으로써 성능에 대한 선호 정도에 얼마나 가까워지는지를 시각적으로 추론할 수 있다. 덧붙여서 학습 데이터를 두배정도 늘리게 되면 원하는 성능에 도달할 수 있을거라고 예상할 수 있다.

 그런데 만약 개발 데이터 오류 곡선이 "안정적"이라면(또는 평평하게 수렴한다면), 그때는 데이터를 더해도 목표에 도달할 수 없다고 이야기 할 수 있다.

 위를 통해서 보면 학습 곡선을 관찰하는 것은 두배나 더 많은 학습 데이터를 수집하는게 이게 도움이 되지 않는다는 것을 인지하기보다 거기에 시간 낭비하는 것을 막아준다.

 한가지 단점이 있다면 단순히 개발 데이터에 대한 오류 곡선을 보기만 한다면 데이터를 더 수집했을 때 빨간 곡선이 어디로 갈지 추정하거나 정확히 예측하기가 어렵다는 점이다. 이렇게 데이터가 더해지는 것에 대한 효과를 평가하는데 도움이 되는 출력 그래프가 있는데, 이게 학습 오류율이다.

< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 28. Diagnosing bias and variance: Learning curves을 번역한 내용입니다.>


댓글