티스토리 뷰

  딥러닝(신경망)에서 쓰이는 많은 수많은 아이디어들은 수십년에 걸쳐서 유효하다. 어떻게 그 아이디어들이 현재까지도 잘 동작하는 것일까?

 크게 두 가지 부분에서 그런 경향을 찾을 수 있다.

- 데이터의 유효성(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 을 번역한 내용입니다.>

댓글