딥러닝/혁펜하임의 Easy! 딥러닝

[Chapter 6] 깊은 인공 신경망의 고질적 문제와 해결 방안

꾸준함. 2025. 2. 3. 02:17

1. 기울기 소실 (Vanishing Gradient)과 과소적합 (Underfitting)

  • 기울기 소실: 그래디언트가 사라지는 현상
    • 네트워크의 깊이가 깊어질수록 Backpropagation 과정에서 기울기가 점차 작아져, 입력층에 가까운 레이어들의 파라미터 업데이트가 거의 이루어지지 않는 현상
    • 입력층에 가까운 레이어일수록 파라미터들에 대한 편미분이 0에 가까워져, 학습에 심각한 불균형 발생
    • 기울기 소실 문제가 발생하면 단순히 그래디언트의 크기가 0에 수렴한다는 것이 아니라 문제의 본질은 출력층은 어느 정도 학습이 되더라도, 입력층에 가까운 층들이 제대로 학습되지 않아 입력 데이터를 망쳐놓기 때문에 뒤쪽 층에서 아무리 노력해도 좋은 결과를 낼 수 없게 된다는 점

 

1.1 기울기 소실이 발생하는 이유

  • Backpropagation 시 체이닝 룰의 곱셈 효과
    • 딥러닝 모델에서는 역전파 알고리즘을 사용해 각 레이어의 파라미터에 대한 기울기를 계산
    • 이때, 최종 출력에 도달하기 위해 여러 층을 거치며 연쇄적으로 미분값 (즉, 각 레이어의 활성화 함수의 도함수와 가중치)이 곱해지게 됨
    • 만약 각 단계에서의 도함수 값이 1보다 작다면, 여러 번 곱해질수록 그 값은 기하급수적으로 작아지게 됨
    • 이로 인해 입력층에 가까운 레이어에서는 기울기가 거의 0에 수렴하여 학습이 제대로 이루어지지 않음

 

  • 활성화 함수의 선택
    • 시그모이드(sigmoid) 또는 하이퍼볼릭 탄젠트(tanh) 같은 활성화 함수는 출력 값이 특정 범위로 제한되며, 이들 함수의 도함수도 최대 0.25나 1 정도로 작음
    • 따라서 이러한 활성화 함수를 여러 레이어에 걸쳐 사용하면, 기울기가 연쇄적으로 작아져서 초기 층으로 전달될 때 거의 소실되는 문제가 발생

 

  • 네트워크의 깊이
    • 딥러닝 모델의 레이어가 많아질수록 위의 곱셈 과정이 더 많이 일어나게 되어 기울기가 더욱 작아짐.
    • 이로 인해, 깊은 네트워크에서는 초기 레이어의 파라미터들이 거의 업데이트되지 않아, 모델 전체의 학습이 불균형하게 진행되는 문제 발생
    • 이 때문에 오히려 기울기 소실 문제가 발생할 때는 단순한 모델이 각 과정을 서로 다른 층에서 담당하는 깊은 모델보다 더 나을 성능을 보임

 

  • 파라미터 초기화와 학습률
    • 부적절한 가중치 초기화나 너무 작은 학습률 또한 기울기 소실 문제를 악화시킬 수 있음
    • 적절한 초기화 기법 (He 초기화, Xavier 초기화 등)과 활성화 함수 (ReLU 계열) 사용은 기울기 소실 문제를 완화시키는 데 도움이 됨

 

1.2 과소적합

  • 과소적합은 모델이 훈련 데이터의 패턴을 충분히 학습하지 못해 데이터와 동떨어진 함수를 학습하게 되는 현상
  • 기울기 소실과 같은 문제로 인해 모델이 제대로 학습되지 않으면 테스트 데이터는 물론이고 심지어 훈련 데이터에 대해서 조차 성능이 좋지 않은 상태가 됨

 

1.3 ReLU (Rectified Linear Unit)

  • 앞서 기울기 소실의 직접적인 원인은 Activation 함수에 있음을 알 수 있었음
  • 이에 따라 최대 기울기가 0.25인 Sigmoid 함수의 한계를 극복하여 기울기 소실 문제를 완화하고자 ReLU가 제안됨
  • ReLU는 Input 값이 양수일 때는 입력값을 그대로 출력하고, 음수일 때는 0을 출력하는 활성화 함수
    • 양수 입력에 대해서는 선형 액티베이션과 동일
    • 음수 입력 부분만 수정되었기 때문에 Rectified (수정된) Linear Unit이라고 명명됨
    • 이 간단한 수정만으로 활성화 함수의 미분값이 양수 영역에서는 1, 음수 영역에서는 0이 되어, 입력층으로 갈수록 그래디언트가 점점 작아지는 기울기 소실 현상을 효과적으로 막을 수 있음
    • 만약 음수 영역도 양수 영역과 동일하게 y=x 형태를 만들어 항상 액티베이션의 미분을 1로 유지하는 선형 액티베이션을 사용한다면 기울기 소실 문제는 방지할 수 있겠지만 비선형성이 전혀 없어 신경망의 복잡한 패턴을 학습하는 능력을 크게 제한한다는 치명적인 단점 발생
    • ReLU는 이러한 고민의 결과물로 0에서 꺾음으로써 기울기 소실 문제를 완화하면서도 비선형성을 확보

 

https://machinelearningmastery.com/rectified-linear-activation-function-for-deep-learning-neural-networks/

 

  • 위 그래프를 보면 `Backpropagation 과정에서 단 하날도 0이 포함될 경우 전체가 0이 되므로 오히려 ReLU가 기울기 소실에 더 취약한 것이 아닐까?`라는 의문이 생김
    • 하지만 역전파 과정에서 편미분값을 구할 때, 해당 파라미터로 전달되는 모든 경로를 고려하여 그 값들을 더해주기 때문에 Sigmoid와 달리 입력층에 가까울수록 그래디언트가 필연적으로 작아지는 문제는 발생하지 않음
    • 정리하면 ReLU를 사용하면 일부 경로가 차단되는 것은 피할 수 없지만, 살아있는 경로를 통해서는 그래디언트를 온전히 전달할 수 있음
    • 반면, Sigmoid의 경우 모든 경로에서 0이 아닌 값을 가지긴 하지만 이미 너무 작아진 값들이 더해지므로 단순히 노드의 개수를 늘려 경로를 추가하는 것만으로는 문제 해결이 어려움
    • 물론 ReLU 또한 노드의 개수가 적을 경우 기울기 소실에 취약할 수 있음

 

결론적으로 ReLU를 사용한다고 해서 항상 기울기 소실 문제가 해결되는 것은 아니므로 신경망 구조 설계 시 단순히 활성화 함수만 바꾸는 것이 아니라 전체적인 구조와 노드의 수를 함께 고려해줘야 합니다.

 

ReLU의 한계를 보완하기 위해, 음수 부분을 조금 더 고려하는 Activation 함수가 제안되었습니다.

  • Leaky ReLU
  • Parametric ReLU

 

https://python.plainenglish.io/choosing-the-right-activation-function-in-deep-learning-a-practical-overview-and-comparison-c5372fe167f8

 

1.3.1 Leaky ReLU

  • ReLU와 달리 음수 영역의 기울기를 0이 아닌 0.01로 설정
  • 즉, 음수 부분에서 y=0.01x의 형태를 가짐

 

1.3.2 Parametric ReLU

  • 음수 영역의 기울기를 학습 가능한 파라미터 a로 설정
    • a는 역전파 과정에서 다른 파라미터들과 마찬가지로 학습됨
    • 구체적으로 Loss를 a로 편미분하여 그래디언트에 포함시킴으로써 새로운 파라미터를 최적화 가능
    • 활성화 함수 자체를 학습을 통해 최적화한다는 점이 매우 혁신적

 

  • Parametric ReLU의 Backpropagation 과정은 다음과 같음

 

https://genspark.ai

 

  • 그러나 Parametric ReLU가 항상 ReLU보다 뛰어난 성능을 보장하는 것은 아님
    • 만약 학습 고자어에서 음수 영역의 기울기가 1에 가까워지면 선형 액티베이션인 y=x와 유사해짐
    • 이로 인해 비선형성이 감소하여 신경망의 복잡도가 제한될 수 있음

 

1.4 ReLU 그 후

  • ReLU의 등장으로 딥러닝의 학습 성능이 비약적으로 향상되었고 이를 더욱 개선하기 위한 새로운 활성화 함수 연구가 활발히 이루어짐
  • 대표적으로 Swish, ELU (Exponential Linear Unit), SELU (Scaled ELU), SERLU (Scaled Exponentially-Regularized Linear Unit) 등이 제안됨
    • 이러한 새로운 활성화 함수들은 ReLU의 기본 구조를 유지하면서도 다양한 변형 시도
    • 양수 영역에서도 일부 변형이 있었지만 특히 눈에 띄는 것은 음수 영역에서의 다양한 변화 발생
    • 이러한 시도들은 비선형성을 유지하면서도 기울기 소실 문제를 더욱 효과적으로 완화하는 것을 목표로 함

 

https://vitalab.github.io/blog/2024/08/20/new_activation_functions.html

 

1.5 배치 정규화 (Batch Normalization)

  • 배치 정규화의 `Batch`는 Mini-Batch 학습에서의 `Batch`를 의미
  • 이 기법의 이름은 Batch에 대한 평균과 표준편차를 이용해 정규화를 수행하는 방식에서 유래
  • 액티베이션 함수가 ReLU일 때 배치 정규화는 다음의 메커니즘을 통해 기울기 소실 문제를 해결
    • 각 레이어에 들어오는 입력 데이터의 분포를 평균 0, 그리고 분산 1로 정규화함으로써 각 층이 안정적인 입력 분포를 받도록 함
    • 이로 인해 네트워크 전반의 학습이 보다 일관되게 이루어지며 역전파 시 계산되는 기울기들도 급격한 변화 없이 안정적으로 전달됨
    • 정규화 과정을 거치면 입력 값들이 적절한 범위 내 머물게 되어 활성화 함수의 비선형성 부분 (예: Sigmoid의 포화 영역)에 빠지는 현상을 줄임
    • 결과적으로 역전파 시 기울기가 소실되거나 폭발하는 현상이 완화되어 깊은 네트워크에서도 효과적으로 기울기가 전달됨
    • 이로 인해 최적화 과정에서 학습률 조절을 용이하게 만들고 빠른 수렴을 지원하며 학습 초기에 큰 기울기 변화로 인한 불안정성을 줄여줌으로써 전반적인 학습 과정의 안정성을 높임

 

  • 만약 액티베이션 함수가 ReLU가 아니라 Sigmoid라면?
    • Sigmoid의 경우 그래프의 중앙과 외곽 부분은 비선형성이 부족하고, 중간 부분은 비선형성이 적당하지만 미분값이 너무 작음
    • 따라서 일부는 중앙에, 일부는 중앙과 외곽 부분의 사이에 들어가야 둘의 균형을 맞출 수 있기 때문에 여기서는 평균 0, 분산 1로 조정하는 것이 항상 최적은 아님
    • 또한, ReLU의 경우에도 평균 0 분산 1로 재배치하는 것이 최적이라고 단정할 수는 없음
    • 즉, 활성화 함수에 따라 최적의 재배치 위치를 정확히 알기는 어려움
    • 이에 따라 배치 정규화는 어디로 재배치할지를 학습함
      • Input 값을 모래알에 비유한다면 해당 모래알들을 어디에 (평균), 얼마나 넓게 (분산) 뿌릴지를 학습하는 것
      • 즉, 각 노드에 대해 비선형성과 기울기 소실 문제 해결 사이의 균형을 학습한다고 볼 수 있음

 

  • 배치 정규화의 자세한 동작 원리는 다음과 같음

 

https://www.genspark.ai/

 

  • 배치 정규화는 주로 Input 값에 적용하지만, 활성화 함수를 통과한 후의 Output 값에 적용하기도 하므로 원하는 위치에 배치 정규화 층을 추가할 수 있습니다.
    • 일반적으로 Input 값에 적용하는 것이 가장 흔히 사용되는 방식
    • 또한, β가 bias와 비슷한 역할을 수행하므로 배치 정규화를 사용하는 층에서는 일반적으로 bias를 사용하지 않음

 

  • 배치 정규화는 평균과 표준편차의 제곱을 Batch에 대해 구하기 때문에 학습 시와 테스트 시 다르게 동작함
    • 테스트 시 단일 데이터를 입력할 경우 데이터와 평균값의 차가 0이 되고, 분산 또한 0이 되기 때문에 정규화 과정에서 문제가 생김
    • 이를 해결하기 위해 학습 시 평균과 분산의 EMA (Exponential Moving Average)를 구해줌
    • 즉, 테스트 시에는 평균과 분산을 새롭게 구하지지 않고 학습 시에 구한 EMA 값을 사용

 

1.5.1 배치 정규화 적용 예시

  • 아래 그림은 이미지 데이터에 대한 배치 정규화 적용 예시
  • 파란색 부분이 평균과 분산 계산에 사용되는 샘플
  • N은 Batch Size (데이터 개수)
  • C는 채널 수
  • H와 W는 각각 이미지의 높이와 너비 픽셀의 수
  • 이미지에 배치 정규화를 적용할 때는 일반적으로 각 채널별로 모든 배치와 모든 픽셀 위치의 값을 사용하여 평균과 분산의 제곱을 구함
  • 또한, 배치 정규화를 이미지 데이터에 적용할 때는 각 채널마다 γ와 β 두 파라미터를 가짐 (예: 세 개의 채널을 가진 이미지의 경우 총 6개의 파라미터가 학습됨)
    • 즉, 같은 채널 내의 모든 픽셀들에 대해서는 동일한 γ와 β가 사용됨

 

https://paperswithcode.com/method/batch-normalization

 

1.5.2 배치 정규화 실험 결과 분석

  • 배치 정규화는 딥러닝 모델의 성능을 크게 향상하는 것으로 알려져 있지만 정확히 어떤 메커니즘으로 이러한 효과를 내는지에 대해서는 아직 완전히 밝혀진 바가 없음
  • 배치 정규화의 작동 원리에 대한 직관적인 이해를 돕기 위해 Sigmoid만 사용한 모델과 모든 층에 배치 정규화를 Sigmoid 전에 추가한 모델의 학습 과정을 비교
    • 해당 실험에는 CNN (Convolutional Neural Network)을 사용하여 손 글씨 숫자 이미지를 분류하는 10개 클래스 (0 ~ 9)의 다중 분류 문제를 학습시킴
    • 해당 실험에서는 첫 번째 Layer와 마지막 Layer의 Input 값 분포를 히스토그램으로 나타냄
    • 히스토그램은 값의 분포를 시각적으로 보여주는 도구로 분포의 중심, 퍼진 정도, 대칭성 등을 한눈에 파악 가능
    • 여기서는 양수 값을 초록색, 음수 값을 빨간색 막대로 표현하여 Input 값의 부호별 분포도 쉽게 확인 가능
    • 첫 번째 Layer와 마지막 Layer의 히스토그램을 비교함으로써 신경망을 통과하면서 Input 값의 분포가 어떻게 변화하는지 관찰 가능
    • 또한 각 Batch마다 Input 값의 분포가 조금씩 다를 수 있어 이러한 Batch 간 변동성을 보여주기 위해 여러 개의 히스토그램을 겹쳐 표시했으며 이를 통해 단일 Batch가 아닌 여러 Batch에 걸친 Input 값의 전반적인 분포 경향을 파악 가능

 

1.5.2.1 배치 정규화를 적용하지 않은 모델의 학습 과정

  • Epoch 1에서는 웨이트가 0으로 초기화되기 때문에 첫 번째 Layer와 마지막 Layer 모두에서 Input 값이 0 근처에 집중되어 있음
  • Epoch 5에 이르면 마지막 Layer의 Input 값이 음수 쪽으로 이동한 것을 확인 가능
    • 이는 파라미터 업데이트가 이루어졌음을 의미하지만 동시에 기울기 소실 문제를 악화시킬 수 있는 위험도 내포하고 있음
    • 이는 Input 값이 음수로 치우치면 Sigmoid 함수의 미분값이 더욱 작아지는 영역으로 진입하기 때문

 

  • 반면, 첫 번째 층은 Epoch 1과 비교하여 거의 변화가 없음
    • 이는 기울기 소실로 인해 파라미터 업데이트가 거의 이루어지지 않았음을 시사
    • 결과적으로 앞쪽 층들은 점점 더 학습 기회를 잃게 됨
    • 이러한 경향은 학습이 끝나는 Epoch 100까지 지속되어 모델의 테스트 정확도는 11.3%에 그치게 됨
    • 이는 무작위로 추측하는 수준과 크게 다르지 않은 성능으로 실질적인 학습이 거의 이루어지지 않음을 시사

 

결국 Sigmoid 활성화 함수만을 사용한 깊은 신경망은 기울기 소실 문제로 인해 효과적인 학습을 하지 못한다는 것을 명확히 보여줍니다.

 

배치 정규화를 적용하지 않은 Sigmoid

 

1.5.2.2 배치 정규화를 적용한 모델의 학습 과정

  • 배치 정규화를 적용하지 않은 모델에 비해 Epoch 1에서부터 놀라운 차이를 보이며 마지막 층의 히스토그램이 배치 정규화를 적용하지 않았을 때와 확연히 다른 모습을 보임
    • 이는 배치 정규화의 초기화 파라미터를 일반적으로 γ = 1, β = 0으로 설정하기 때문
    • 즉, 초기에는 Input 값의 평균을 0으로, 분산을 1로 만듦
    • 그에 따라, 배치 정규화를 적용하기 전보다 Input 값의 분포가 더 넓게 퍼진 것을 확인 가능

 

  • Epoch 5에 이르면 그 차이가 더욱 뚜렷해짐
    • 첫 번째 Layer의 Input 값의 분포가 Epoch 1에서 주로 양수에 집중되어 있던 것에 반해 음수 영역으로 이동된 것을 확인 가능
    • 하지만 그 업데이트의 폭이 크지 않다는 것을 통해 학습이 이루어지고는 있지만 기울기 소실 문제가 완전히 해결되지는 않았음을 시사
    • 모든 층에 최대 기울기가 0.25인 Sigmoid를 사용했기 때문에 배치 정규화를 적용했다고 하더라도 기울기 소실 문제에 완전히 자유로울 수는 없음
    • 마지막 Layer에서는 Input 값이 음수 쪽으로 이동하는 경향은 같지만 그 분포가 훨씬 더 넓은 것으로 보아 배치 정규화가 기울기 소실 문제를 완화하기 위해 넓게 재배치하고 있음을 보여줌

 

  • 마지막 Layer의 Input 값 분포가 초반 Epoch에서는 음수 쪽으로 이동하다가 Epoch 100에서는 다시 양수 방향으로 이동함으로써 비선형성을 유지하면서도 기울기 소실 문제를 효과적으로 완화하는 위치에 수렴함
    • 이 것은 마치 음수 쪽으로 더 이동하면 기울기 소실 문제가 더 악화됨을 감지하여 양수 쪽으로 이동한 듯한 모습

 

  • 배치 정규화를 적용한 결과 활성화 함수가 기울기 소실을 완전히 방지할 수 없는 Sigmoid 함수임에도 불구하고 Loss가 급격히 감소하고 정확도가 빠르게 상승하는 모습을 확인 가능
    • 이는 배치 정규화 적용 전 모델과 극명한 대조를 이룸

 

  • 레이어별 이미지 변환 과정 역시 배치 정규화를 적용하지 않았을 때는 기울기 소실로 인해 정보가 점차 사라진 반면 이제는 각 층이 숫자의 윤곽과 특징을 잘 포착하는 것을 확인 가능

 

해당 실험 결과는 배치 정규화가 Sigmoid가 가진 한계점을 극복하는 데 크게 기여함을 보여줍니다.

다른 모든 조건이 동일한 상황에서 배치 정규화의 추가만으로 학습이 불가능했던 모델이 높은 성능을 달성하게 된 것입니다.

  • 이를 통해 배치 정규화의 재배치 파라미터가 비선형성과 기울기 소실 문제 사이의 최적의 균형점을 찾아가는 과정을 학습한다고 해석 가능 (AI가 학습 과정에서 스스로 이 균형을 찾아가며 성능을 향상함)
  • 정리하면 AI는 Input 값들을 비선형성과 기울기 소실 문제 사이의 균형 있는 위치로 재배치하는 것이 전체 네트워크의 Loss를 효과적으로 줄이는 데 도움이 된다는 것을 `발견`한 것으로 보임

 

배치 정규화를 적용한 Sigmoid
배치 정규화 적용 전 vs 배치 정규화 적용 후

 

1.6 레이어 정규화 (Layer Normalization)

  • 배치 정규화는 평균과 분산을 Batch에 대해 게산하기 때문에 학습과 테스트 시 다르게 동작해야 하며 작은 Batch Size에서 성능 저하가 발생할 수 있음
  • 레이어 정규화는 이러한 문제를 해결하기 위해 평균과 분산을 계산하는 기준을 변경함
    • 레이어 정규화는 레이어에 대해 평균과 분산을 계산함
    • 구체적으로 레이어에 들어가는 Input 값들을 샘플로 사용해 평균과 분산을 구함으로써 Batch Size에 영향을 받지 않음
    • 정리하면 학습과 테스트 시 동일한 방식으로 평균과 분산을 계산할 수 있어 EMA를 구할 필요 없이 일관성 있는 동작이 가능하며 Batch Size와 무관하게 동작하므로 Batch Size에 따른 성능 차이가 발생하지 않음

 

1.6.1 레이어 정규화 적용 예시

  • 이미지 데이터에 레이어 정규화를 적용할 때는 일반적으로 아래 그림과 같이 각 픽셀 위치에 대해 평균과 분산을 구함
  • 이는 Batch가 아닌 각 데이터의 각 픽셀 위치에서 모든 채널에 대해 계산하여 각 데이터와 각 픽셀 위치마다 독립적으로 평균과 분산을 구한다는 점에서 배치 정규화와 차이가 있음
  • 이 방식은 ViT, Swin Transformer, ConvNeXt 등 최신 비전 모델에서도 널리 사용됨
  • 즉, 레이어 정규화는 NLP 뿐 아니라 이미지 처리 모델에서도 자주 사용됨
  • 또한, 레이어 정규화를 이미지 데이터에 적용할 때는 일반적으로 배치 정규화와 마찬가지로 각 채널마다 γ와 β 두 파라미터를 가짐
    • ex) 세 개의 채널을 가진 이미지의 경우 총 6개의 파라미터가 학습됨
    • 즉, 같은 채널 내의 모든 픽셀들에 대해서는 동일한 γ와 β가 사용되는 것

 

https://angelina-yang.medium.com/what-is-layer-normalization-in-deep-learning-cdccc8439f4c

 

 

이처럼 레이어 정규화는 배치 정규화의 한계를 극복하고, 특히 NLP 작업에서 더욱 안정적인 학습을 가능하게 합니다.

데이터의 특성과 작업의 유형에 따라 적절한 정규화 방법을 선택하는 것이 중요합니다.

  • 일반적으로 이미지 데이터에서는 배치 정규화
  • 자연어 데이터에는 Padding 토큰 때문에 레이어 정규화를 주로 사용

 

2. Loss Landscape 문제와 ResNet의 Skip-Connection

  • 앞서 배치 정규화와 ReLU가 각각 기울기 소실 문제를 어떻게 완화하는지 확인했고 이 두 기법을 함께 사용하면 기울기 소실 문제를 효과적으로 막을 수 있어 깊은 신경망의 학습이 수월해질 것으로 예상 가능
    • 하지만, 이 두 기법을 사용 시 기울기 소실 문제는 해결되었음에도 불구하고 모델이 깊어질수록 훈련 데이터와 테스트 데이터 모두에 대한 성능이 오히려 떨어지는 Underfitting 현상이 나타남

 

https://amrokamal-47691.medium.com/residual-blocks-resnets-6817090ff61a

 

실험 결과 분석

  • 위 결과에서 주목할 점은 그래디언트 크기를 직접 확인해 본 결과 기울기 소실 문제가 효과적으로 해결되었음을 확인 가능
    • 즉, 그래디언트의 크기는 충분하기 때문에 파라미터 업데이트에는 문제가 없었다는 뜻
    • 만약 기울기 소실 문제가 있었더라면 Loss가 전혀 줄어들지 않았을 것

 

  • 또한 56층보다 더 깊은 모델일수록 훈련 에러가 더 크게 나타났으므로 이는 모델이 깊어질수록 Underfitting 현상이 더 심해짐을 확인 가능
  • 문제의 원인을 이해하기 위한 다양한 연구가 진행되었으며 그중 Loss Landscape 연구는 고차원 공간의 Loss 함수를 시각화여 중요한 통찰을 제공
    • 해당 연구 결과 모델이 깊어질수록 Loss 함수의 모양이 복잡해져 학습이 어려워진다는 사실이 밝혀짐

 

  • 이처럼 Loss Landscape 문제는 기울기 소실 문제와는 다른 양상을 보임
    • 기울기 소실 문제가 발생하면 학습 속도가 매우 느려지거나 거의 진행되지 않을 수 있지만, Loss Landscape 문제의 경우 학습은 진행되나 최적의 성능에 도달하기 어려워짐
    • 해당 문제는 모델의 깊이가 증가함에 따라 Loss 함수의 모양이 복잡해져 발생하는 것으로 후술 할 Skip-Connection과 같은 구조적 변화를 통해 해결 가능

 

2.1 Skip-Connection

 

아래 그림은 Loss 함수의 모양을 3차원으로 시각화한 것으로 이를 Loss Landscape라고 합니다.

  • Loss Landscape는 마치 지형도처럼 Loss 함수의 풍경을 보여주며 이를 통해 학습 과정의 난이도를 시각적으로 이해할 수 있음
  • 왼쪽 그래프는 56층 모델의 Loss Landscape
  • 오른쪽 그래프는 같은 56층 모델이지만 Skip-Connection이라는 기법을 적용한 모델의 Loss Landscape이며 Skip-Connection을 적용한 모델이 훨씬 더 평평하고 단순해진 것을 보아 이 기법을 사용하면 보다 나은 성능을 보일 것이 자명함
  • 논문에서는 층의 수가 적을수록 오른쪽과 같이 평평한 모양을 갖는 반면, 깊어질수록 왼쪽 그래프처럼 굴곡이 심하고 복잡한 형태로 변해감을 보임

 

https://seongkyun.github.io/papers/2019/02/21/Vis_Loss_NN/

 

Skip-Connection은 아래 그림과 같이 블록을 통과하기 전의 값을 블록 통과 후에 더하는 간단한 기법입니다.

  • 여기서 블록은 2~3개의 이니공 신경망 층을 하나로 묶은 것을 의미
  • 해당 기법을 적용하면 블록의 출력이 F(x)가 아닌 x + F(x)가 됨
  • 이에 따라 F(x)는 입력과 출력의 차이(잔차)만을 학습하면 되므로 학습이 보다 쉬워짐
  • 이러한 방식을 잔차 학습 (Residual Learning)이라고 하며 이 기법을 최초로 적용한 CNN 모델을 ResNet (Residual Neural Network)이라고 부름

 

https://zero2one.jp/ai-word/skipconnection/

 

  • 많은 문헌에서는 Skip-Connection이 기울기 소실 문제를 해결하기 위해 제안된 것으로 설명하고 있지만 이는 Skip-Connection에 관한 대표적 오해
    • Skip-Connection이 기울기 소실 문제를 완화하는 역할도 하지만, 이는 Skip-Connection의 최초 제안 목적은 아님
    • 실제로, Skip-Connection은 기울기 소실 문제가 발생하지 않았음에도 불구하고 모델이 깊어질수록 Underfitting이 일어나는 문제를 해결하기 위해 제안됨

 

3. 과적합 (Overfitting)

  • 훈련 데이터의 Loss를 줄이는 것이 항상 좋은 결과로 이어지지는 않음
    • 모델이 오직 훈련 데이터만을 보고 학습할 경우 훈련 데이터의 패턴을 너무 세세하게 학습해 버리는 케이스 존재
    • 이렇게 되면 훈련 데이터에 대한 성능은 좋아지지만 새로운 데이터셋에 대한 성능은 오히려 떨어질 수 있음
    • Overfitting은 모델이 훈련 데이터에 대해서는 우수한 성능을 보이지만, 일반화 능력은 떨어지는 현상을 말함
    • Overfitting이 발생하는 주된 이유는 모델이 풀고자 하는 문제에 비해 입력과 출력 사이의 관계를 필요 이상으로 복잡하게 간주하기 때문

 

  • Overfitting을 어떻게 해결할 수 있을까?
    • 모델 경량화: 신경망의 층 수나 노드 수를 줄여 모델을 더 단순하게 만들어 모델이 표현할 수 있는 관계의 복잡도를 줄임
    • 조기 종료 (Early Stopping): 모델을 학습시키는 동안 계속해서 검증 데이터에 대한 성능을 확인하여 최적의 학습 시점을 찾아 Overfitting을 방지 (검증 데이터에 대한 성능이 더 이상 개선되지 않거나 오히려 악화되기 시작하는 시점에 학습 중단)

 

위 둘만이 유일한 해결책은 아니며 Overfitting을 방지하고 완화하는 후술할 다른 효과적인 기법들도 존재합니다.

 

3.1 데이터 증강 (Data Augmentation)

  • Overfitting의 주요 원인으로 모델의 과도한 복잡성을 들 수도 있지만, 데이터 부족 역시 중요한 원인 중 하나
    • 데이터가 부족한 경우에는 단순히 모델을 경량화하는 것만으로는 문제를 해결하기 어려울 수 있음
    • 이러한 상황에서는 데이터를 더 많이 확보하는 것이 중요하지만 데이터를 얻는 것은 많은 비용이 발생할 수 있기 때문에 기존 데이터를 최대한 활용하는 데이터 증강 기법을 주로 사용
    • ex) 동물 분류 모델을 학습시키는 상황에서 하나의 강아지 사진을 여러가지 방법으로 변형하여 다양한 데이터처럼 활용 가능
      • 사진의 일부분 잘라내기
      • 채도, 명도, 색도 변경
      • 이미지 비율 조절
      • 상하 반전, 좌우 반전

 

  • 의료 데이터는 확보하기 어렵고 많은 비용이 들기 때문에 딥러닝을 의학에 접목하는 연구에서 다양한 증강 기법이 개발됨
    • Grid Distortion
    • Elastic Transform
    • 위 기법들은 이미지를 격자로 나누어 변형하는 방식으로 이렇게 변형된 이미지로 학습하면, 실제로 다양한 모양으로 변형될 수 있는 세포 등을 더 잘 인식할 수 있게 됨

 

https://www.researchgate.net/figure/Grid-distortion-and-elastic-transform-applied-to-a-medical-image_fig2_339481778?__cf_chl_tk=BaHt4VwpqR_tpO6lhVuPRp4pOXUbaQ4dzfiuxTOaOto-1738564854-1.0.1.1-zNavgGLravN2kuUGsXvXPPbOqWMKR.dyNRVA_wCgFjE

 

  • 하지만 무분별한 데이터 증강은 오히려 학습에 악영향을 줄 수 있으므로 데이터 증강 시 다음과 같은 요소들을 고려해야 함
    • 변형의 정도: 중요한 정보가 손실될 정도로 과도하게 변형하면 학습에 문제가 생길 수 있음
    • 모델의 집중 포인트: 변형의 정도를 결정할 때는 모델이 어떤 특징에 더 집중하고, 어떤 특징에 덜 민감해져야 하는지를 고려해야 함

 

3.2 Dropout

  • Dropout은 학습 과정에서 일부 노드를 무작위로 비활성화하는 방식으로 작동하며 이러한 특징에서 그 이름이 유래됨
    • 아래 그림에서 볼 수 있듯이, Dropout은 랜덤하게 선택된 노드를 일시적으로 `탈락시키는` 방식으로 동작
    • 이렇게 이부 노드가 무작위로 비활성화된 상태의 네트워크를 하나의 독립적인 모델로 간주한다면, Dropout은 마치 여러 개의 서로 다른 네트워크로 학습하는 것과 유사함
    • 테스트 단계에서는 이렇게 학습된 `여러 네트워크`를 앙상블하여 진행

 

https://en.wikipedia.org/wiki/Dilution_%28neural_networks%29

 

  • Dropout의 구현 방식은 상당히 간단함
    • 배치 정규화와 유사하게 원하는 Layer에 Dropout 층을 추가
    • 이 층에서는 각 노드의 출력값을 그대로 유지할지, 아니면 0으로 만들지를 결정하여 해당 노드의 활성 여부를 정함
    • 배치 정규화는 일반적으로 Activation 전에 적용하는 반면, Dropout은 일반적으로 Activation 후에 적용
    • 구체적으로 학습 과정에서는 Dropout 층의 노드에 대해 `살릴 확률` p를 지정 (p는 하이퍼파라미터)
    • 데이터가 이 층을 통과할 때마다 p의 확률에 따라 각 노드의 활성 여부가 새롭게 결정되며 이는 사실상 매 데이터마다 서로 다른 구조의 네트워크를 통과하는 것과 같은 효과를 냄
    • 각 데이터를 L_i로 표기하면 전체 Loss는 (L_1 + L_2 + ... + L_n) / n이 되며 해당 Loss를 바탕으로 그래디언트를 게산하고 파라미터를 업데이트하여 일부 노드가 탈락되더라도 Loss를 효과적으로 줄일 수 있는 방향으로 학습이 이루어짐
    • Dropout은 이처럼 레이어의 일부 노드를 탈락시켜 학습함으로써 특정 노드에 과도하게 의존하는 것을 방지하고 더 다양한 특징을 학습할 수 있게 함

 

https://nagadakos.github.io/2018/09/23/dropout-effect-discussion/

 

  • Dropout을 사용할 때 반드시 기억해야 할 특성은 배치 정규화처럼 학습 시와 테스트 시에 다르게 동작한다는 것
    • 학습 과정에서는 여러 네트워크를 통과하는 것과 같은 효과를 얻지만, 테스트 시에는 이러한 다양한 네트워크들의 앙상블 효과를 얻기 위해 모든 노드를 살림
    • 다만, 학습 시와 테스트 시의 전체 네트워크 출력값의 크기를 비슷한 수준으로 유지하기 위해 학습 당시 Dropout이 적용되었던 레이어의 각 노드의 출력값에 `살릴 확률` p를 곱함
    • 정리하면 테스트 시에는 어떤 노드도 탈락되지 않음

 

  • Dropout은 특히 Fully-Connected 레이어에서 주로 사용됨
    • FC 레이어는 모든 노드가 서로 연결되어 있어 Overfitting에 취약한 편
    • 즉, 노드가 필요 이상으로 많아지면 모델이 훈련 데이터의 레이블을 단순히 암기하게 되어, 새로운 데이터에 대해서는 적절한 예측을 하기 어려워짐
    • Dropout을 적용할 경우 일부 노드가 없어도 Loss를 효과적으로 줄일 수 있어야 하므로, 각 노드가 독자적인 역할을 찾아 의미 있는 특징을 추출하도록 유도

 

3.2.1 Autotencoder에 Dropout 적용, 실험 결과 분석

 

관련해서는 ljm565님의 블로그 글을 참고하면 될 것 같습니다.

https://ljm565.github.io/contents/ManifoldLearning3.html

 

Autoencoder (오토인코더) 구현 및 MNIST 특징 추출

Vanilla autoencoder, convolutional autoencoder, denoising autoencoder를 구현하고 t-SNE를 통한 데이터 특징을 가시화 합니다.

ljm565.github.io

 

3.3 Regularization

  • Loss 함수에 파라미터의 크기를 추가하여 함께 고려하는 기법

 

https://www.genspark.ai/
https://www.genspark.ai/

 

위 내용을 정리하면 람다가 매우 작을 때는 Regularization이 적용되지 않고 매우 클 때는 파라미터의 크기를 줄이는 데만 집중합니다.

따라서 람다 값을 적절히 조절하여 L과 w∥_p의 균형을 맞추는 것이 중요합니다.

파라미터의 크기를 줄이려고 하는 이유는 다음과 같습니다.

  • 모델 단순화
  • 과도한 학습 방지

 

1. 모델 단순화

  • 파라미터 크기를 줄임으로써 모델의 복잡도를 줄이고 더 단순한 모델을 만듦
    • 파라미터의 크기가 큰 모델은 더 복잡한 관계를 표현하게 되는데 이는 파라미터의 크기를 키우면 입력의 작은 변화에도 출력이 크게 변하게 되고, 여러 층에 걸쳐 이러한 효과가 누적되므로 매우 복잡한 비선형 관계를 표현할 수 있게 되기 때문

 

  • 파라미터 값이 큰 모델은 너무 복잡한 관계를 나타내므로 Overfitting의 위험도 커지기 때문에 파라미터의 크기도 L과 함께 고려하여 L + w∥_p를 최소화해야 함
    • 이때 L만을 최소화할 때보다는 모든 파라미터의 크기가 전체적으로 줄어들지만, 그 정도는 파라미터의 중요도에 따라 다름
    • 크기를 줄였을 때 L을 크게 상승시키는 파라미터는 상대적으로 덜 줄이게 되며 이는 해당 파라미터들을 줄이면 L이 크게 증가하여 전체 합을 줄이지 못하기 때문
      • 크기를 줄였을 때 L이 별로 커지지 않거나 유지 혹은 작아지게 하는 파라미터는 더 많이 줄이거나 0에 가까워지게 만들고 이는 이러한 파라미터들의 크기를 줄이는 것이 전체 합을 더 효과적으로 줄일 수 있기 때문
      • 결과적으로 위 과정은 모델이 너무 복잡한 관계를 학습하는 것을 방지하고, 더 일반화된 패턴을 학습하도록 지원하며 동시에 모델의 성능을 크게 저하시키지 않으면서도 불필요한 복잡성을 제거할 수 있게 함

 

2. 과도한 학습 방지

  • 충분히 수렴한 후에도 게속 학습을 진행할 경우 파라미터의 크기가 계속 커질 수 있음
    • Regularization을 적용하면 학습 초기에는 모든 파라미터는 랜덤하게 0 근처로 초기화되기 때문에 w∥_p보다는 주로 L을 줄이는 데 집중하다가, L이 어느 정도 줄어들면 파라미터 크기 w∥_p도 함께 고려하여 전체 L + w∥_p를 줄이는 방향으로 학습 진행
    • 이를 통해 모델의 복잡도를 적절히 제어하고 Overfitting을 방지할 수 있음

 

3.3.1 L2-Regularization vs L1-Regularization

L2-Regularization과 L1-Regularization 차이를 살펴보면 다음과 같습니다.

여기서 `파라미터를 두들기다`라는 표현은 모델이 학습하면서 손실 함수의 값을 최소화하려 할 때, 정규화 항이 파라미터의 크기를 줄이는 방향으로 작용하는 과정을 표현한 것입니다.

 

L2-Regularization

  • L2 정규화는 손실 함수에 파라미터 제곱합을 추가
  • 작은 값에 대해서는 제곱을 취하면 그 영향이 상대적으로 작기 때문에 작은 파라미터는 손실 함수에 큰 영향을 주지 않고 `살살` 두들김
  • 큰 값에 대해서는 제곱을 취하면 값이 기하급수적으로 커지므로, 큰 파라미터는 손실 함수에 큰 영향을 미치게 되고, 이들을 줄이기 위해 `강하게` 두들김
  • 결과: 큰 값의 파라미터에 대해서는 더 강한 페널티가 적용되므로, 모델은 불필요하게 큰 파라미터를 줄이려고 하고 이는 모델의 복잡도를 효과적으로 제어하여 과적합을 방지하는 데 도움이 됨

 

L1-Regularization

  • L1 정규화는 손실 함수에 파라미터 절댓값의 합을 추가
  • 각 파라미터에 대해 절댓값의 미분을 취하면 그 변화율은 파라미터의 크기에 관계없이 일정한 상수 값(대략 1 또는 -1)으로 나오기 때문에 파라미터의 크기와 상관없이 모두 같은 힘으로 정규화 항이 적용
  • 결과: 이 때문에 L1 정규화는 파라미터를 균일하게 줄이게 되어, 일부 파라미터는 0으로 수렴하도록 만들 수 있으며 (희소성 유도) 이는 불필요한 특성을 제거하는 데 유리
    • 특징 선택 (Feature Selection) 효과

 

3.3.2 Regularization과 MAP (Maximum A Posteriori)

  • 복습하자면 딥러닝을 MLE의 관점에서 해석했을 때 서로 다른 Loss 함수들이 사실은 NLL이라는 공통된 뿌리를 가지고 있음을 알 수 있었음
  • 이와 유사하게 L1-Regularization과 L2-Regularization도 MAP 관점에서 해석하면 같은 뿌리를 가지고 있으며, 단지 가정하는 분포만 다르다는 것을 알 수 있음

 

https://www.genspark.ai/
https://www.genspark.ai/

 

정리하자면 딥러닝 모델에서 Loss 함수들이 NLL에 기반한다는 점에서 MLE와 연결되고, 정규화 기법(L1, L2)은 MAP 추정의 관점에서 해석할 수 있습니다.

MAP 추정은 Likelihood 뿐만 아니라 파라미터에 대한 사전 분포를 고려하여 최적화하는데, 이로 인해 모델의 성능이 개선될 수도 있고, 반대로 부정확한 사전 정보로 인해 성능이 저하될 수도 있습니다.

따라서, 두 접근법은 상황에 따라 선택되어야 하며, 어느 한 쪽이 항상 우월하다고 볼 수는 없습니다.

 

3.3.3 L2-Regularization vs L1-Regularization 실험 결과 분석

  • 해당 실험에서는 {키, 몸무게} 관계를 파악하기 위해 간단한 MLP를 사용했으며 모델이 충분히 수렴할 수 있도록 1,000 Epoch까지 학습을 진행했음
  • 그래프는 Regularization을 적용하지 않은 모델, L2-Regularization을 적용한 모델, 그리고 L1-Regularization을 적용한 모델을 나타내며 각 모델에 대해 다음 세 가지 그래프를 제시함
    • 상단 막대 그래프: 전체 파라미터 중 15개를 선정하여 그 크기를 보여줌
    • 중앙 그래프: Train Loss와 Val Loss의 변화를 나타냄
    • 하단 그래프: x축은 키, y축은 몸무게로, 파란색 점은 훈련 데이터, 초록색 점은 검증 데이터, 빨간색 점은 테스트 데이터, 그리고 주황색 선은 모델의 에측 곡선

 

  • Regularization을 적용하지 않은 모델은 Train Loss가 가장 낮지만, Val Loss는 가장 높아 세 모델 중 Overfitting이 가장 강하게 나타났고 예측 곡선도 가장 오른쪽에 존재하는 훈련 데이터에 맞추려다 보니 오른쪽 부분이 꺾인 모양이 되어 검증 데이터와 멀어지며 Overfitting이 일어남
  • 반면, Regularization이 적용된 두 모델은 에측 곡선이 더 선형적이며, Val Loss와 Train Loss의 차이도 더 작아 Overfitting이 완화되었음을 알 수 있음
    • 웨이트 크기를 보면 Regularization을 적용한 모델들이 전체적으로 더 작은 웨이트를 가진 것을 볼 수 있고 이는 복잡도가 낮은 보다 단순한 모델에 가까워졌음을 의미

 

No Regularization vs L2-Regularization vs L1-Regularization

 

  • L2-Regularization과 L1-Regularization의 차이는 다음과 같음
    • 가장 큰 값을 가지는 7번 웨이트: L2-Regularization은 큰 웨이트를 더 강하게 줄이는 경향이 있어 L1-Regularization의 결과보다 더 작은 값을 가짐
    • 비교적 작은 값을 가지는 6번 웨이트: L2-Regularization은 작은 웨이트를 덜 줄이는 반면, L1-Regularization은 웨이트의 크기에 상관없이 모든 웨이트를 비슷한 정도로 줄이기 때문에 l2-Regularization 결과에서는 값이 아직 남아있는 반면 L1-Regularization에서는 0으로 수렴한 것을 확인 가능
    • 이러한 차이로 인해 L1-Regularization은 더 희소한 모델을 만들어내는 경향이 있음 (많은 파라미터가 0인 Sparse한 모델)

 

참고

혁펜하임의 Easy! 딥러닝

반응형