가중치 초기화 : Weight Initialization
딥러닝에서 가중치 초기화는 모델의 학습 속도와 성능에 큰 영향을 미친다.
잘못된 가중치 초기화는 학습을 느리게 하거나, 심한 경우에는 기울기 소실 또는 폭발 문제를 초래할 수 있다.
따라서 올바른 초기화는 과적합을 유발할 수 있는 불안정한 학습을 막는데 도움을 준다.
좋은 가중치 초기화 조건
1. 값이 동일해서는 안됨
2. 충분히 작아야 함
3. 적당한 분산 또는 표준편차를 가져야 함
가중치 초기화의 중요성
적절한 초기화는 빠른 수렴을 유도하며 기울기 소실 및 폭발 문제를 완화할 수 있다.
또한 네트워크가 적절한 손실함수 최소화 방향으로 나아가도록 도와준다.
동일한 가중치로 초기화하면 뉴런들이 같은 출력을 내므로 비효율적이다.
가중치 초기화 방법
네트워크 구조와 활성함수에 따라 적절한 방법을 선택해야 한다.
1. 0으로 초기화 > 잘못된 방법
모든 가중치를 0으로 설정하면 뉴런들이 동일한 출력을 내어 대칭적인 학습이 발생한다 .
같은 값을 학습하므로, 모든 노드가 같은 업데이트를 반복하여 학습이 되지 않는다.
따라서 가중치는 0이 아닌 다른 랜덤값으로 초기화 해야한다.
2. 랜덤 초기화 > 비효율적
가중치를 완전히 무작위로 초기화하는 방법이다.
보통 균등 분포 또는 정규 분포를 사용하여 초기화한다.
분산이 너무 크거나 작으면 기울기 소실이나 폭발 문제가 발생할 수 있다.
3. LeCun 초기화
시그모이드나 Tanh 활성화 함수에 최적화된 초창기 초기화 방식이다.
가중치가 입력 뉴런의 수에 따라 분산이 조정되도록 설정되어 신경망의 학습이 안정적이고 빠르게 이루어질 수 있도록 설계했다.
대부분의 경우 정규 분포에서 초기화한다.

학습 초기 단계에서 기울기 소실 문제가 적절히 완화되지만 깊은 신경망에서 기울기 소실이 여전히 발생할 수 있다.
4. Xavier 초기화 : Glorot Initalization
Sigmoid , Tanh처럼 평균이 0, 분산이 1을 가지는 활성화 함수에 적합하다.
모델이 단순할수록 균등 분포를, 깊고 복잡할수록 정규분포를 사용하는 경향이 있다.

Sigmoid, Tanh에서 기울기 소실 문제를 완화하고, 학습 초기의 신경망 가중치를 효과적으로 분포시킨다.
5. He 초기화 : Kaiming Initialization
ReLU, Leaky ReLU 활성화 함수에 최적화 된 가중치 초기화 방법이다.
ReLU의 특성상 출력 노드 수에 큰 영향을 받지 않아, 입력 노드 수만 반영한다.
분산을 크게 잡아 죽은 뉴런 문제를 방지하고, 기본적으로 정규 분포를 사용한다.

균등분포를 사용하지 않는 이유는 ReLU 활성화 비율이 낮아져 학습 속도가 떨어질 수 있기 때문이다.
ReLU에서 기울기 소실을 방지하고 죽은 ReLU가 감소하는 효과를 얻을 수 있다.
ResNet, VGG 등의 ReLU 기반 네트워크에서 많이 사용된다.
가중치 정규화 : Weight Regularization
가중치 정규화 방법에는 L1, L2 정규화가 있다.
실제와 예측값 차이에 일정한 값을 더해서 Loss를 더 커지게 하여 실제값과 예측값 차이에 따른 가중치의 과중한 변화를 막는 기법이다.
모델이 Loss를 줄이는 것에만 집착하게 되면서 가중치 값이 학습 데이터에만 지나치게 정교화되는 과적합이 일어나기 쉽다.
너무 큰 가중치에 패널티를 줘서 모델이 더 일반적인 패턴을 학습할 수 있도록 유도하는 것이다.
원래 손실함수의 출력값에 전체 가중치 행렬값의 절대값의 합, 제곱합 등을 일정 계수만큼 곱한 값을 더해서 Loss 출력 결과를 어느정도 무뎌지게 만든다.
※ Norm이란?
Norm은 크기를 계산하는 방법으로, 주로 벡터의 크기를 계산하는데 활용된다.

L1 Regularization : Lasso Regularization
가중치 벡터 W의 L1 Norm(절댓값의 합)을 비용함수에 추가한다.
원본 손실함수에 가중치의 절대값 합을 패널티로 추가하는 것으로, λ 값이 클수록 패널티가 커져 가중치가 더 강하게 줄어든다.

직선형 패널티를 주기 때문에 강제로 0이 되기 쉽다. (희소성)
가중치의 일부를 0으로 만들 수 있는데, 이를 특징 선택 효과(안중요한건 제거)라고 하고 모델이 간단하고 해석이 쉽게 만들어준다.
L2 Regularization : Ridge Regularization
가중치 벡터 W의 L2 Norm (제곱합)을 비용 함수에 추가한다.

가중치의 제곱합을 Loss에 더해서 모델이 복잡한 가중치 값을 학습하지 못하게 한다.
점진적으로 줄이기 때문에 값이 0에 가까워지기는 하지만 0이 되지는 않는다. 이는 모든 가중치를 조금씩 줄여 모델이 지나치게 복잡해지는 것을 막아 과적합 방지에도 유리하다.
모든 특징의 중요성을 유지하면서도 값을 조정하여 모델이 더 부드럽고 안정적으로 학습 된다.
0에 가까워질 뿐 실제로 0이 되지는 않기 때문에 희소성 효과가 없다.
Elastic Net (L1 + L2 Regularization)
L1과 L2 정규화의 장점을 결합한 정규화 기법이다.

L1의 희소성 효과와 L2의 일반화 효과를 모두 가진다.
Lasso 와 Ridge의 장점을 결합한 형태이다.
데이터에서 일부 특징이 중요하지만 일부는 작은 값이여야하는 경우나, L1 & L2를 선택할 수 없는 경우 사용하면 좋다.
Dropout
드롭아웃이란 일부 Connection 들과 연결을 해제하는 것이다.
0~1의 확률로 뉴런을 제거한다.

은닉층을 모두 훈련시키지 않고 랜덤하게 훈련에서 제외한다.
학습할 때 일정 확률로 노드들을 무작위로 선택하여, 선택된 노드의 앞뒤로 연결된 가중치 연결선을 없는 것으로 간주한다.
매번 미니배치로 입력이 들어올 때마다 드롭아웃을 할 노드를 새롭게 선택하여 학습한다.
단, 가중치가 무작위로 선택되어 학습되므로 학습 시간이 더 오래걸릴 수 있다.
드롭아웃과 학습 및 예측
Dropout은 학습할 때만 적용하고, 예측(추론)할 때는 모든 뉴런을 켠 상태로 수행하게 된다.
드롭아웃이 적용되어 학습할 때는 결국 드롭 아웃 확률 p 만큼 입력이 적은 상태로 학습이 된 것이기 때문에, 모든 뉴런을 켠 상태로 추론을 하면 1/p 배의 큰 입력을 받는 상태가 되는 것이다.
따라서 이를 상쇄하기 위해 추론을 할 때는 가중치 벡터 W에 드롭아웃 확률 p를 곱해서 추론을 한다.

가중치 정규화와 드롭 아웃
가중치 정규화 vs 드롭아웃

드롭아웃과 함께 사용하면 더욱 강력한 일반화 효과를 얻을 수 있다.
가중치 정규화는 학습을 안정적으로 만들고, 드롭아웃은 뉴런의 의존성을 줄이는 역할을 하므로, 둘을 적절히 조합하면 최상의 성능을 얻을 수 있다.
가중치 정규화는 언제 사용할까 ?
가중치 정규화는 훈련 데이터가 적고, 모델이 쉽게 과적합하는 경우, 딥러닝 네트워크의 모든 층에서 규칙적인 학습을 유도하고 싶을 때에 사용한다.
이 때, 특정 특징만 선택하고 싶은 경우엔 L1 정규화, 모든 특징을 조금씩 사용하고, 가중치가 너무 커지는 것을 방지하고 싶을 때는 L2 정규화를, 2가지 효과를 모두 원할 경우엔 Elastic Net을 사용한다.
드롭 아웃은 언제 사용할까?
드롭 아웃은 딥러닝 모델이 너무 깊고 복잡하거나 데이터가 부족하여 모델이 쉽게 과적합되는 경우에 사용한다.
특정 뉴런이 특정 패턴에 과하게 의존하는 것을 방지하고 싶을 때도 사용할 수 있다.
FC Layer에 사용하는 것이 가장 효과적이며, CNN의 마지막 층(FC 직전), 순환 신경망(RNN, LSTM, GRU) 내부에 적절히 사용하면 좋다.
가중치 정규화와 드롭아웃을 어떻게 함께 사용할까?
둘 다 과적합을 방지하는 방법이지만 역할이 다르기 때문에 함께 사용하면 더 강력한 정규화 효과를 얻을 수 있다.
CNN
Conv2d 층에는 L2 정규화를 적용하고, FC Layer에는 드롭아웃을 적용한다.
CNN에서는 가중치 정규화를 사용하여 안정적인 학습을 유지하고, FC Layer에는 드롭아웃을 적용하여 뉴런 간의 의존성을 줄이는 방식이 효과적이기 때문이다.
MLP
모든 Dense 층에 L2 정규화를 적용하고, 중간 Dense 층에 드롭 아웃(0.3~0.5)를 적용한다.
MLP는 매우 많은 뉴런을 가지므로 과적합이 되기 쉬운데, L2 정규화로 가중치를 제한하면서 드롭아웃으로 뉴런의 랜덤 비활성화를 추가하면 일반화 성능이 좋아지기 때문이다.
배치 정규화 : Batch Normalization
가중치 정규화와 드롭아웃 기법은 속도 저하 이슈가 있다.
가중치 정규화는 가중치가 빠르게 변화하는 것을 방해하고, 드롭아웃은 일부 레이어만 학습하여 다른 레이어의 학습을 방해한다.
Internal Covariant Shift : ICS 내부 공변량 변화
신경망 내부의 각 층을 통과할 때마다 입력 데이터의 분포가 조금씩 변경되는 현상을 의미한다.
네트워크가 학습하면서 이전 층의 가중치가 업데이트될 때, 이후 층의 입력 데이터 분포도 바뀌게 된다.
이는 학습을 불안정하게 만들고, 학습 속도를 저하시킨다.
이를 해결하기 위해 배치 정규화를 적용하여 입력 데이터의 분포를 일정하게 유지한다.

배치 정규화 순서
1. 미니배치 단위로 평균과 분산 계산
한 층의 입력을 구성하는 미니배치 데이터의 평균과 분산을 구한다.

2. 정규화
각 입력 xi를 평균 0, 분산 1이 되도록 정규화한다.

3. 스케일 & 시프트 : 학습 가능 매개변수 적용
네트워크가 최적의 표현을 학습할 수 있도록 새로운 학습 가능한 매개변수 γ(스케일링)와 β(시프트)를 추가한다.
scale : γ 배 데이터 값을 늘려줌 / shift : β 값 만큼 평균 이동

γ, β 는 학습 파라미터로 결과적으로 단순 정규화가 아니라 모델이 학습과정에서 학습에 유리한 분포를 찾아도록 파라미터를 업데이트 하는 것이다. (역전파로 학습하는 것)
배치 정규화 적용 위치
배치 정규화는 일반적으로 Conv 적용 후에 적용하고, 이후에 활성화 함수를 적용한다.

배치 사이즈 변화에 따른 모델 성능
큰 배치 사이즈를 적용하는 것보다 작은 배치 사이즈를 적용하는 것이 성능이 더 좋다.
큰 배치 사이즈보다는 작은 배치 사이즈가 상대적으로 더 자주 SGD를 계산하고 가중치를 업데이트하므로 보다 정확한 최적화가 가능하다.
논문에서는 보통 8보다 크고 32보다는 작을 것을 권고한다.
배치 정규화 효과
각 층의 입력 분포를 정규화 해서 학습 속도와 안정성을 높인다.
입력 데이터의 분포 변화를 줄여 학습을 안정화하는 내부 공변량 변화를 완화시킨다.
가중치 초기화에 덜 의존하게 되어 학습이 더 쉽게 수렴하는데, 이는 초기값 초기화에 덜 민감한 것이다.
드롭 아웃처럼 하이퍼파라미터가 필요하지 않고 과적합 방지 효과도 있다.
배치 단위 정규화 과정에서 약간의 노이즈가 추가되므로 과적합을 줄이는데 도움이 된다.
정규화 학습 속도가 저하되지 않으면서도 높은 성능을 내는 것이 가능하다.
데이터 증강 : Data Augmentation
CNN 모델의 성능을 높이고 과적합을 극복할 수 있는 가장 좋은 방법은 다양한 유형의 학습 이미지 데이터의 양을 늘리는 것이다.
학습 시에 원본 이미지에 다양한 변형을 가해서 학습 이미지 데이터를 늘리는 것과 유사한 효과를 얻을 수 있다.
원본 학습 이미지의 개수를 늘리는 것이 아니고, 학습 시마다 개별 원본 이미지를 변형해서 학습을 수행한다.
다양한 변형된 데이터를 학습하면 모델이 특정 패턴에만 의존하지 않고, 다양하고 변형된 그리고 새로운 데이터에도 잘 적응하도록 도와준다.
공간 레벨 변형
Filp
Vertical(up/down), Horizontal(left/right)
Crop
Center, Random
Affine
Rotate, Translate, Shear, Scale(zoom)
픽셀 레벨 변형
Bright, Saturation, Hue
Gray Scale
Contrast
Blur, Gaussian Blur, Median Blur
Noise, Cutout
Histogram
Gamma
Sharpen
...
데이터 증강 주의 사항
원본 데이터의 의미를 해치지 않는 변형을 해야한다.
예를 들어 MNIST 같은 숫자 데이터에서는 좌우 뒤집기의 의미가 없을 수 있다.
데이터셋에 맞는 증강 기법을 선택해야 한다.
OCR 모델에서는 글자를 회전시키면 안된다.
증강을 과하게 하면 오히려 성능이 나빠질 수 있다.
지나치게 변형을 하게 되면 원본과 너무 달라져 오히려 모델이 혼란스러워할 수 있다.
훈련 데이터에만 적용하고 검증/테스트 데이터에는 적용하지 않는다.
증강된 데이터는 학습할 때만 사용하고, 평가할 때는 원본 데이터만을 사용해야한다.
데이터 증강은 데이터 부족 문제를 해결하고, 모델의 일반화 성능을 높이는 강력한 도구이다.
이미지, 텍스트, 오디오에서 다양한 방법으로 적용이 가능하다.
하지만 너무 과하게 변형을 하면 오히려 성능이 나빠질 수 있다.
데이터를 더 많이 확보하는 것보다, 잘 변형하는 것이 효과적일 수 있다.
조기 종료 : Early Stopping
조기 종료란 어느정도 학습이 완료되면 학습을 멈추는 것을 의미한다.
학습을 진행시키다보면 어느 순간 다시 손실 값이 올라가는 지점이 생기는데, 그 전에 학습을 멈춰 최적의 상태로 만드는 것이다.

GAP : Global Average Pooling
GAP는 CNN에서 특징맵의 평균값을 계산하여 FC Layer 대신 사용하는 Pooling 기법이다.
공간적 크기를 모두 축소하여 채널의 개수만 남긴다.

GAP 의 동작 원리
각 특징맵에서 모든 값을 단순히 평균으로 압축한다.
CNN의 마지막 Conv layer에서 나온 특징맵의 가로 x 세로의 특정 영역을 Sub Sampling하지 않고, 채널별로 평균값을 계산하여 하나의 값으로 변환한다.
특징맵을 벡터 형태로 변환하여 분류기로 전달한다. (각 채널마다 평균을 구해서 벡터화)

파라미터 수가 감소하여 모델 경량화와 과적합을 방지할 수 있고, 각 채널별 평균을 계산하므로 전역적인 특징이 반영되어 공간 정보 유지도 가능하다. 또한 네트워크 최종 특징맵만 평균을 내기 때문에 모델 크기도 축소하고 FC Layer를 사용하지 않아 모델이 단순해진다.
다만 모든 값을 평균 내기 때문에 객체의 위치나 구체적인 모양 정보가 사라져 지역 정보 손실의 위험이 있고, 특정 픽셀의 정보가 뭉뚱그려지므로, 지역 특징이 무시되어 세부 특징을 표현하기 어려울 수 있다.
또한 단순 평균이기 때문에 FC Layer만큼 복잡한 패턴을 학습하지 못한다.
이를 해결하기 위하여 Global Max Pooling이나 Attention Mechanism과 혼합할 수 있다.

언제 FC Layer가 필요할까?
GAP 를 사용하면 특정 조건에서 FC Layer 없이도 모델이 예측을 할 수 있다.
1. 최종 특징맵의 개수가 클래스 수와 동일할 때
최종 특징맵의 개수가 예측하려는 클래스 개수와 동일할 때, FC Layer없이 Softmax만으로 직접 예측이 가능하다.
2. 공간적 정보가 FC 없이 충분할 때
GAP는 각 특징맵의 Global Average를 계산하므로, 이미지의 전역적인 특정을 잘 학습한다.
특정 클래스가 이미지의 특정 위치에 관계없이 전역적으로 분포할 때 유리하다.
3. 모델의 크기를 최적화 할 때
FC Layer 없이 GAP 을 사용하면 파라미터 수가 크게 줄어든다.
따라서 연산량과 메모리 사용량을 줄일 수 있다.
4. 과적합을 피해야 할 때
FC Layer는 많은 파라미터를 학습하기 때문에 과적합의 위험이 높다.
GAP 은 파라미터 없이 평균만 계산하기 때문에 과적합의 위험이 거의 없다.
특히, 데이터셋이 작거나 제한적일 때 GAP 을 사용하면 안정적인 학습이 가능하다.
5. 지역적 정보가 중요한 경우
얼굴 인식이나 객체 탐지 등 특정 객체의 위치 정보가 중요할 때는 GAP만으로는 학습이 어려울 수 있다.

라벨 스무딩 : Label Smoothing
라벨 스무딩이란 One-hot Encoding된 레이블 값을 약간의 불확실성을 추가하여 부드럽게 만드는 방법이다.

라벨 스무딩의 효과
1. 모델의 과신 방지
원-핫 인코딩 된 레이블은 정답에 100% 확신을 부여하지만, 실제 데이터는 완벽히 구분되지 않는 경우가 많다.
라벨 스무딩은 모델이 학습할 때 약간의 불확실성을 추가하여, 확신을 완화하고 일반화 능력을 높힌다.
2. CE의 안정성 증가
라벨 스무딩은 CE Loss 계산 시, 0이나 1에 극단적으로 가까운 값이 들어가는 것을 방지한다.
그 결과 역전파 시에 기울기 폭발이나 소실 문제가 완화된다.
하지만 너무 큰 스무딩 factor는 예측력을 감소할 수 있다.
3. 과적합 방지
지나치게 학습 데이터에 맞추는 모델을 방지하여 일반화 성능이 향상된다.
특히, 노이즈가 포함된 데이터에 대해 모델이 더 안정적으로 예측을 수행할 수 있다.
하지만, 잘못된 라벨이 있으면 학습에 악영향을 줄 수 있다.
라벨 스무딩 적용 예시
1. 이미지 분류
CIFAR-10, ImageNet 같은 대형 데이터셋에서 라벨 스무딩을 사용하여 학습 속도를 높이고 과적합을 방지한다.
2. 자연어 처리
트랜스포머 모델에서 라벨 스무딩을 활용하여 모델이 특정 단어에 과도하게 의존하지 않도록 한다.
3. 객체 탐지
객체 탐지에서는 작은 물체를 탐지할 때, 모델이 종종 오탐지를 발생시킨다.
작은 물체는 이미지 내에서 불분명한 경계를 가질 수 있기 때문에 모델이 100% 확신을 가지면 오탐지 확률이 높아진다.
특히, 배경과 구분이 어려운 물체는 모델이 잘못된 클래스 확신을 갖게 되어 오탐지율이 높아진다.
라벨 스무딩은 이 확실을 완화하여, 오탐지를 줄이고 학습을 더 유연하게 만든다.
'2025 학부 인턴 > CV' 카테고리의 다른 글
| 인식이란 : Recognition (0) | 2025.12.16 |
|---|---|
| 전이학습 : Transfer Learning (1) | 2025.12.16 |
| CNN 학습 (0) | 2025.12.15 |
| CNN의 구조 (0) | 2025.12.15 |
| CNN 등장 배경 (0) | 2025.12.15 |