λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
IT/AI, λ”₯λŸ¬λ‹

λ”₯λŸ¬λ‹ κ·œμ œν™” 완전정볡: 과적합 방지 기술 총정리

by πŸ”₯κΉ‘ λ‹€ κ³ ! 2025. 3. 25.

λ”₯λŸ¬λ‹ λͺ¨λΈμ„ ν•™μŠ΅μ‹œμΌœ 보면 ν›ˆλ ¨ μ •ν™•λ„λŠ” 맀우 높은데, μ‹€μ œ ν…ŒμŠ€νŠΈ 데이터에선 μ„±λŠ₯이 λ–¨μ–΄μ§€λŠ” κ²½ν—˜μ„ 해보셨을 κ²λ‹ˆλ‹€. λ°”λ‘œ 과적합(Overfitting) 문제 λ•Œλ¬ΈμΈλ°μš”. 이럴 λ•Œ κΌ­ ν•„μš”ν•œ 해결책이 λ°”λ‘œ ‘κ·œμ œν™”(Regularization)’μž…λ‹ˆλ‹€. κ·œμ œν™”λŠ” λͺ¨λΈμ΄ ν›ˆλ ¨ 데이터에 κ³Όλ„ν•˜κ²Œ λ§žμΆ°μ§€λŠ” 것을 λ°©μ§€ν•˜κ³ , μΌλ°˜ν™” μ„±λŠ₯을 λ†’μ΄λŠ” 핡심 κΈ°λ²•μž…λ‹ˆλ‹€. 이 κΈ€μ—μ„œλŠ” L1, L2 μ •κ·œν™”λΆ€ν„° λ“œλ‘­μ•„μ›ƒ, 배치 μ •κ·œν™”, 데이터 증강, μ‘°κΈ° μ’…λ£Œ λ“± λ‹€μ–‘ν•œ κ·œμ œν™” 기법을 μ‹€μ œ μ˜ˆμ‹œμ™€ ν•¨κ»˜ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.


1. λ”₯λŸ¬λ‹μ—μ„œ κ·œμ œν™”λž€ 무엇인가?

κ·œμ œν™”(Regularization)λŠ” λ”₯λŸ¬λ‹ λͺ¨λΈμ΄ ν›ˆλ ¨ 데이터에 λ„ˆλ¬΄ κ³Όλ„ν•˜κ²Œ μ μ‘ν•˜μ§€ μ•Šλ„λ‘ μ œν•œμ„ κ±°λŠ” λ°©λ²•μž…λ‹ˆλ‹€. 즉, λͺ¨λΈμ˜ λ³΅μž‘λ„λ₯Ό μ‘°μ ˆν•˜μ—¬ 과적합을 쀄이고, ν…ŒμŠ€νŠΈ λ°μ΄ν„°μ—μ„œμ˜ μ„±λŠ₯을 ν–₯μƒμ‹œν‚€λŠ” μ „λž΅μ΄μ£ .


2. 과적합과 κ·œμ œν™”μ˜ 관계

κ³Όμ ν•©μ΄λž€ ν›ˆλ ¨ 데이터에 λŒ€ν•œ μ„±λŠ₯은 μš°μˆ˜ν•˜μ§€λ§Œ, μ‹€μ œ μƒν™©μ΄λ‚˜ 검증 λ°μ΄ν„°μ—μ„œ μ„±λŠ₯이 λ–¨μ–΄μ§€λŠ” ν˜„μƒμž…λ‹ˆλ‹€. κ·œμ œν™”λŠ” 이 과적합 문제λ₯Ό ν•΄κ²°ν•˜λŠ” μ—¬λŸ¬ μ „λž΅ 쀑 ν•˜λ‚˜μ΄λ©°, λͺ¨λΈμ˜ μΌλ°˜ν™” μ„±λŠ₯을 λ†’μ΄λŠ” 데 ν•„μˆ˜μ μΈ κΈ°λ²•μž…λ‹ˆλ‹€.


3. λŒ€ν‘œμ μΈ κ·œμ œν™” 기법 6가지

(1) L1 μ •κ·œν™” (Lasso)

λͺ¨λΈμ˜ κ°€μ€‘μΉ˜ κ°’λ“€μ˜ μ ˆλŒ“κ°’ 합을 μ΅œμ†Œν™”ν•©λ‹ˆλ‹€. νŠΉμ§•: λΆˆν•„μš”ν•œ κ°€μ€‘μΉ˜λ₯Ό 0으둜 λ§Œλ“€μ–΄ feature selection 효과λ₯Ό κΈ°λŒ€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

(2) L2 μ •κ·œν™” (Ridge)

κ°€μ€‘μΉ˜μ˜ μ œκ³±ν•©μ„ μ΅œμ†Œν™”ν•©λ‹ˆλ‹€. λͺ¨λ“  κ°€μ€‘μΉ˜λ₯Ό μ‘°κΈˆμ”© 쀄이며, μ „λ°˜μ μΈ 과적합 완화에 νš¨κ³Όμ μž…λ‹ˆλ‹€.

(3) λ“œλ‘­μ•„μ›ƒ(Dropout)

ν›ˆλ ¨ 쀑 λ¬΄μž‘μœ„λ‘œ λ‰΄λŸ° 일뢀λ₯Ό μ œκ±°ν•˜μ—¬ 과적합을 λ°©μ§€ν•©λ‹ˆλ‹€. μ‹€μ œλ‘œλŠ” 앙상블 효과λ₯Ό λ‚΄λ©°, κ°€μž₯ 널리 μ‚¬μš©λ˜λŠ” κ·œμ œν™” 기법 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

(4) 배치 μ •κ·œν™”(Batch Normalization)

각 측의 μž…λ ₯값을 μ •κ·œν™”ν•˜μ—¬ ν•™μŠ΅ μ•ˆμ •μ„±κ³Ό 속도λ₯Ό λ†’μž…λ‹ˆλ‹€. 간접적인 κ·œμ œν™” νš¨κ³Όλ„ 있으며, κΉŠμ€ λ„€νŠΈμ›Œν¬μ—μ„œ 자주 ν™œμš©λ©λ‹ˆλ‹€.

(5) 데이터 증강(Data Augmentation)

ν•™μŠ΅ 데이터λ₯Ό νšŒμ „, 자λ₯΄κΈ°, 색상 λ³€ν˜• λ“±μœΌλ‘œ λ‹€μ–‘ν™”ν•˜μ—¬ ν›ˆλ ¨ 데이터 양을 λŠ˜λ¦¬λŠ” λ°©μ‹μž…λ‹ˆλ‹€. 과적합을 λ°©μ§€ν•˜λ©΄μ„œλ„ 데이터 μˆ˜μ§‘ λΉ„μš© 없이 μΌλ°˜ν™” μ„±λŠ₯을 높일 수 μžˆμŠ΅λ‹ˆλ‹€.

(6) μ‘°κΈ° μ’…λ£Œ(Early Stopping)

ν›ˆλ ¨ 도쀑 검증 μ„±λŠ₯이 더 이상 ν–₯μƒλ˜μ§€ μ•ŠμœΌλ©΄ ν•™μŠ΅μ„ μ€‘λ‹¨ν•©λ‹ˆλ‹€. 과적합이 μ‹œμž‘λ˜λŠ” μ‹œμ μ„ νƒμ§€ν•˜μ—¬ λΆˆν•„μš”ν•œ ν•™μŠ΅μ„ λ§‰λŠ” νš¨κ³Όκ°€ μžˆμŠ΅λ‹ˆλ‹€.


4. μ‹€μ œ 예제 μ½”λ“œλ‘œ μ΄ν•΄ν•˜λŠ” κ·œμ œν™”

λ‹€μŒμ€ TensorFlow/Kerasλ₯Ό ν™œμš©ν•œ L2 μ •κ·œν™” μ˜ˆμ‹œμž…λ‹ˆλ‹€.

from tensorflow.keras import layers, regularizers, models

model = models.Sequential([
    layers.Dense(64, activation='relu', 
                 kernel_regularizer=regularizers.l2(0.01), input_shape=(100,)),
    layers.Dropout(0.5),
    layers.Dense(10, activation='softmax')
])

μœ„ μ½”λ“œμ—μ„œλŠ” L2 μ •κ·œν™”μ™€ λ“œλ‘­μ•„μ›ƒμ„ ν•¨κ»˜ μ μš©ν•˜μ—¬ 과적합 방지λ₯Ό μ‹œλ„ν•œ μ˜ˆμ œμž…λ‹ˆλ‹€.


5. κ·œμ œν™” 기법 비ꡐ와 적용 팁

  • μ†Œκ·œλͺ¨ 데이터 → 데이터 증강 + μ‘°κΈ° μ’…λ£Œ
  • 고차원 λͺ¨λΈ → L1 μ •κ·œν™”λ‘œ feature selection
  • ν•™μŠ΅μ΄ λΆˆμ•ˆμ •ν•  λ•Œ → 배치 μ •κ·œν™” μΆ”κ°€
  • 신경망 ν•™μŠ΅μ˜ κΈ°λ³Έ → λ“œλ‘­μ•„μ›ƒμ€ 거의 ν•„μˆ˜

6. 마무리 μš”μ•½

λ”₯λŸ¬λ‹μ—μ„œ κ·œμ œν™”λŠ” 과적합을 λ°©μ§€ν•˜κ³  λͺ¨λΈμ˜ μΌλ°˜ν™” λŠ₯λ ₯을 λ†’μ΄λŠ” 데 핡심적인 역할을 ν•©λ‹ˆλ‹€. 상황에 따라 μ μ ˆν•œ κ·œμ œν™” 기법을 선택해 μ‚¬μš©ν•œλ‹€λ©΄, 더 μ•ˆμ •μ μ΄κ³  μ„±λŠ₯ 높은 λͺ¨λΈμ„ λ§Œλ“€ 수 μžˆμŠ΅λ‹ˆλ‹€. L1, L2, λ“œλ‘­μ•„μ›ƒ, 배치 μ •κ·œν™”, 데이터 증강, μ‘°κΈ° μ’…λ£Œ λ“± λ‹€μ–‘ν•œ 방법을 적극 ν™œμš©ν•΄λ³΄μ„Έμš”!