들어가며
심층 신경망은 많은 수의 뉴런과 많은 층들로 이루어져 있어 학습해야 할 파라미터가 매우 많다
이로인해 복잡한 대규모 데이터셋을 학습하기 위해 네트워크는 높은 자유도를 가진다
이런 높은 자유도를 가진 네트워크는 훈련 세트에 과대적합되기 쉬워진다
따라서 규제가 필요하며 이번 글에서는 규제를 하는 여러 방식들에 대해 알아볼 것이다
l1, l2 규제
예전 글에서 선형 회귀 모델에 l1, l2 규제를 적용시킨 방법에 대해 다뤘었는데
신경망에서의 l1, l2 규제도 똑같은 방식이다
손실함수에 규제항을 더하여 최종 손실을 계산하고,
이 손실을 기준으로 역전파를 수행하여 가중치를 업데이트한다
layer = tf.keras.layers.Dense(100, activation="relu",
kernel_initializer="he_normal",
kernel_regularizer=tf.keras.regularizers.l2(0.01))
은닉 층에 규제 파라미터를 지정하지 않은 층의 가중치는 규제항 계산 시 포함되지 않으나
보통 실무에서는 모든 은닉 층에 규제를 적용한다고 한다
또한 kernel_regularizer 파라미터는 가중치에 규제를 적용시키고
biase_regularizer는 편향에 규제를 적용시킨다
드롭아웃
드롭아웃은 심층 신경망에서 인기 있는 규제 기법으로
매 훈련 스텝에서 신경망의 일부 뉴런을 무작위로 끄는 방식이다
각 뉴런은(출력 뉴런 제외) 드롭아웃될 확률 p를 가지게된다
즉 p=0.2라면 해당 스텝에서 각 뉴런마다 20% 확률로 꺼지게되는 것이다
하이퍼파라미터 p를 드롭아웃 비율이라고 하며 보통 10% ~ 50%로 지정한다
이러한 파괴적인 방식은 특정 뉴런에 의존하게 되는 것을 막으며
매번 다른 신경망을 학습하게되는 셈이 되어 더 다양한 특징을 학습하게 되고 일반화 성능도 좋아진다

하지만 여기서 주의해야 할 점이 하나가 있다
예를 들어 p=0.75로 설정했다면 평균적으로 보았을 때 뉴런의 25%만 동작했다는 것을 의미한다
다시 말해서 테스트 시에 각 뉴런이 훈련할 때보다 4배의 입력에 연결될 수 있다는 것이다
평균적인 것이긴 하지만 이를 보정하기 위해 훈련하는 동안 각 입력의 연결 가중치를 보존확률(1-p)로 나눠준다
여기서는 보존확률이 0.25가 되므로 각 입력의 연결 가중치에 4가 곱해지는 것이다
tf.keras.layers.Dropout(rate=0.2),
tf.keras.layers.Dense(100, activation="relu",
kernel_initializer="he_normal"),
구현할 때는 은닉 층 앞에 드롭아웃 층을 별도로 추가해주는 식으로 한다
참고로 일반적인 딥러닝 프레임워크에서는 보존확률로 나누는 보정 과정이 자동으로 이루어진다
몬테 카를로 드롭아웃
일반적인 드롭아웃은 훈련 시에 드롭아웃을 적용하고
테스트 시에는 드롭아웃을 비활성화하여 모든 뉴런을 사용한다
몬테 카를로 드롭아웃은 테스트 시에도 드롭아웃을 활성화 한 상태로 여러 예측을 진행하여
예측값의 평균을 최종 결과로 사용한다
이 방식은 드롭아웃 없이 예측한 하나의 결과보다 더 안정적인 경우가 많다
하지만 사실 몬테 카를로 드롭아웃의 주된 목적은 예측의 불확실성을 추정하는 것이다
여러 예측을 내놓고 그 예측들을 평균내어 최종 예측값으로 만든다
그리고 여러 예측들의 분산을 측정하여 모델이 해당 예측을 얼마나 신뢰하는지 판단하며
이를 예측의 불확실성을 추정한다고 말한다
불확실성 추정은 모델의 예측을 얼마나 신뢰할 수 있는지를 나타낸다
예를 들어 예측 확률은 높지만 여러 번의 예측 결과가 크게 차이나 분산이 크다면
모델이 해당 예측에 대해 확신이 부족할 수 있으므로 주의 깊게 해석해야한다
맥스-노름 규제
마지막으로 소개할 규제 기법은 맥스-노름 규제이다

이 방식은 뉴런에 대해 입력 가중치가 위의 식이 되도록 제한한다
∣∣w∣∣는 벡터의 크기를 의미하며, r은 맥스-노름 하이퍼파라미터이다
손실함수에 규제항을 따로 추가하지 않는 방식이며
매 학습 스텝마다 가중치 업데이터 끝난 직후, 가중치 크기가 r보다 작은지 판단하고
r을 넘었으면 비율(스케일)을 조정해서 축소한다
축소 방식은 아래와 같다

r이 작을수록 규제가 엄격해지고 과대적합 감소에 도움이 될 것이다
마치며
이번 글에서는 신경망에 규제를 하는 방법에 대해 알아보았다
개인적으로 드롭아웃 규제 방식을 사용했을 때 모델의 성능이 좋아진다는 사실에 조금 놀랐다
몬테-카를로 드롭아웃 방식도 모델을 여러번 예측을 돌려서 평균내어 예측으로 사용하고
분산을 계산하여 불확실성으로 추정한다는 아이디어 발상은 어떻게 하면 나올 수 있는 지 궁금했다
더더더 공부해도 부족하고 공부에는 끝이 없다는 생각이 다시 한 번 들었다
'AI > Deep Learning' 카테고리의 다른 글
| [DL] Transformer와 Attention 메커니즘 (0) | 2026.08.02 |
|---|---|
| [DL] 자연어처리 기초와 RNN (0) | 2026.07.30 |
| [DL] 학습률 스케줄링 (0) | 2026.07.13 |
| [DL] 고속 옵티마이저 (0) | 2026.07.12 |
| [DL] 배치 정규화(batch normalization) (0) | 2026.07.11 |
