티스토리 뷰
딥러닝(신경망)에서 쓰이는 많은 수많은 아이디어들은 수십년에 걸쳐서 유효하다. 어떻게 그 아이디어들이 현재까지도 잘 동작하는 것일까?
크게 두 가지 부분에서 그런 경향을 찾을 수 있다.
- 데이터의 유효성(Data availability) : 사람들이 이제는 노트북이나, 휴대용 기기와 같이 디지털 장비를 사용하는 시간이 예전에 비해서 많이 늘어났고, 이런 경향으로 인해서 학습 알고리즘에 적용할 수 있는 수많은 데이터가 생산된다.
- 연산량(Computational Scale) : 신경망을 학습시킬 수 있게 된지 몇년되지 않았고, 현재의 신경망으로도 우리가 가지고 있는 어마어마한 량의 데이터를 처리하기에 충분하다.
조금 더 자세하게 말하자면, 아무리 데이터를 많이 축적했다 하더라도, 일반적으로 Logistic Regression과 같이 고전 학습 알고리즘의 성능은 "평탄화"되어 있다는 것이다. 이 말은 해당 학습 곡선이 수렴하고, 알고리즘은 데이터를 더 넣어도 향상시키기 어렵다는 것이다.
이건 사실 과거 알고리즘들이 학습에 필요한 데이터를 다 가졌을 때를 고려하지 못했기 때문에 발생한 것이다. 만약 같은 supervise한 학습을 작은 신경망을 통해 시키고자 할 경우 조금더 나은 성능을 얻을 수 있다.
위 그래프에서 "small NN"이라고 표현되어 있는 것은 적은 수의 hidden node와 layer, parameter로 구성된 신경망을 의미한다. 최종적으로 조금더 큰 신경망을 학습시킬 경우, 조금 더 나은 성능을 얻을 수 있다.
( 위 그래프는 작은 데이터셋 내에서 신경망이 더 잘 동작하는 것을 보여준다. 사실 엄청난 데이터셋 내에서 신경망이 동작하는 효과에 비해서는 덜 일관적이다. 작은 데이터 셋 구조에서는 특징(feature)들이 얼마나 잘 tuning되어 있는지(책에서는 hand-engineered라고 표현되어 있다.)에 따라서 과거의 알고리즘들이 더 잘 동작할 수도, 혹은 아닐 수도 있다. 예를 들어 20개의 학습 예제를 가지고 있을 때, Logistic Regression을 쓰는지 혹은 신경망을 쓰는지에 따라서 성능이 더 좋을 수도 혹은 더 나쁠수도 있다. 어쩌면 이렇게 feature에 대한 tuning이 되어 있는지의 여부는 어떤 알고리즘을 선택하느냐 보다 조금더 큰 효과를 보여줄 수 있다. 하지만 만약 백만개의 학습 예제가 있다면, 그냥 신경망으로 학습시킬 것을 권한다.)
결과적으로
1) 초록색 그래프가 보여주는 것처럼 매우 큰 신경망을 학습시킬 것
2) 데이터 사이즈가 클 것
위의 조건을 만족할 때 가장 좋은 성능을 얻을 수 있다.
물론 신경망 구조와 같이 다른 고려 사항도 존재한다. 하지만 오늘날까지도 알고리즘의 성능을 향상시키는 가장 근본적인 방법 중 하나는 아직도 1)큰 신경망을 학습시키는 것과 2)데이터를 많이 가지는 것이다. 물론 1)과 2)를 충족시키는 과정을 매우 복잡하다.
< 해당 포스트는 Andrew Ng의 Machine Learning Yearning 중 chapter 4. Scale drives machine learning progress 을 번역한 내용입니다.>
'Study > AI' 카테고리의 다른 글
[MLY] 개발 데이터와 테스트 데이터는 얼마나 많이 수집해야 할까? (0) | 2018.09.02 |
---|---|
[MLY] 개발 데이터와 테스트 데이터는 같은 분포를 가지고 있어야 한다. (0) | 2018.09.02 |
[MLY] 현재 사용중인 개발 데이터와 테스트 데이터 (0) | 2018.09.01 |
[ETC] VS code에서 terminal을 Powershell에서 Command Prompt로 바꾸기 (0) | 2018.08.21 |
[Python][Visualization] Legend, Annotation (0) | 2018.07.05 |
[Python][Visualization] matplotlib multiple plot (0) | 2018.07.03 |
[RL] Q-learning (0) | 2018.05.27 |
- Total
- Today
- Yesterday
- Kinect
- Off-policy
- TensorFlow Lite
- arduino
- End-To-End
- PowerPoint
- Kinect for windows
- 파이썬
- 딥러닝
- 강화학습
- Gan
- Policy Gradient
- Pipeline
- 한빛미디어
- Expression Blend 4
- ColorStream
- Windows Phone 7
- Distribution
- SketchFlow
- bias
- windows 8
- ai
- Offline RL
- RL
- reward
- Kinect SDK
- DepthStream
- dynamic programming
- Variance
- processing
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |