티스토리 뷰
만약 고양이를 인식하는 작업에서 인간이 거의 완벽에 가까운 성능(0%대의 오류)를 보여줬고, 이상적인 오류율도 0%이다. 지금 상태에서 당신이 가지고 있는 지표가 다음과 같다고 가정해보자:
- 학습 데이터 상에서의 1%의 오류
- 학습 개발 데이터 상에서의 5%의 오류
- 개발 데이터 상에서의 5%의 오류
이 결과가 무엇을 의미할까? 여기서는 high variance를 가지고 있는 것을 알 것이다. 앞에서 소개한 variance를 제거하는 방법을 사용하면, 성능이 좋아질 것이다.
이제 알고리즘이 다음의 지표를 가진다고 가정해보자:
- 학습 데이터 상에서의 10%의 오류
- 학습 개발 데이터 상에서의 11% 오류
- 개발 데이터 상에서의 12% 오류
이건 학습 데이터 상에 높은 avoidable bias가 있는 것을 의미한다. 다시 말해, 알고리즘이 학습 데이터 상에서 잘 동작하지 않는 것이다. 이때는 bias를 제거하는 방법이 도움이 될 것이다.
앞의 두가지 예제에서, 알고리즘은 높은 avoidable bias나 높은 variance에 의해서 성능 저하가 일어나고 있다. 높은 avoidable bias나 높은 variance, 데이터 불일치로 인해서 알고리즘의 성능이 저하되는 경우가 있다. 예를 들어:
- 학습 데이터 상에서의 10% 오류
- 학습 개발 데이터 상에서의 11% 오류
- 개발 데이터 상에서의 20% 오류
위와 같은 경우, 알고리즘은 높은 avoidable bias와 data mismatch로 인해 성능 저하가 발생하고 있다. 그런데 이 경우는 학습 데이터 분포 상에서 높은 variance 영향은 받지 않고 있다.
아래와 같이 서로 다른 오류가 서로 간에 어떤식으로 연관이 있는지를 테이블화 해놓으면 이해하기 쉬울 것이다.:
|
Distribution A: |
Distribution B: |
Error Type |
Human Level |
"Human Level Error" |
|
Avoidable Bias |
알고리즘에 의해 |
"Training Error" |
|
Avoidable Bias |
알고리즘에 의해 |
"Training Dev Error" |
"Dev-Test Error" |
Variance |
Error Type | Data Mismatch |
|
고양이 분별기 예제로 다시 돌아가 보면, 아마 x 축상으로 두개의 다른 분포(Distribution A, Distribution B)가 있는 것을 볼 수 있을 것이다. y축 상으로는 3가지 오류 타입이 있다: 인간한테 발생할 수 있는 오류, 학습된 데이터 데이터상에서의 오류, 그리고 학습 되지 않은 데이터 상에서 발생한 오류 등이 있다. 각 박스 별로 이전에 다뤘던 오류 종류를 기입할 수 있다.
원한다면, 화면상에서 비어있는 공간에도 기입을 할 수 있다. 오른쪽 상단에 있는 공란(모바일 이미지 상에서 인간상의 오류)에다가는 모바일 고양이 이미지를 인간에게 보여줘서 그 오류를 측정함으로써 기입할 수 있다. 아래의 공란에서는 일단 모바일 데이터(B 분포를 띔)를 가져다가 학습 데이터의 일부를 분리해서 신경망에게 학습시킨다. 그 후에 학습 데이터에 대해서 학습 모델에 대한 오류를 측정할 수 있고, 이 값을 공란에 기입할 수 있다. 이렇게 두개의 공란을 채움으로써, 알고리즘이 서로 분포의 데이터(A 분포 데이터와 B 분포 데이터)상에서 어떻게 동작하는지에 대해서 알 수 있게 된다.
가장 알고리즘의 성능을 저하시키는 오류의 종류를 이해함으로써, 우리가 bias를 제거해야 할지, variance를 제거해야 할지, 또는 data mismatch를 제거해야 할지를 결정할 수 있게 된다.
< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 41. Identifying Bias, Variance, and Data Mismatch Errors를 번역한 내용입니다.>
'Study > AI' 카테고리의 다른 글
[MLY] 최적화 검증 테스트 (0) | 2018.10.09 |
---|---|
[MLY] 인위적 데이터 합성 (0) | 2018.10.05 |
[MLY] 데이터 불일치 해결하기 (0) | 2018.10.05 |
[MLY] 학습 데이터부터 개발 데이터까지 일반화하는 방법 (0) | 2018.10.03 |
[MLY] 데이터에 가중치 부여하기 (0) | 2018.10.03 |
[MLY] 모순된 데이터를 넣을지 여부를 결정하는 방법 (0) | 2018.10.03 |
[MLY] 당신이 가진 데이터 모두를 사용해야 할지 여부를 결정하는 방법 (0) | 2018.10.02 |
- Total
- Today
- Yesterday
- End-To-End
- Policy Gradient
- SketchFlow
- arduino
- Windows Phone 7
- 한빛미디어
- 파이썬
- Kinect for windows
- Kinect
- Kinect SDK
- Pipeline
- TensorFlow Lite
- Gan
- reward
- dynamic programming
- 강화학습
- ColorStream
- RL
- Offline RL
- ai
- windows 8
- processing
- Expression Blend 4
- 딥러닝
- Distribution
- PowerPoint
- Off-policy
- Variance
- bias
- DepthStream
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |