DeepLearning
[DeepLearning] 딥러닝의 기초와 메모리 최적화 기법 복습
dong_seok
2025. 4. 16. 22:12
728x90
반응형
오늘은 복습겸 딥러닝의 기초과 되는 핵심 원리와 기법에 대해 간단하게 얘기하고자 합니다.
1. 딥러닝의 학습 과정
1) 순전파
입력 데이터가 모델의 각 층을 거쳐 예측값을 생성합니다. 이 과정에 각 층의 계산 결과와 상태값이 메모리에 저장됩니다.
2) 손실 계산
모델의 예측값과 실제 정답 간의 차이 즉, 손실을 계산합니다. 이 손실은 모델의 정확도를 측정하는 지표가 됩니다.
3) 역전파
계산된 손실을 기준으로 각 층을 거슬러 올라가며 가중치가 손실에 미치는 영향 즉, 그래디언트를 계산합니다. 이때 순전파에서 저장해둔 상태값들이 활용됩니다.
4) 가중치 업데이트
계산된 그래디언트를 바탕으로 옵티마이저가 모델의 가중치를 조정합니다. 이 과정을 통해 모델은 점점 더 정확한 예측을 할 수 있게 됩니다.
2. 딥러닝의 핵심 구성 요소
1) 레이어(Layer)
레이어 또는 층은 인공 신경망의 기본 구조 단위입니다.
- 입력 데이터를 받아 특정 연산을 수행
- 연산 결과를 다음 레이어로 전달
- 가중치와 활성화 함수를 포함하여 데이터의 특징을 추출하거나 변환
2) 활성화 함수(Activation Function)
- 신경망에 비선형성을 도입하여 복잡한 패턴 학습 가능
- ReLU, Sigmoid, Tanh, LeakyReLU 등 다양한 종류 존재
- 각 활성화 함수는 고유한 특성과 적합한 사용 사례 보유
- 기울기 소실 문제 해결을 위한 특수 설계된 활성화 함수들 발전
3) 손실 함수(Loss Function)
- 모델의 예측과 실제 정답 간의 차이를 수치화 및 학습 목표 정의
- 회귀 문제: MSE(Mean Squared Error), MAE(Mean Absolute Error)
- 분류 문제: Cross-Entropy Loss, BCE(Binary Cross-Entropy)
- 특수 목적: Triplet Loss(유사도 학습), Focal Loss(클래스 불균형)
4) 옵티마이저(Optimizer)
- 그래디언트를 기반으로 모델 파라미터를 업데이트하는 알고리즘
- SGD, Adam, RMSprop, AdamW 등 다양한 알고리즘 존재
- 학습률 스케줄링을 통한 최적화 성능 향상
- 모멘텀, 적응적 학습률 등의 기법 활용
5) 그래디언트
그래디언트는 손실 함수의 기울기를 의미합니다.
- 각 가중치 파라미터가 손실에 미치는 영향을 수치화한 값으로 손실 함수를 파라미터에 대해 미분하여 계산
- 그래디언트의 방향은 손실이 가장 빠르게 증가하는 방향
- 옵티마이저는 그래디언트의 반대 방향으로 파라미터를 업데이트
- 학습률(learning rate)은 파라미터 업데이트 크기를 결정
6) 정규화 기법(Regularization)
- Dropout: 학습 중 일부 뉴런을 임의로 비활성화
- 가중치 감소(Weight Decay): L1/L2 정규화를 통한 모델 복잡도 제한
- 배치 정규화(Batch Normalization): 내부 공변량 이동 감소
- 데이터 증강(Data Augmentation): 학습 데이터 다양화
3. 대규모 모델 훈련을 위한 메모리 최적화 기법
딥러닝 모델이 커질수록 메모리 요구량도 증가합니다. 제한된 리소스에서 효율적인 훈련을 위한 주요 기법 몇가지를 정리합니다.
1) KV 캐시(Key-Value Cache)
- 개념: 이전에 계산한 키(Key)와 값(Value) 결과를 메모리에 저장해 재활용
- 효과: 동일한 입력 토큰에 대한 중복 계산 방지
- 적용: 주로 트랜스포머 기반 모델(GPT, BERT 등)의 어텐션 메커니즘에서 사용
- 이점: 추론 속도 향상 및 계산 비용 절감
2) 그래디언트 체크포인팅(Gradient Checkpointing)
- 개념: 모든 중간 활성화값 대신 일부 체크포인트만 저장
- 작동방식: 역전파 시 필요한 중간값을 체크포인트로부터 재계산
- 트레이드오프: 메모리 사용량 감소 ↔ 계산 시간 증가
- 적용 사례: 초대형 언어 모델, 고해상도 이미지 처리 모델
3) 기타 메모리 최적화 기법
- 양자화(Quantization)
- 32비트 부동소수점 → 16비트, 8비트, 4비트로 정밀도 축소
- 모델 크기 및 메모리 사용량 대폭 감소
- 약간의 성능 손실이 발생할 수 있음
- 모델 병렬화(Model Parallelism)
- 대규모 모델을 여러 GPU/TPU에 분산 배치
- 파이프라인 병렬화: 모델 레이어를 여러 장치에 분할
- 텐서 병렬화: 단일 연산을 여러 장치에서 병렬 처리
- 혼합 정밀도 훈련(Mixed Precision Training)
- FP32와 FP16을 혼합하여 사용
- 메모리 사용량 감소 및 계산 속도 향상
- 스케일링 기법을 통해 정확도 손실 방지