딥러닝에서 흔히 쓰이는 기법들입니다.
하지만 조금만 시간이 지나도 잊고 누가 그 개념이라도 물어보면 어버버하는 통에 제가 두고두고 보기 위해 작성했습니다.
아마 이 페이지는 드문드문이겠지만 지속적으로 계속 업데이트할 거 같습니다.
그럼 시작하겠습니다.
Batch Normalization
Batch Normalization은 2015년 Sergey Ioffe와 Christian Szegedy에 의해 처음 소개되었습니다. (https://arxiv.org/pdf/1502.03167.pdf) 핵심 아이디어는 네트워크의 각 층에서 입력 데이터의 분포를 정규화하는 것입니다. 그렇다면 각 층에서 입력 데이터의 분포를 정규화를 왜 해야할까요?
- 내부 공변량 변화 감소 (Internal Covariate Shift) 감소: 신경망 학습 중에 각 층의 입력 분포가 변화하는 것을 '내부 공변량 변화'라고 합니다. Batch Normalization은 이러한 변화를 줄여, 학습이 더 빠르고 안정적으로 진행되도록 도와줍니다.
- 학습률 향상 (Higher Learning Rates): 입력 분포가 일정하게 유지되면, 높은 학습률을 사용할 수 있으며, 이는 학습 속도를 가속화할 수 있습니다.
- 가중치 초기화에 대한 의존도 감소: 초기 가중치가 네트워크의 성능에 미치는 영향이 줄어듭니다. 이는 초기화 방법에 대한 부담을 줄여줍니다.
- Regularization 효과: Batch Normalization은 모델의 일반화를 돕는 것으로 알려져 있으며, 이는 과적합(overfitting)을 줄이는 데 도움이 됩니다.
Batch Normalization은 각 배치의 데이터에 대해 평균과 표준편차를 계산하여 정규화를 수행합니다. 이 과정은 학습하는 동안 네트워크 각 층의 활성화가 일정한 범위 내에 머무르도록 도와줍니다. 하지만 단순한 정규화 과정은 신경망이 학습해야 할 데이터의 중요한 특성을 잃을 수 있습니다. 예를 들어, 특정 레이어가 데이터의 스케일을 변화시키는 것이 유용할 수 있는데, 단순한 평균과 분산에 의한 정규화는 이러한 스케일 변화를 제거할 수 있습니다. 이를 보완하기 위해, Batch Normalization은 정규화된 데이터에 대해 추가적인 '스케일'(scale)과 '이동'(shift) 단계를 도입합니다.
- 스케일 (Scale): 정규화된 데이터는 학습 가능한 파라미터인 'γ' (감마)로 곱해집니다. 이 파라미터는 네트워크가 데이터의 스케일을 조정할 수 있도록 해줍니다. 즉, 데이터의 분산을 네트워크가 필요로 하는 수준으로 조절할 수 있습니다.
- 이동 (Shift): 그 다음, 학습 가능한 파라미터인 'β' (베타)가 정규화된 데이터에 더해집니다. 이는 데이터의 평균을 조정하는 역할을 합니다. 데이터의 중심을 원하는 위치로 옮길 수 있게 해줍니다.
이러한 '스케일'과 '이동' 단계는 네트워크가 정규화를 통해 잃을 수 있는 데이터의 중요한 특성들을 학습하여 보존할 수 있게 해줍니다. 간단히 말해, Batch Normalization은 데이터를 안정적으로 정규화하면서도, 네트워크가 필요한 데이터의 특성을 유지하고 조절할 수 있는 유연성을 제공합니다. 이는 신경망이 더 복잡하고 다양한 패턴과 관계를 학습하는 데 중요한 역할을 합니다.
Explainable AI
간단한 모델에서는 모델을 해석하기가 비교적 쉽습니다. 선형회귀, 로지스틱 회귀, 결정 트리와 같이 간단하고 해석하기 쉬운 모델은 결정 과정이 명확하고, 각 특성이 예측에 미치는 영향을 쉽게 이해할 수 있습니다.
하지만 흔히 '블랙박스'라고 표현하는 딥러닝에서 모델을 어떻게 해석할 수 있을까요?
1. 특성 중요도(Feature Importance): 랜덤 포레스트나 그래디언트 부스팅 같은 모델에서 각 특성이 예측에 미치는 중요도를 평가합니다. 이를 통해 모델의 결정에 가장 큰 영향을 미치는 특성을 식별할 수 있습니다.
2. SHAP(SHapley Additive exPlanations): SHAP 값은 게임 이론에 기반한 방법으로, 각 특성이 최종 예측에 얼마나 기여했는지를 수치화합니다. 이는 복잡한 모델에서 각 입력 특성의 영향력을 해석하는 데 유용합니다.
3. LIME(Local Interpretable Model-agnostic Explanations): 복잡한 모델의 예측을 근사하는 간단한 모델을 로컬로 학습하여, 특정 예측에 대한 해석을 제공합니다.
4. 시각화: 데이터와 모델의 예측을 시각화하는 것은 모델의 행동을 이해하는 데 도움이 됩니다. 예를 들어, 딥러닝 모델에서는 중간 레이어의 활성화를 시각화하여 네트워크가 어떤 특성에 반응하는지 파악할 수 있습니다.
5. 모델 비교: 복잡한 모델의 예측을 간단한 모델의 예측과 비교함으로써, 복잡한 모델이 어떤 통찰을 제공하는지 이해할 수 있습니다.
'Deep learning' 카테고리의 다른 글
PyTorch를 사용한 신경망 구축 (0) | 2024.05.04 |
---|---|
PyTorch 기초 (데이터, 모델, 학습, 저장) (0) | 2024.05.03 |
인공지능 인터뷰 준비 - 실제 받았던 질문들 (0) | 2024.01.23 |
BERT, RoBERTa, 그리고 BigBird (1) | 2024.01.21 |
Transformer 설명 (0) | 2024.01.18 |