Data/머신러닝 & 딥러닝

심층 신경망 성능 향상시키기(2)/ 편향, 분산

빛날희- 2021. 8. 3. 01:07

부스트 코스의 딥러닝 2단계: 심층 신경망 성능 향상시키기 강의를 수강하며 내용정리한 포스팅입니다.


▶ 편향(bias)/ 분산(variance)

train set와 dev set의 성능에 대해 high bias라고 하면 훈련데이터 셋에 과소적합되어 훈련 데이터에서 조차도 모델의 성능이 나오지 않는다고 이해할 수 있다. 반면 high variance를 가진다고 하면 훈련 데이터에 과적합되어 훈련데이터에선 좋은 성능을 보이지만 개발 데이터 셋에선 좋은 성능을 보이지 않는고 이해할 수 있다. 

 

따라서 좋은 모델 성능을 내기 위해선 bias와 variance 두 요소를 모두 낮추는 것이 최상의 방법이나, 두 요소를 동시에 낮출 수 없는 상황이라면 감소폭이 더 큰 하나의 요소만이라도 낮추는 것이 성능에 긍정적인 영향을 미칠 수 있다. 

 

다음은 train set 과 dev set에 대한 모델의 오차를 나타낸 표이다. 성능을 보고 해당 모델이 어떤 분산과 편향을 가지고 있는지 알아보자. 

 

(1) train set에서는 1%의 오차를 가지지만 dev set에서는 11%의 오차로 훈련데이터의 성능이 훨씬 좋은 것을 볼 수 있다. 이는 훈련데이터에 대해서는 모델이 잘 적합했지만 해당 모델을 dev에 적용하면 제대로 작동하지 않으므로 과대적합, 즉 high variance를 가지고 있는 모델이라고 볼 수 있다. 

 

(2) train에서는 20%의 오차를, dev에서는 10%의 오차를 가지므로 (1)과 달리 train에서부터 모델이 데이터에 적합하지 않은 것을 볼 수 있다. 이는 모델이 너무 단순하여 훈련데이터에서조차 성능을 발휘하지 못하는 경우로 과소 적합, 즉 high bias를 가진 모델이라 할 수 있다. 

 

(3) (1)과 (2)의 케이스를 모두 갖췄다. 즉 모델이 훈련데이터에서도 적합하지 않고 dev 데이터에 대해서는 train 보다 더욱 큰 오차를 보인다. 따라서 이는 high variance, high bias를 가진 모델이다. 

 

(4) train에서 아주 좋은 성능을 보이고 있고 dev 데이터 셋에서도 train과 비교했을 때 크지 않은 차이를 가지고 있으므로 dev 데이터에도 잘 적합하는 모델임을 볼 수 있다. 따라서 이는 low variance, low bias를 가진 최적의 모델이다. 

 

 

 

▶편향과 분산 조정하기

편향과 분산을 조정하기 위해선 어떤 방법이 사용될 수 있을까? 

Andrew Ng은 이들을 조정하기 위한 basic Recipe를 다음과 같이 소개한다. 

 

 

1. 먼저 모델이 high bias를 가지는지 체크한다. 편향은 train data에 대한 모델의 성능을 통해 알 수 있다.

-> 만일 high bias를 가진다면, 

 

  • 첫번째, 더 많은 은닉층 혹은 은닉 유닛을 추가함으로써 모델이 데이터에 잘 적합할 수 있도록 모델을 복잡하게 만들어 줄 수 있다. 
  • 두번째, 훈련데이터에 대해 더 오랜시간 학습시켜줄 수 있다. 
  • 세번째, 문제에 적합한 네트워크 신경망 아키텍쳐를 적용할 수 있다. 

 

훈련데이터에 잘 적합할 때 까지 위의 방법들을 계속 시도함으로써 과소적합을 해결할 수 있다. 보통 큰 데이터라면 해당 방법들을 사용하여 train 데이터에 대한 성능 개선이 가능하다. 

 

 

2. bias문제를 해결했다면 이번엔 개발 데이터에 대한 성능을 봄으로써 모델이 high variance를 가지는 지 체크한다.

-> 만일 모델이 high variance를 가진다면, 

 

  • 첫번째, 더 많은 데이터를 수집한다. 데이터가 더 수집될 수 있는 환경이라면 가장 적합한 해결방법이 될 수 있다. 그렇지 못한 상황이라면 
  • 두번째, 정규화(Regularization)을 통해 과대적합을 해결할 수 있다. 
  • 세번째, 문제에 적합한 다른 신경망 아키텍처를 적용해 볼 수 있다. 

 

해당 방법들을 통해 우리는 모델이 low bias, low variance를 갖도록 시도하고 반복하는 과정을 거쳐야 한다. 

 

이 과정을 수행할 때 중요한 것은 모델이 bias를 높게 가지는지 variance를 높게 가지는지 잘 파악하는 것이다. 왜냐하면 위와 같이 모델이 어떤 상태인지에 따라 성능 개선에 더 적합한 해결방법이 달라지기 때문이다. 

 

 

 

▶ 편항과 분산의 tradeoff에 대해

딥러닝 이전, 편향과 분산에 대해 말할 때 편향과 분산을 독립적으로 줄일 수 있는 툴이 많이 존재하지 않았다. 즉, 편향을 줄이면 분산이 증가하고 분산이 감소하면 편향이 증가하는 해결방법들만이 존재했기에 두 요소를 적절하게 조정할 수 있는 최적의 교착점을 찾는 것이 중요했다. 

 

그러나 딥러닝 시대가 초래하면서 우리는 더 큰 네트워크를 구축함으로써 편향을 분산에 영향끼치지않고 독립적으로 줄일 수 있게 되었으며, 더 큰 데이터를 구축함으로써 분산을 독립적으로 줄일 수 있게 되었다. 따라서 딥러닝에서는 해당 문제에 대해선 이전보다 많은 주의를 기울이지 않아도 된다. 물론 데이터에 따라 bias- variance tradeoff가 존재할 수 있지만 보통 신경망 네트워크를 크게 키울 수 있다면 이는 모델에 미미한 정도의 영향을 끼칠 것이다.