JH 개발자의 성장일지

Deep Learning Study (10) / 24.09.26 본문

Deep Learning

Deep Learning Study (10) / 24.09.26

JHDeveloper 2024. 9. 26. 17:39

- Backpropagation

  • Layer가 많이 쌓이면 Backpropagation 계산 시 나타나는 문제점?
    • 계산해야 하는 양이 많아짐.
    • Local Minimum : 층이 많아질수록 신경망 복잡해짐 → Loss Function의 형태가 더 복잡해짐(더 많은 지역 최솟값을 가짐) → 가중치 업데이트 과정에서 기울기가 0에 가까운 값이 되거나 특정 값으로 수렴하는 경우가 많음. (특히나 Activation Function이 Linear Function(ex. Sigmoid, Tanh 등)인 경우 그 정도가 더 심함) → Global Minimum이 아니라 Plane local 이나 Local Minimum에 빠질 수 있음 → 효과적으로 가중치 업데이트 불가능
    *Tanh : Hyperbolic Tangent

역전파 역사

인공신경망 연구 초기 : Single Perceptron에 초점 ⇒ Backpropagation 등장으로 심층 신경망 (ex. Multi-Layer Perceptron) 학습 가능

ex. 3층 신경망 28*28 이미지 데이터 → Input Layer 784, Hidden Layer : 100, Output Layer : 10

가중치 한 번 바꾸는데 123시간 소요 ⇒ 최적의 가중치 찾기 불가능….

Backpropagation 연산을 통해 가중치 업데이트 후 2번째 학습에서 나온 Loss = 0.1245

⇒ Loss가 0.126 → 0.1245 로 줄어듦! (값 자체보다는 ‘줄어든다’에 집중!!)

 

 

 

 

 

ML (Machine Learning) vs Regression 의 Activation Function

  • Classification vs Regression의 Activation Function (이전 Layer의 Output 값을 변환해 다른 Layer의 뉴런으로 신호를 전달하기 위해서, 주로 Nonlinear Function 활용 ← Linear Function = Layer 수십 개 쌓아도 하나의 Linear 연산이 됨 → 특성 추출 불가능 (많은 실제 데이터는 Linear 보다는 Nonlinear 패턴을 가지고 있음 → Linear Function으로는 복잡한 Nonlinear 패턴 추출 X)
  • Classification : (이진) Sigmoid / (다중) Softmax (Softmax의 Output-graph = 입력에 따라 모양 바뀜, Sigmoid의 Output-graph = 일정)
  • Regression : ReLU (Rectified Linear Unit) (음수일 수 없는 Regression 문제에 적합, Output 값에 변형 X / Regression 문제 = 연속적인 실수 값을 예측 → 입력 값에 제한 없이 출력이 가능)

 

 

 

Batch Normalization

  • Normalization : 데이터의 범위를 특정 범위 또는 규칙에 따라 조정하는 과정
  • Normalization 하는 이유
    1. 다양한 단위나 범위를 가진 데이터를 일관된 형태로 변환
    2. 데이터의 스케일을 조정하여 분석 또는 처리가 용이
    3. 학습 알고리즘이 더 빠르고 효과적으로 수렴
    4. 데이터 내 특징(feature) 간의 상대적 중요도 균등화
  • Batch Normalization : 데이터를 학습 간 전체 데이터를 한번에 학습하기에 제한되는 경우, Mini-Batch로 쪼개고, 각 Layer에서의 Mini-Batch 입력 데이터의 분포를 평균 0, 분산 1로 정규화
  • Batch Normalization 주요 목적
    1. 학습 속도 향상 및 안정성 증가
    2. Overfitting 방지
      • Batch ****Normalization & Overfitting 방지
        1. Batch ****Normalization는 Mini-Batch 단위로 입력 데이터를 Normalization
        2. 각 Mini-Batch마다 평균과 분산이 달라지는 작은 노이즈가 발생
          1. 노이즈는 Dropout처럼 가중치에 약간의 무작위성을 부여하는 효과
          2. 모델의 각 Layer은 입력 분포의 변화에 덜 민감하게 됨.
        3. 모델이 특정 패턴이나 노이즈에 과도하게 적응(Overfitting)하는 것을 막아줌.
    3. 기울기 소실 문제 완화
      • 기울기 소실 문제 & Batch ****Normalization
        1. 각 Layer의 Input 값이 매우 크거나 작을 때 → Activation Function(Sigmoid, Tanh)의 기울기가 0에 가까워짐.
        2. Backpropagation에서는 Activation Function의 미분값과 곱해지게 되는데, 이 미분값(기울기)가 0이 되면 가중치 업데이트 X
        3. Batch Normalization은 입력데이터 (각 층 마다 적용됨)의 분포를 평균 0, 분산 1로 조정 → Input 값이 매우 크거나 작은 문제가 해결되어 Activation Function 기울기가 0이 아닌 다른 값을 Backpropagation에서 곱할 수 있게 도와줌.
        *기울기 소실 문제 완화는 Batch가 아닌 Normalization의 효과로 보임
      • : Layer가 깊어질수록 Backpropagation 과정에서 기울기가 작아져 0에 수렴해서 가중치가 업데이트가 되지 않아, 모델이 업데이트가 되지 않는 과정
  • Layer Normalization : training case별로 한 Layer의 모든 뉴런에 대한 Summed-Input의 평균과 분산을 구해 Regularization

*Batch Normalization vs Layer Normalizationbatch layer

적용 대상 고정된 데이터 구조 (이미지) 시간적 의존성 가진 데이터 (텍스트, 시계열)
배치 크기 의존성 없음
시간적 데이터 적합성 시간에 따른 변화에 적합 X 시간에 따른 변화에 적합 O
이상적 환경 배치 내 데이터 통계 안정적일 때 미니 배치 크기 작거나 데이터 변동이 적을 때
활용 분야 이미지 인식, CNN RNN, 트랜드포머, 자연어처리

참고 자료 https://jaylala.tistory.com/entry/Normalization-Batch-Normalization-Layer-Normalization

  • : Batch Normalization = Batch 단위의 데이터 묶음 단위로 데이터의 특성(feature) 별 평균과 표준편차를 구함 / Layer Normalization = 데이터 채널 묶음 단위로 단일 데이터 별 평균과 표준 편차를 구함