250x250
Link
λ‚˜μ˜ GitHub Contribution κ·Έλž˜ν”„
Loading data ...
Notice
Recent Posts
Recent Comments
관리 메뉴

Data Science LAB

[Deep Learning] 배치 μ •κ·œν™” (Batch Normalization, BN) λ³Έλ¬Έ

🧠 Deep Learning

[Deep Learning] 배치 μ •κ·œν™” (Batch Normalization, BN)

γ…… γ…œ γ…” γ…‡ 2022. 12. 9. 23:03
728x90
기쑴의 Gradient Vanishing, Exploding 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄μ„œλŠ” μƒˆλ‘œμš΄ ν™œμ„±ν™” ν•¨μˆ˜λ₯Ό μ°Ύκ±°λ‚˜ κ°€μ€‘μΉ˜λ₯Ό μ΄ˆκΈ°ν™”ν•˜λŠ” 방법을 μ‚¬μš©
-> ν›ˆλ ¨ν•˜λŠ” λ™μ•ˆ λ‹€μ‹œ λ°œμƒν•˜μ§€ μ•ŠμœΌλ¦¬λž€ 보μž₯ ❌
이에 2015λ…„ μ„Έλ₯΄κ²Œμ΄ μ΄μ˜€νŽ˜μ™€ μΉ˜λ¦¬μŠˆν‹°μ–Έ μ„Έκ²Œμ§€κ°€ λ°°μΉ˜μ •κ·œν™” 기법 μ œμ•ˆ

 

- Batch Normalization

- Batch : 신경망 ν•™μŠ΅ μ‹œ 보톡 전체 데이터λ₯Ό μž‘μ€ λ‹¨μœ„λ‘œ λΆ„ν• ν•˜μ—¬ ν•™μŠ΅μ„ μ§„ν–‰ν•˜λŠ”λ°, 이 λ•Œ μ‚¬μš©λ˜λŠ” λ‹¨μœ„

- Batch Normalization : 배치 λ‹¨μœ„λ‘œ μ •κ·œν™”ν•¨

  • 각 μΈ΅μ—μ„œ ν™œμ„±ν™” ν•¨μˆ˜λ₯Ό ν†΅κ³Όν•˜κΈ° μ „μ΄λ‚˜ 후에 λͺ¨λΈμ— 연산을 ν•˜λ‚˜ μΆ”κ°€
  • 이 연산은 λ‹¨μˆœν•˜κ²Œ μž…λ ₯을 원점에 λ§žμΆ”κ³  μ •κ·œν™”ν•œ λ‹€μŒ, 각 μΈ΅μ—μ„œ 두 개의 μƒˆλ‘œμš΄ νŒŒλΌλ―Έν„°λ‘œ κ²°κ΄κ°’μ˜ μŠ€μΌ€μΌμ„ μ‘°μ •ν•˜κ³  μ΄λ™μ‹œν‚΄
  • μ‹ κ²½λ§μ˜ 첫 번째 측으둜 배치 μ •κ·œν™”λ₯Ό μΆ”κ°€ν•˜λ©΄ ν›ˆλ ¨ μ„ΈνŠΈλ₯Ό ν‘œμ€€ν™”ν•  ν•„μš” μ—†μŒ
  • ν›ˆλ ¨ν•˜λŠ” λ™μ•ˆ 배치 μ •κ·œν™”λŠ” μž…λ ₯을 μ •κ·œν™”ν•œ λ‹€μŒ μŠ€μΌ€μΌμ„ μ‘°μ •ν•˜κ³  이동 μ‹œν‚΄

 

즉 μž…λ ₯ 데이터λ₯Ό 원점에 λ§žμΆ”κ³  μ •κ·œν™”ν•˜κΈ° μœ„ν•΄μ„œλŠ” 평균과 ν‘œμ€€νŽΈμ°¨λ₯Ό μΆ”μ •ν•΄μ•Ό 함

 

 

 

 

 

 

 

배치 μ •κ·œν™”μ˜ μž₯점

1. ν•™μŠ΅ 속도λ₯Ό λΉ λ₯΄κ²Œ ν•  수 있음
2. κ°€μ€‘μΉ˜ μ΄ˆκΈ°ν™”μ— λŒ€ν•œ 민감도λ₯Ό κ°μ†Œ μ‹œν‚΄ (hyper parameter의 섀정이 μ’€ 더 μžμœ λ‘œμ›Œ 짐)
3. λͺ¨λΈμ˜ μΌλ°˜ν™”(regularization) 효과

 

 

 

 

 

μΌ€λΌμŠ€λ‘œ κ΅¬ν˜„ν•œ 배치 μ •κ·œν™” μ˜ˆμ‹œ

model = tf.keras.Sequential([
    keras.layers.Flatten(input_shape=[28,28]),
    keras.layers.BatchNormalization(),
    keras.layers.Dense(300, kernel_initializer='he_normal', use_bias=False),
    keras.layers.BatchNormalization(),
    keras.layers.Activation('relu'),
    keras.layers.Dense(100, kernel_initializer='he_normal', use_bias=False),
    keras.layers.BatchNormalization(),
    keras.layers.Activation('relu'),
    keras.layers.Dense(10,activation='softmax')
])
728x90
Comments