(해당 포스트는 UC Berkeley 에서 진행된 CS285: Deep Reinforcement Learning, Decision Making and Control를 요약한 내용이며, 그림들은 강의 장표에서 발췌한 내용입니다.) CS 285 GSI Yuqing Du yuqing_du@berkeley.edu Office Hours: Wednesday 10:30-11:30am (BWW 1206) rail.eecs.berkeley.edu Reducing variance 이전 포스트에서 소개했다시피, policy gradient 알고리즘은 high variance로 인해서 practical problem에 적용하기 어려웠다. 그러면 이 variance를 줄일 수 있는 방법이 있을까? 다시 policy gradi..
만약 고양이를 인식하는 작업에서 인간이 거의 완벽에 가까운 성능(0%대의 오류)를 보여줬고, 이상적인 오류율도 0%이다. 지금 상태에서 당신이 가지고 있는 지표가 다음과 같다고 가정해보자: - 학습 데이터 상에서의 1%의 오류 - 학습 개발 데이터 상에서의 5%의 오류 - 개발 데이터 상에서의 5%의 오류 이 결과가 무엇을 의미할까? 여기서는 high variance를 가지고 있는 것을 알 것이다. 앞에서 소개한 variance를 제거하는 방법을 사용하면, 성능이 좋아질 것이다. 이제 알고리즘이 다음의 지표를 가진다고 가정해보자: - 학습 데이터 상에서의 10%의 오류 - 학습 개발 데이터 상에서의 11% 오류 - 개발 데이터 상에서의 12% 오류이건 학습 데이터 상에 높은 avoidable bias가 ..
이런 학습 곡선에 대해서 고려해보자. 이 그래프는 high bias일까. high variance일까, 아니면 두 가지 경우가 합쳐진 걸까? 파란색 학습 오류 곡선은 상대적으로 낮고, 빨간색 개발 데이터의 오류 곡선은 파란색 학습 데이터 오류 곡선에 비해서는 더 크다. 그렇기 때문에 bias는 작고, variance는 큰 것이라고 볼수 있다. 여기서 학습 데이터를 조금 더 추가하면 개발 오류와 학습 오류 사이의 갭을 줄이는데 도움이 될 것이다. 그럼 이번에는 이런 경우를 고려해보자. 이번에는 학습 오류는 원하는 목표치에 비하면 더 큰 것을 알 수 있다. 그리고 개발 데이터 오류 또한 학습 데이터 오류에 비해서 더 큰 것을 알 수 있다. 그렇기 때문에 여기선 bias와 variance가 다 큰 것이라고 알..
만약 만든 알고리즘이 high variance에 의해서 어려움을 겪고 있다면, 아래의 방법을 고려해봐라: - 학습 데이터를 추가할 것 : 이 방법은 만약 당신이 데이터에 대해서 많이 접근할 수 있고, 이를 처리할 연산 능력이 충분한 한, Variance 문제를 해결할 수 있는 가장 간단하고 신뢰할 만한 방법이다. - 정규화 방법을 적용해볼 것 (L2 regularization, L1 regularization, dropout) : 이 방법은 variance를 줄여주지만, bias를 높이는 부작용이 있다. - Early Stopping을 적용해볼 것 (예를 들어 개발 데이터 오류에 기반해서 gradient descent를 빨리 멈추게 한다던지...) : 이 방법은 variance를 줄여주지만 bias를 높..
보통 Bias와 Variance간의 tradeoff 라는 용어를 들어봤을 것이다. 대부분의 학습 알고리즘을 살펴보면 bias 오류를 줄이면 variance에 대한 비용이 증가하거나 반대의 case가 발생하는 경우를 봤을 것이다. 이게 바로 bias와 variance간의 "trade off"를 의미하는 것이다. 예를 들어 신경망의 layer나 neuron을 추가하는 것과 같이 학습 모델의 사이즈를 키우는 것은 일반적으로 bias를 줄이지만, 반대로 variance를 증가시킨다. 다른 방향으로 정규화 특성을 키우게 되면, variance는 감소하지만, bias가 증가하는 형태를 보인다. 요즘에는 매우 큰 신경망에서도 돌릴 수 있을 만큼 데이터가 엄청 많다. 그렇기 때문에 위에서 말한 "trade off"는 ..
개발 데이터와 테스트 데이터가 같은 분포를 가지는 상태에서 학습을 시키고 있다고 가정하자. 그러면 단순히 성능을 향상 시키기 위해서 항상 많은 학습 데이터를 수집하려고 할 것이다. 그렇지 않나? 데이터를 많이 가지는 것 자체가 물론 나쁜건 아니지만, 그렇다고 바라는 만큼 항상이 도움이 되지는 않는다. 어쩌면 데이터를 추가로 수집하는 작업 자체가 시간 낭비가 될 수 있다. 그러면 언제 데이터를 수집하고, 언제 수집하지 말고를 어떻게 결정해야 할까? 머신러닝 작업에서 오류를 발생시키는 요인이 두개가 있는데, 그게 bias와 variance 이다. 이 두 요인에 대해서 이해하는 것이 아마 데이터를 수집해야 할지 말지 결정하는 것을 도와 줄 것이고, 이게 성능을 향상시켜주는 다른 작업과 같이 시간을 적절하게 쓰..
- Total
- Today
- Yesterday
- TensorFlow Lite
- bias
- windows 8
- Kinect
- SketchFlow
- End-To-End
- Off-policy
- RL
- arduino
- DepthStream
- Gan
- PowerPoint
- 딥러닝
- Expression Blend 4
- Variance
- Distribution
- ColorStream
- 파이썬
- ai
- Kinect SDK
- Kinect for windows
- processing
- 강화학습
- Windows Phone 7
- Offline RL
- dynamic programming
- reward
- Policy Gradient
- 한빛미디어
- Pipeline
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |