λ₯λ¬λ λͺ¨λΈμ νμ΅μμΌ λ³΄λ©΄ νλ ¨ μ νλλ λ§€μ° λμλ°, μ€μ ν μ€νΈ λ°μ΄ν°μμ μ±λ₯μ΄ λ¨μ΄μ§λ κ²½νμ ν΄λ³΄μ ¨μ κ²λλ€. λ°λ‘ κ³Όμ ν©(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, λλ‘μμ, λ°°μΉ μ κ·ν, λ°μ΄ν° μ¦κ°, μ‘°κΈ° μ’ λ£ λ± λ€μν λ°©λ²μ μ κ·Ή νμ©ν΄λ³΄μΈμ!