이전에 다뤘던 고양이 분류기를 보자. (인간과 같은) "이상적인" 분류기는 거의 완벽하게 고양이를 분류할 수 있어야 한다. 만약 개발한 알고리즘이 다음과 같이 동작한다고 보자: - 학습 오류 = 1% - 개발 오류 = 11% 여기엔 어떤 문제가 있을까? 이전 포스트에서 다룬 정의를 적용해보면, bias는 1% 이고, variance는 10%(11% - 1%) 라는 것을 알 수 있다. 결국 이건 high variance 특성을 띈다. 이 분류기는 매우 낮은 학습 오류를 가지지만 개발 데이터를 일반화시키기 어렵다. 이를 보통 overfitting이라고 부른다. 이제 다음과 같은 결과를 보자: - 학습 오류 = 15% - 개발 오류 = 16%이때 bias는 15%, variance는 1%로 계산할 수 있다. ..
개발 데이터와 테스트 데이터가 같은 분포를 가지는 상태에서 학습을 시키고 있다고 가정하자. 그러면 단순히 성능을 향상 시키기 위해서 항상 많은 학습 데이터를 수집하려고 할 것이다. 그렇지 않나? 데이터를 많이 가지는 것 자체가 물론 나쁜건 아니지만, 그렇다고 바라는 만큼 항상이 도움이 되지는 않는다. 어쩌면 데이터를 추가로 수집하는 작업 자체가 시간 낭비가 될 수 있다. 그러면 언제 데이터를 수집하고, 언제 수집하지 말고를 어떻게 결정해야 할까? 머신러닝 작업에서 오류를 발생시키는 요인이 두개가 있는데, 그게 bias와 variance 이다. 이 두 요인에 대해서 이해하는 것이 아마 데이터를 수집해야 할지 말지 결정하는 것을 도와 줄 것이고, 이게 성능을 향상시켜주는 다른 작업과 같이 시간을 적절하게 쓰..
- 새로운 프로젝트를 시작할 때, 특히 해당 분야에 대해서 전문가가 아니라면, 뭔가 가장 확신을 줄 수 있는 방향을 올바르게 선정하기는 어렵다. - 그렇기 때문에 시작할 때부터 완벽한 시스템을 설계하고 만들 생각을 하지마라. 대신 가장 기본적인 시스템부터 될수 있으면 빠르게 만들어라(대략 며칠동안 만들수 있는 정도?) 그리고 오류 평가를 활용해서 가장 확신을 줄수 있는 방향을 선정하고, 거기서부터 알고리즘을 반복적으로 개선할 수 있도록 해보자. - 100여개의 잘못 분류된 데이터를 일일이 확인해보고 주요 오류가 발생하는 카테고리를 파악하는 것과 같은 방식으로 오류 평가를 수행해라. 그리고 이 정보를 활용해서 수정해야 할 오류의 종류별로 우선순위를 정하자. - 개발 데이터를 수동적으로 확인해볼 Eyebal..
- Total
- Today
- Yesterday
- Gan
- Variance
- Windows Phone 7
- 강화학습
- Offline RL
- bias
- processing
- arduino
- End-To-End
- 딥러닝
- Python
- dynamic programming
- Kinect SDK
- Kinect for windows
- 파이썬
- Policy Gradient
- Kinect
- Pipeline
- 한빛미디어
- reward
- windows 8
- Distribution
- SketchFlow
- DepthStream
- PowerPoint
- TensorFlow Lite
- ColorStream
- RL
- Expression Blend 4
- Off-policy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |