(์ค๋ช ์ถ๊ฐ) ์จ์ดํธ ์ด๊ธฐํ (Weight Initialization)
์๋ณธ ๊ฒ์๊ธ: https://velog.io/@euisuk-chung/์ค๋ช ์ถ๊ฐ-์จ์ดํธ-์ด๊ธฐํ-Weight-Initialization
-
์จ์ดํธ ์ด๊ธฐํ๋?
๋ฅ๋ฌ๋์์ ์จ์ดํธ ์ด๊ธฐํ(Weight Initialization)๋ ์ ๊ฒฝ๋ง์ ๊ฐ์ค์น๋ฅผ ํ์ต ์ ์ ์ค์ ํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๊ธฐํ ๋ฐฉ์์ ๋ฐ๋ผ ๋ชจ๋ธ์ ํ์ต ์๋, ์ฑ๋ฅ, ์์ ์ฑ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
- ์ ์ ํ ์ด๊ธฐํ ๋ฐฉ์์ ํ๋ จ์ ๊ฐ์ํํ๊ณ , ์ต์ ํ ๊ณผ์ ์์ ์์ ์ ์ธ ํ์ต์ ๋ณด์ฅํ๋ฉฐ, ๊ทธ๋๋์ธํธ ์์ค ๋ฐ ํญ๋ฐ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ์ญํ ์ ํฉ๋๋ค.
ํด๋น ๊ด๋ จ ํํํ์์ ๊ฐ์๊ฐ ๊ถ๊ธํ๋ค๋ฉด?
์๋๋ ์ ๊ฐ์ ๋ด์ฉ๊ณผ ์ ๊ฐ ์ถ๊ฐ์ ์ผ๋ก ์กฐ์ฌ ๋ฐ ์ ๋ฆฌํ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์์ฑํ ๋ด์ฉ์ ๋๋ค.
์จ์ดํธ ์ด๊ธฐํ์ ๋ชฉํ
์ ๊ฒฝ๋ง์์ ๋ด๋ฐ jjj์ ์ถ๋ ฅ(ํ์ฑํ ๊ฐ) zjz_jzjโ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
zj=โi=1Ninwijxi+bjz_j = \sum_{i=1}^{N_{in}} w_{ij} x_i + b_jzjโ=i=1โNinโโwijโxiโ+bjโ
์ฌ๊ธฐ์, ๊ฐ๊ฐ xxx, www, bbb๋ ์๋๋ฅผ ์๋ฏธํฉ๋๋ค.
- xix_ixiโ๋ ์ด์ ์ธต์ ์ถ๋ ฅ(๋๋ ์ ๋ ฅ ๋ฐ์ดํฐ)
- wijw_{ij}wijโ๋ ๊ฐ์ค์น
- bjb_jbjโ๋ ํธํฅ(bias)
ํ์ฑํ ํจ์ fff๋ฅผ ์ ์ฉํ ์ถ๋ ฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
aj=ฯ(zj)a_j = \sigma(z_j)ajโ=ฯ(zjโ)
- zjz_jzjโ๋ ์ด์ ์ธต์ ๋ด๋ฐ ์ถ๋ ฅ์ ๊ฐ์ค์น์ ๊ณฑํ ํ ํธํฅ์ ๋ํ ๊ฐ (=์ ํ ๋ณํ ๊ฒฐ๊ณผ)
- ฯฯฯ๋ ์๊ทธ๋ชจ์ด๋, ๋๋ ๋ค๋ฅธ ํ์ฑํ ํจ์
์ฐ๋ฆฌ๋ ๊ฐ ์ธต์์์ ์ถ๋ ฅ ๋ถ์ฐ์ ์ผ์ ํ๊ฒ ์ ์งํ๋ ์จ์ดํธ(๊ฐ์ค์น) ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ฐพ๊ณ ์ ํฉ๋๋ค.
์๋ ์์ฑํฐ์์ ์ ์ด๋ฌํ ์จ์ดํธ(๊ฐ์ค์น)๊ฐ ์ค์ํ์ง ์ดํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์ ์จ์ดํธ ์ด๊ธฐํ๊ฐ ์ค์ํ๊ฐ?
- ๊ทธ๋๋์ธํธ ์์ค ๋ฐ ํญ๋ฐ ๋ฌธ์ ๋ฐฉ์ง
- ๋ถ์ ์ ํ ์ด๊ธฐํ๋ ์ญ์ ํ ๊ณผ์ ์์ ๊ทธ๋๋์ธํธ๊ฐ 0์ผ๋ก ์๋ ดํ๊ฑฐ๋, ๋๋ฌด ์ปค์ง๋ ๋ฌธ์ ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
- ํจ์จ์ ์ธ ํ์ต ๊ฐ๋ฅ
- ์ด๊ธฐ๊ฐ์ด ์ ์ ํ๋ฉด ํ์ต์ด ๋น ๋ฅด๊ฒ ์งํ๋๋ฉฐ, ์ต์ ์ ์์ค๊ฐ์ ์ฐพ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
- ํ์ฑํ ํจ์์ ํน์ฑ ์ ์ง
- ๊ฐ ์ธต์ ์ถ๋ ฅ๊ฐ์ด ํ์ฑํ ํจ์์ ์ ์ ํ ๋ฒ์๋ฅผ ์ ์งํ ์ ์๋๋ก ๋์์ค๋๋ค.
- ์ด๊ธฐ ์๋ ด ์๋ ํฅ์
- ์ ์ ํ ์ด๊ธฐํ๋ ํ์ต ์ด๊ธฐ์ ์์ค ํจ์์ ๊ฐ์๋ฅผ ์ด์งํ์ฌ ๋ ๋น ๋ฅด๊ฒ ์๋ ดํ ์ ์๋๋ก ํฉ๋๋ค.
-
๋คํธ์ํฌ ์ด๊ธฐํ๋?
๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๋คํธ์ํฌ ์ด๊ธฐํ(Network Initialization)๋ ๋ชจ๋ธ ๋ด ๋ชจ๋ ๋ ์ด์ด์ ๊ฐ์ค์น๋ฅผ ์ด๊ธฐํํ๋ ๊ณผ์ ์ ๋๋ค. ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ ์คํ๊ฒ ์ ํํ์ง ์์ผ๋ฉด ํ์ต์ด ๋นํจ์จ์ ์ผ๋ก ์งํ๋ ์ ์์ต๋๋ค.
- MLP (Multi-Layer Perceptron): ๋ชจ๋ Fully Connected Layer (์ ํ์ธต) ์ ๊ฐ์ค์น๋ฅผ ์ด๊ธฐํ
- CNN (Convolutional Neural Networks): ํฉ์ฑ๊ณฑ ํํฐ(Convolution Kernel) ์ ๋ถ ์ด๊ธฐํ
- RNN (Recurrent Neural Networks): ์ํ์ธต(Recurrent Layers) ๋ฐ ์ฐ๊ฒฐ ๊ฐ์ค์น ์ด๊ธฐํ
- Transformer ๊ณ์ด ๋ชจ๋ธ: ๋ชจ๋ Self-Attention Layer์ FFN Layer ์ด๊ธฐํ
๋ฐ๋ผ์, ๋คํธ์ํฌ ์ด๊ธฐํ๋ ๋จ์ํ ์ผ๋ถ ๊ฐ์ค์น๋ฅผ ๋๋คํ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์๋๋ผ, ๋ชจ๋ ๋ ์ด์ด์ ๊ฐ์ค์น๋ฅผ ํน์ ๋ฐฉ์์ผ๋ก ์ด๊ธฐํํ๋ ๊ณผ์ ์ ์๋ฏธํฉ๋๋ค. ์ผ๋ถ ์ด๊ธฐํ ๊ธฐ๋ฒ์ ํน์ ํ์ฑํ ํจ์์ ์กฐํฉํ์ฌ ์ฌ์ฉํด์ผ ์ต์ ์ ์ฑ๋ฅ์ ๋ฐํํ ์ ์์ต๋๋ค.
๐ป (์ฐธ๊ณ ) ๋ถ์ฐ ์ฆ๊ฐ์ ์๊ทธ๋ชจ์ด๋์ ํฌํ ํ์
์ ๊ฒฝ๋ง์์ ๊ฐ์ค์น ์ด๊ธฐํ๊ฐ ์ค์ํ ์ด์ ์ค ํ๋๋ ํ์ฑํ ํจ์์ ํน์ฑ๊ณผ ํ์ต ์์ ์ฑ ๋๋ฌธ์ ๋๋ค. ํนํ ์๊ทธ๋ชจ์ด๋(Sigmoid)์ ๊ฐ์ ํ์ฑํ ํจ์๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๊ฐ์ค์น ์ด๊ธฐํ๊ฐ ์ ์ ํ์ง ์์ผ๋ฉด ๋ถ์ฐ์ด ์ปค์ ธ ํฌํ(Saturation) ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
1. ์๊ทธ๋ชจ์ด๋ ํจ์์ ํน์ฑ
์๊ทธ๋ชจ์ด๋ ํจ์๋ ์ ๋ ฅ๊ฐ zzz์ ๋ํด ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
ฯ(z)=11+eโz\sigma(z) = \frac{1}{1 + e^{-z}}ฯ(z)=1+eโz1โ
์ด ํจ์์ ์ค์ํ ํน์ฑ์:
- zzz๊ฐ ๋งค์ฐ ํฌ๋ฉด ฯ(z)โ1\sigma(z) \approx 1ฯ(z)โ1
- zzz๊ฐ ๋งค์ฐ ์์ผ๋ฉด ฯ(z)โ0\sigma(z) \approx 0ฯ(z)โ0
- z=0z = 0z=0์ผ ๋ ฯ(0)=0.5\sigma(0) = 0.5ฯ(0)=0.5
์ฆ, ์ ๋ ฅ๊ฐ์ด ๋๋ฌด ํฌ๊ฑฐ๋ ์์์ง๋ฉด ์๊ทธ๋ชจ์ด๋์ ์ถ๋ ฅ์ด 0 ๋๋ 1๋ก ์๋ ดํ๋ฉด์ ๋ฏธ๋ถ๊ฐ์ด 0์ ๊ฐ๊น์์ง๋ ํฌํ ํ์์ด ๋ฐ์ํฉ๋๋ค.
2. ๋ถ์ฐ ์ฆ๊ฐ์ ํฌํ ํ์
์ถ๋ ฅ ๋ด๋ฐ์ ํ์ฑํ ๊ฐ zjz_jzjโ๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค.
zj=โi=1Ninwijxi+bjz_j = \sum_{i=1}^{N_{in}} w_{ij} x_i + b_jzjโ=i=1โNinโโwijโxiโ+bjโ
์ฌ๊ธฐ์ xix_ixiโ๋ ์ ๋ ฅ๊ฐ์ด๊ณ , wijw_{ij}wijโ๋ ๊ฐ์ค์น์ ๋๋ค. ๋ง์ฝ ์ ๋ ฅ๊ฐ๊ณผ ๊ฐ์ค์น๊ฐ ๋ ๋ฆฝ์ ์ธ ์ ๊ท ๋ถํฌ๋ฅผ ๋ฐ๋ฅธ๋ค๋ฉด, ์ค์๊ทนํ์ ๋ฆฌ(CLT)์ ์ํด zjz_jzjโ๋ ์ ๊ท ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๊ฒ ๋ฉ๋๋ค.
zjโผN(0,Ninโ ฯx2โ ฯw2)z_j \sim \mathcal{N}(0, N_{in} \cdot \sigma_x^2 \cdot \sigma_w^2)zjโโผN(0,Ninโโ ฯx2โโ ฯw2โ)
์ฆ, ์ ๋ ฅ ๊ฐ์ NinN_{in}Ninโ์ด ์ปค์ง์๋ก zjz_jzjโ์ ๋ถ์ฐ์ด ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค.
- ์ด ๊ฒฝ์ฐ, zjz_jzjโ ๊ฐ์ด ๊ทน๋จ์ ์ผ๋ก ์ปค์ง ํ๋ฅ ์ด ๋์์ง๊ณ , ์๊ทธ๋ชจ์ด๋ ์ถ๋ ฅ๊ฐ์ด 0 ๋๋ 1๋ก ์๋ ดํ๋ ํฌํ ์์ญ์ ๋ค์ด๊ฐ๊ฒ ๋ฉ๋๋ค.
3. ํฌํ ํ์์ด ๋ฐ์ํ๋ฉด?
-
Vanishing Gradient(๊ธฐ์ธ๊ธฐ ์์ค)
- ์๊ทธ๋ชจ์ด๋ ํจ์์ ๋ฏธ๋ถ์ ฯโฒ(z)=ฯ(z)(1โฯ(z))\sigmaโ(z) = \sigma(z) (1 - \sigma(z))ฯโฒ(z)=ฯ(z)(1โฯ(z))์ด๋ฏ๋ก, ฯ(z)โ0\sigma(z) \approx 0ฯ(z)โ0 ๋๋ ฯ(z)โ1\sigma(z) \approx 1ฯ(z)โ1์ผ ๋ ๋ฏธ๋ถ๊ฐ์ด 0์ ๊ฐ๊น์์ง๋๋ค.
- ์ด๋ก ์ธํด ์ญ์ ํ(Backpropagation) ๊ณผ์ ์์ ๊ธฐ์ธ๊ธฐ๊ฐ ์์ค๋์ด ์ ๊ฒฝ๋ง ํ์ต์ด ์ด๋ ค์์ง๋๋ค.
-
ํ์ต ์๋ ์ ํ
- ๋๋ถ๋ถ์ ๋ด๋ฐ์ด 0 ๋๋ 1๋ก ๊ณ ์ ๋๋ฉด์, ๋ด๋ฐ์ด ํ์ฑํ๋์ง ์๋ ์ฃฝ์ ๋ด๋ฐ ๋ฌธ์ (Dead Neuron Problem)๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
4. ํด๊ฒฐ ๋ฐฉ๋ฒ: ์ ์ ํ ๊ฐ์ค์น ์ด๊ธฐํ ๊ธฐ๋ฒ
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด, ๊ฐ์ค์น์ ์ด๊ธฐ ๋ถ์ฐ์ ์กฐ์ ํ๋ ๋ค์ํ ์ด๊ธฐํ ๊ธฐ๋ฒ์ด ์ ์๋์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ฉด ๋ถ์ฐ์ด ๋๋ฌด ์ปค์ง์ง ์๋๋ก ์กฐ์ ํ์ฌ ํฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- LeCun ์ด๊ธฐํ (wโผN(0,1Nin)w \sim N(0, \frac{1}{N_{in}})wโผN(0,Ninโ1โ))
- ์ฃผ๋ก Sigmoid, Tanh ๊ฐ์ ๋น์ ํ ํ์ฑํ ํจ์์ ์ฌ์ฉ๋จ.
- Xavier (Glorot) ์ด๊ธฐํ (wโผN(0,2Nin+Nout)w \sim N(0, \frac{2}{N_{in} + N_{out}})wโผN(0,Ninโ+Noutโ2โ))
- ์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ๊ฐ์๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฐ์ค์น๋ฅผ ์กฐ์ ํ์ฌ ์์ ์ ์ธ ํ์ต์ ์ ๋.
- He (Kaiming) ์ด๊ธฐํ (wโผN(0,2Nin)w \sim N(0, \frac{2}{N_{in}})wโผN(0,Ninโ2โ))
- ReLU ๊ณ์ด ํ์ฑํ ํจ์์ ์ ํฉํ๋ฉฐ, ์ ๋ ฅ ๊ฐ์๋ฅผ ๊ณ ๋ คํ์ฌ ๋ถ์ฐ์ ์กฐ์ .
๐ ์ ๊ฒฝ๋ง ํ์ต์ ์์ ์ฑ์ ์ํด ์ ์ ํ ๊ฐ์ค์น ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์๋ชป๋ ์ด๊ธฐํ๋ ๋ถ์ฐ ์ฆ๊ฐ(Variance Explosion) ๋๋ ๊ธฐ์ธ๊ธฐ ์์ค(Vanishing Gradient) ๋ฌธ์ ๋ฅผ ์ผ์ผํฌ ์ ์์ต๋๋ค. ๋ฐ๋ผ์, ๊ฐ์ค์น๋ฅผ ์ ์ ํ ์ด๊ธฐํํ์ฌ ์์ ํ(Forward Propagation)์ ์ญ์ ํ(Backward Propagation)์์ ์ ํธ์ ๋ถ์ฐ์ ์ผ์ ํ๊ฒ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
์ด๋ ์๋ 3. ์ฃผ์ ์จ์ดํธ ์ด๊ธฐํ ๋ฐฉ๋ฒ์์ ์์ธํ๊ฒ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
-
์ฃผ์ ์จ์ดํธ ์ด๊ธฐํ ๋ฐฉ๋ฒ
3.0 PyTorch ๋ฐ Keras ์ด๊ธฐํ ๋ชจ๋
- PyTorch์
torch.nn.init
๊ณผ Keras์tensorflow.keras.initializers
๋ชจ๋์ ๋ค์ํ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ํ์ฉํ๋ฉด ์ ๊ฒฝ๋ง์ ๊ฐ ์ธต์ ๋ง๋ ์ ์ ํ ์ด๊ธฐํ๋ฅผ ์ฝ๊ฒ ์ ์ฉํ ์ ์์ต๋๋ค.
๐ PyTorch ์ด๊ธฐํ ๋ชจ๋
1
2
3
4
5
6
7
8
9
import torch.nn.init as init
# ๊ธฐ๋ณธ์ ์ธ ์ด๊ธฐํ ๋ฐฉ๋ฒ
init.uniform_(tensor) # ๊ท ๋ฑ ๋ถํฌ ์ด๊ธฐํ
init.normal_(tensor) # ์ ๊ท ๋ถํฌ ์ด๊ธฐํ
init.xavier_uniform_(tensor) # Xavier ๊ท ๋ฑ ์ด๊ธฐํ
init.kaiming_uniform_(tensor, nonlinearity='relu') # He ์ด๊ธฐํ
init.orthogonal_(tensor) # ์ง๊ต ์ด๊ธฐํ
init.constant_(tensor, 0) # ์์ ์ด๊ธฐํ
๐ Keras ์ด๊ธฐํ ๋ชจ๋
1
2
3
4
5
from tensorflow.keras.initializers import *
initializer = GlorotUniform() # Xavier ์ด๊ธฐํ
initializer = HeNormal() # He ์ด๊ธฐํ
initializer = Orthogonal(gain=1.0) # ์ง๊ต ์ด๊ธฐํ
3.1 LeCun ์ด๊ธฐํ
- ์ ์์: Yann LeCun (1998)
- ์ฌ์ฉ ํ์ฑํ ํจ์: Sigmoid, Tanh, SELU
- ์ด๊ธฐํ ๊ณต์:wโผN(0,1Nin)w \sim N(0, \frac{1}{N_{in}})wโผN(0,Ninโ1โ)
- NinN_{in}Ninโ: ์ ๋ ฅ ๋ ธ๋ ์
LeCun ์ด๊ธฐํ๋ sigmoid ๋ฐ tanh ํ์ฑํ ํจ์์ ์ ํฉํ๋๋ก ์ค๊ณ๋์์ต๋๋ค.
(์ฐธ๊ณ ) sigmoid ๋ฐ tanh ํ์ฑํ ํจ์
Sigmoid ํจ์
ฯ(z)=11+eโz\sigma(z) = \frac{1}{1 + e^{-z}}ฯ(z)=1+eโz1โ
- ์ถ๋ ฅ ๋ฒ์: (0, 1)
- ๊ธฐ์ธ๊ธฐ(๋ฏธ๋ถ): ฯโฒ(z)=ฯ(z)(1โฯ(z))\sigmaโ(z) = \sigma(z) (1 - \sigma(z))ฯโฒ(z)=ฯ(z)(1โฯ(z))
- ๋ถ์:
- zzz ๊ฐ์ด ํฌ๋ฉด ฯ(z)โ1\sigma(z) \approx 1ฯ(z)โ1, zzz ๊ฐ์ด ์์ผ๋ฉด ฯ(z)โ0\sigma(z) \approx 0ฯ(z)โ0์ด ๋์ด ์ถ๋ ฅ์ด ๊ฑฐ์ ๋ณํ์ง ์์ (ํฌํ).
- ํฌํ๋ ์์ญ์์๋ ๊ธฐ์ธ๊ธฐ ฯโฒ(z)\sigmaโ(z)ฯโฒ(z)๊ฐ ๊ฑฐ์ 0์ด ๋์ด ๊ธฐ์ธ๊ธฐ ์์ค(Vanishing Gradient) ๋ฌธ์ ๊ฐ ๋ฐ์.
Tanh ํจ์
tanhโก(z)=ezโeโzez+eโz\tanh(z) = \frac{e^z - e^{-z}}{e^z + e^{-z}}tanh(z)=ez+eโzezโeโzโ
- ์ถ๋ ฅ ๋ฒ์: (-1, 1)
- ๊ธฐ์ธ๊ธฐ(๋ฏธ๋ถ): tanhโกโฒ(z)=1โtanhโก2(z)\tanhโ(z) = 1 - \tanh^2(z)tanhโฒ(z)=1โtanh2(z)
- ๋ถ์:
-
โฃzโฃ z โฃzโฃ ๊ฐ์ด ํฌ๋ฉด tanhโก(z)โยฑ1\tanh(z) \approx \pm1tanh(z)โยฑ1๋ก ์๋ ดํ์ฌ ๊ธฐ์ธ๊ธฐ tanhโกโฒ(z)โ0\tanhโ(z) \to 0tanhโฒ(z)โ0. - ์ญ์ ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ๊ฐ ๋ฐ์.
-
๐ฌ ์์์ ์ดํด๋ณผ ์ ์๋ค์ํผ, Sigmoid๋ ์ค์์์ ์ต๋ ๊ธฐ์ธ๊ธฐ๊ฐ 0.25๋ก ์ ํ๋๋ฉฐ, Tanh๋ z=0z = 0z=0์์ 1์ด์ง๋ง โฃzโฃ z โฃzโฃ๊ฐ ์ฆ๊ฐํ ์๋ก ๊ธฐ์ธ๊ธฐ๊ฐ 0์ ์๋ ดํ๊ธฐ ๋๋ฌธ์,
- ์ด๊ธฐ ๊ฐ์ค์น๊ฐ ๋๋ฌด ํฌ๋ฉด ๋ถ์ฐ ์ฆ๊ฐ๋ก ์ธํด ํ์ฑํ ๊ฐ์ด ํฌํ ์ํ์ ๋๋ฌํ์ฌ ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ฐ๋๋ก, ์ด๊ธฐ ๊ฐ์ค์น๊ฐ ๋๋ฌด ์์ผ๋ฉด ๋ชจ๋ ๋ด๋ฐ์ ์ถ๋ ฅ์ด ๊ฑฐ์ 0 ๋๋ -1 ๊ทผ์ฒ๋ก ๋ชฐ๋ฆฌ๋ฉด์ ๊ธฐ์ธ๊ธฐ ์ญ์ ์์์ ธ ํ์ต์ด ๋นํจ์จ์ ์ผ๋ก ์ด๋ฃจ์ด์ง ์ ์์ต๋๋ค.
zjz_jzjโ์ ๋ถ์ฐ ์ฆ๊ฐ
-
์ ๊ฒฝ๋ง์์ ๋ด๋ฐ์ ํ์ฑํ ๊ฐ zjz_jzjโ๋ ๋ค์๊ณผ ๊ฐ์ด ์ ์๋ฉ๋๋ค.
zj=โi=1Ninwijxi+bjz_j = \sum_{i=1}^{N_{in}} w_{ij} x_i + b_jzjโ=i=1โNinโโwijโxiโ+bjโ
-
์ฌ๊ธฐ์ ๊ฐ์ค์น wijw_{ij}wijโ๊ฐ ํฐ ๋ถ์ฐ์ ๊ฐ์ง๋ฉด, zjz_jzjโ์ ๋ถ์ฐ๋ ์ฆ๊ฐํฉ๋๋ค.
- ๋ง์ฝ wijโผN(0,ฯw2)w_{ij} \sim \mathcal{N}(0, \sigma_w^2)wijโโผN(0,ฯw2โ)์ด๋ผ๋ฉด:Var[zj]=Ninโ Var[w]โ Var[x]\text{Var}[z_j] = N_{in} \cdot \text{Var}[w] \cdot \text{Var}[x]Var[zjโ]=Ninโโ Var[w]โ Var[x]
-
์ฆ, ๊ฐ์ค์น์ ๋ถ์ฐ์ด ํด์๋ก zjz_jzjโ์ ๋ถ์ฐ๋ ์ปค์ง๊ฒ ๋จ.
๐ก LeCun ์ด๊ธฐํ๊ฐ ์ด๋ฅผ ์ด๋ป๊ฒ ๋ฐฉ์งํ๋๊ฐ?
- LeCun ์ด๊ธฐํ๋ ๊ฐ์ค์น์ ๋ถ์ฐ์ ์๊ฒ ์ค์ ํ์ฌ zjz_jzjโ๊ฐ ํฌํ ์์ญ์ ๋๋ฌํ์ง ์๋๋ก ํฉ๋๋ค.
-
LeCun ์ด๊ธฐํ๋ ์์ ๋ถ์ฐ( 1Nin\frac{1}{N_{in}}Ninโ1โ )์ ์ฌ์ฉํ์ฌ ์๊ทธ๋ชจ์ด๋ ๋ฐ Tanh์ ํฌํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํฉ๋๋ค.
- LeCun ์ด๊ธฐํ๋ฅผ ์ฌ์ฉํ๋ฉด โ zzz ๊ฐ์ด 0 ๊ทผ์ฒ์ ๋จธ๋ฌด๋ฆ โ ํ์ฑํ ํจ์๊ฐ ๊ธฐ์ธ๊ธฐ๋ฅผ ์ ์งํ์ฌ ์์ ์ ์ผ๋ก ํ์ต๋จ
-
LeCun ์ด๊ธฐํ (2์ข ๋ฅ)
- ์ ๊ท๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ:wijโผN(0,1Nin)w_{ij} \sim \mathcal{N}(0, \frac{1}{N_{in}})wijโโผN(0,Ninโ1โ)
- ๊ท ๋ฑ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ:wijโผU(โ1Nin,1Nin)w_{ij} \sim \mathcal{U} \left(-\frac{1}{\sqrt{N_{in}}}, \frac{1}{\sqrt{N_{in}}} \right)wijโโผU(โNinโโ1โ,Ninโโ1โ)
์๋๋ ํ์ดํ ์น์ ์ผ๋ผ์ค์ ์ ์ฉํ ์์ ์ฝ๋์ ๋๋ค.
๐ ์ ์ฉ ์์ (PyTorch)
1
2
3
4
5
6
7
8
9
import torch.nn as nn
import torch.nn.init as init
def init_weights(m):
if isinstance(m, nn.Linear):
init.normal_(m.weight, mean=0, std=1 / m.in_features)
init.zeros_(m.bias)
model.apply(init_weights)
๐ ์ ์ฉ ์์ (Keras)
1
2
3
4
from tensorflow.keras.layers import Dense
from tensorflow.keras.initializers import LecunNormal
layer = Dense(64, activation='selu', kernel_initializer=LecunNormal())
3.2 Xavier (Glorot) ์ด๊ธฐํ
- ์ ์์: Xavier Glorot & Yoshua Bengio (2010)
- ์ฌ์ฉ ํ์ฑํ ํจ์: Sigmoid, Tanh
- ์ด๊ธฐํ ๊ณต์:wโผN(0,2Nin+Nout)w \sim N(0, \frac{2}{N_{in} + N_{out}})wโผN(0,Ninโ+Noutโ2โ)
- NinN_{in}Ninโ: ์ ๋ ฅ ๋ ธ๋ ์
- NoutN_{out}Noutโ: ์ถ๋ ฅ ๋ ธ๋ ์
(์ฐธ๊ณ ) sigmoid ๋ฐ tanh ํ์ฑํ ํจ์
-
LeCun ์ด๊ธฐํ๋ ์์ ํ์์ zzz ๊ฐ์ด ๋๋ฌด ์ปค์ง๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ฐ์ค์น ๋ถ์ฐ์ 1Nin\frac{1}{N_{in}}Ninโ1โ์ผ๋ก ์ค์ .
- ๊ทธ๋ฌ๋ ์ญ์ ํ ์ ๊ธฐ์ธ๊ธฐ(gradient) ๋ถ์ฐ๊น์ง ๊ณ ๋ คํ์ง ์์.
-
Xavier ์ด๊ธฐํ๋ ์ญ์ ํ ๊ณผ์ ์์๋ ๊ธฐ์ธ๊ธฐ์ ๋ถ์ฐ์ด ์ผ์ ํ๊ฒ ์ ์ง๋๋๋ก ๊ฐ์ ํ์์ผ๋ฉฐ,
- ์ถ๋ ฅ ๋ ธ๋ ๊ฐ์ NoutN_{out}Noutโ๊น์ง ๊ณ ๋ คํ์ฌ ๋ถ์ฐ์ ์ค์.
- ์ฆ, ์ ํธ๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ์ ํ๋ ๋ ์์ค๋์ง ์๊ณ ์์ ์ ์ผ๋ก ์ ์ง๋๋๋ก ์ค๊ณ๋จ.
๐ก ์ฆ, Xavier ์ด๊ธฐํ๋ LeCun ์ด๊ธฐํ์ ๊ฐ๋ ์ ํ์ฅํ์ฌ, ์์ ํ๋ฟ๋ง ์๋๋ผ ์ญ์ ํ์์๋ ๋ถ์ฐ์ด ์ผ์ ํ๊ฒ ์ ์ง๋๋๋ก ๊ฐ์ ํ ๋ฐฉ์์ ๋๋ค.
์๋๋ ํ์ดํ ์น์ ์ผ๋ผ์ค์ ์ ์ฉํ ์์ ์ฝ๋์ ๋๋ค.
๐ ์ ์ฉ ์์ (PyTorch)
1
2
3
4
5
6
def init_weights(m):
if isinstance(m, nn.Linear):
init.xavier_uniform_(m.weight)
init.zeros_(m.bias)
model.apply(init_weights)
๐ ์ ์ฉ ์์ (Keras)
1
2
3
4
from tensorflow.keras.layers import Dense
from tensorflow.keras.initializers import GlorotUniform
layer = Dense(64, activation='tanh', kernel_initializer=GlorotUniform())
3.3 He (Kaiming) ์ด๊ธฐํ
- ์ ์์: Kaiming He (2015)
- ์ฌ์ฉ ํ์ฑํ ํจ์: ReLU, Leaky ReLU
- ์ด๊ธฐํ ๊ณต์:wโผN(0,2Nin)w \sim N(0, \frac{2}{N_{in}})wโผN(0,Ninโ2โ)
- NinN_{in}Ninโ: ์ ๋ ฅ ๋ ธ๋ ์
(์ฐธ๊ณ ) ReLU ๋ฐ Leaky ReLU ํ์ฑํ ํจ์
(1) ReLU: ๋น๋์นญ์ ์ธ ํ์ฑํ ํจ์
- ReLU๋ ์์๋ฅผ ๋ชจ๋ 0์ผ๋ก ๋ง๋๋ ํน์ฑ์ด ์์ต๋๋ค.
ReLU(x)=maxโก(0,x)\text{ReLU}(x) = \max(0, x)ReLU(x)=max(0,x)
์ฆ,
- ์ ๋ ฅ๊ฐ์ด ์์์ผ ๊ฒฝ์ฐ: ๊ทธ๋๋ก ์ ๋ฌ๋จ.
- ์ ๋ ฅ๊ฐ์ด ์์์ผ ๊ฒฝ์ฐ: 0์ผ๋ก ๋ณํจ.
-
๋ด๋ฐ ์ ๋ฐ์ด ๋นํ์ฑํ๋จ (Dead Neurons ๋ฌธ์ )
- ์์ ์ ๋ ฅ์ ๋ฐ๋ ๋ด๋ฐ์ ํญ์ 0์ ์ถ๋ ฅ โ ํ์ต ๊ณผ์ ์์ ๋ด๋ฐ์ด ์ฃฝ์ด๋ฒ๋ฆด ๊ฐ๋ฅ์ฑ ๋์.
-
์ถ๋ ฅ๊ฐ์ด ํ์ชฝ์ผ๋ก ํธํฅ๋จ โ ๋ถ์ฐ์ด ๊ฐ์ํ ๊ฐ๋ฅ์ฑ
- Xavier ์ด๊ธฐํ์ฒ๋ผ 1Nin+Nout\frac{1}{N_{in} + N_{out}}Ninโ+Noutโ1โ ๋๋ 1Nin\frac{1}{N_{in}}Ninโ1โ์ ์ฌ์ฉํ๋ฉด ๋ถ์ฐ์ด ๋๋ฌด ์์์ ธ, ReLU๊ฐ ์ ๋๋ก ํ์ฑํ๋์ง ์์ ์ ์์.
(2) Leaky ReLU: ์ํ๋ ํํ์ด์ง๋ง ์ฌ์ ํ ํธํฅ ๋ฌธ์ ์กด์ฌ
- Leaky ReLU๋ ReLU์ Dead Neurons ๋ฌธ์ ๋ฅผ ์ํํ๊ธฐ ์ํด ์์ ์ ๋ ฅ์๋ ์์ ๊ธฐ์ธ๊ธฐ ฮฑ\alphaฮฑ๋ฅผ ์ ์ฉํ ๋ณํ์ ๋๋ค.
Leakyย ReLU(x)={x,ifย xโฅ0ฮฑx,ifย x<0\text{Leaky ReLU}(x) = \begin{cases} x, & \text{if } x \geq 0 \ \alpha x, & \text{if } x < 0 \end{cases}Leakyย ReLU(x)={x,ฮฑx,โifย xโฅ0ifย x<0โ
- ๊ทธ๋ฌ๋ Leaky ReLU๋ ์ฌ์ ํ ์ถ๋ ฅ๊ฐ์ด ํ์ชฝ์ผ๋ก ํธํฅ๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ ํ ๊ฐ์ค์น ์ด๊ธฐํ๊ฐ ํ์ํฉ๋๋ค.
๐ก He (Kaiming) ์ด๊ธฐํ์ ํ์ ๋นํ
(1) Xavier ์ด๊ธฐํ์ ํ๊ณ์
- Xavier ์ด๊ธฐํ๋ ์๊ทธ๋ชจ์ด๋ ๋ฐ Tanh ํ์ฑํ ํจ์๋ฅผ ์ํด ์ค๊ณ๋์์ผ๋ฉฐ, ๋ค์๊ณผ ๊ฐ์ ๋ถ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
Var[w]=2Nin+Nout\text{Var}[w] = \frac{2}{N_{in} + N_{out}}Var[w]=Ninโ+Noutโ2โ
-
๊ทธ๋ฌ๋ Xavier ์ด๊ธฐํ๋ ReLU ํ์ฑํ ํจ์๋ฅผ ๊ณ ๋ คํ์ง ์์๊ธฐ ๋๋ฌธ์, ReLU์์๋ ์ ๊ฒฝ๋ง์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์ต๋์ง ์์ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค.
- Xavier ์ด๊ธฐํ๋ ์ถ๋ ฅ๊ฐ์ด ํ๊ท 0์ ์ ์งํ๋๋ก ์ค๊ณ๋์์ผ๋,
- ReLU๋ ์ถ๋ ฅ๊ฐ์ด ํญ์ 0 ์ด์์ด๋ฏ๋ก ํ๊ท ์ด 0๋ณด๋ค ํผ โ Xavier ์ด๊ธฐํ๋ฅผ ์ ์ฉํ๋ฉด ์ถ๋ ฅ๊ฐ์ด ๋๋ฌด ์์์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์.
-
์ฆ, Xavier ์ด๊ธฐํ๋ ReLU์์ ์ถ๋ ฅ๊ฐ์ ํฌ๊ธฐ๊ฐ ๊ธ๊ฒฉํ ์์์ง ๊ฐ๋ฅ์ฑ์ด ๋์.
(2) He ์ด๊ธฐํ์์ 2๋ฅผ ๊ณฑํ๋ ์ด์
- He ์ด๊ธฐํ๋ ReLU ๊ณ์ด ํ์ฑํ ํจ์์ ๋น๋์นญ์ฑ์ ๊ณ ๋ คํ์ฌ ๊ฐ์ค์น์ ๋ถ์ฐ์ ๋ ํฌ๊ฒ ์ค์ ํฉ๋๋ค.
Var[w]=2Nin\text{Var}[w] = \frac{2}{N_{in}}Var[w]=Ninโ2โ
- ์ฆ, LeCun ์ด๊ธฐํ๋ณด๋ค 2๋ฐฐ ํฐ ๋ถ์ฐ์ ์ฌ์ฉํฉ๋๋ค.
๐ค Q. ์ LeCun ์ด๊ธฐํ๋ณด๋ค 2๋ฐฐ ํฐ ๋ถ์ฐ์ ์ฌ์ฉํ๋๊ฐ?
-
ReLU๋ ์์ ์ถ๋ ฅ์ 0์ผ๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ํ๊ท ์ด ์ค์ด๋ฆ
- Xavier ์ด๊ธฐํ์์๋ ํ๊ท ์ด 0์ ์ ์งํ๋ ๊ฒ์ด ๋ชฉํ์ง๋ง,
- ReLU๋ ์์๋ฅผ ๋ชจ๋ 0์ผ๋ก ๋ณด๋ด๋ฏ๋ก ์ถ๋ ฅ ํ๊ท ์ด 0๋ณด๋ค ์ปค์ง๊ฒ ๋จ.
- ๋ฐ๋ผ์ ๋ถ์ฐ์ด ๋๋ฌด ์์์ง ์ ์์.
-
์ถ๋ ฅ๊ฐ์ ๋ถ์ฐ ๊ฐ์๋ฅผ ๋ณด์ ํ๊ธฐ ์ํด 2๋ฐฐ ์ฆ๊ฐ
- ReLU๋ ์ ๋ ฅ์ ์ฝ ์ ๋ฐ๋ง ํ์ฑํ๋จ โ ํ์ฑํ๋ ๋ด๋ฐ๋ค๋ง ๊ณ ๋ คํ๋ฉด ํ๊ท ์ด ๋ฎ์์ง.
- ์ด๋ฅผ ๋ณด์ ํ๊ธฐ ์ํด ๊ฐ์ค์น์ ๋ถ์ฐ์ 2๋ฐฐ ์ฆ๊ฐ์์ผ ํ์ต์ ์ํํ๊ฒ ์งํํ ์ ์๋๋ก ํจ.
=> ์ฆ, He ์ด๊ธฐํ๋ ReLU ๋ด๋ฐ์ด ๋นํ์ฑํ๋๋ ํน์ฑ์ ๊ณ ๋ คํ์ฌ ์ ์ ํ ๋ถ์ฐ์ ์กฐ์ ํ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค.
์๋๋ ํ์ดํ ์น์ ์ผ๋ผ์ค์ ์ ์ฉํ ์์ ์ฝ๋์ ๋๋ค.
๐ ์ ์ฉ ์์ (PyTorch)
1
2
3
4
5
6
def init_weights(m):
if isinstance(m, nn.Conv2d) or isinstance(m, nn.Linear):
init.kaiming_uniform_(m.weight, nonlinearity='relu')
init.zeros_(m.bias)
model.apply(init_weights)
๐ ์ ์ฉ ์์ (Keras)
1
2
3
4
from tensorflow.keras.layers import Dense
from tensorflow.keras.initializers import HeNormal
layer = Dense(64, activation='relu', kernel_initializer=HeNormal())
์ ๋ฆฌ
๊ฐ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ์ด๋ป๊ฒ ๋ถ์ฐ์ ์กฐ์ ํ๋์ง ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๊ธฐํ ๊ธฐ๋ฒ | ๊ฐ์ค์น ๋ถํฌ | ์ฌ์ฉ๋๋ ํ์ฑํ ํจ์ | ํน์ง |
---|---|---|---|
LeCun ์ด๊ธฐํ | wโผN(0,1Nin)w \sim \mathcal{N}(0, \frac{1}{N_{in}})wโผN(0,Ninโ1โ) | Sigmoid, Tanh | Sigmoid ํฌํ ๋ฌธ์ ๋ฐฉ์ง |
Xavier (Glorot) ์ด๊ธฐํ | wโผN(0,2Nin+Nout)w \sim \mathcal{N}(0, \frac{2}{N_{in} + N_{out}})wโผN(0,Ninโ+Noutโ2โ) | Sigmoid, Tanh | ์์ ํ ๋ฐ ์ญ์ ํ์์ ๋ถ์ฐ ์ ์ง |
He (Kaiming) ์ด๊ธฐํ | wโผN(0,2Nin)w \sim \mathcal{N}(0, \frac{2}{N_{in}})wโผN(0,Ninโ2โ) | ReLU, Leaky ReLU | ReLU ํ์ฑํ ๋ด๋ฐ ๋น์จ ๋ณด์ |
๊ฐ ์ด๊ธฐํ ๊ธฐ๋ฒ์ ์์ ํ์ ์ญ์ ํ์์ ๋ถ์ฐ์ด ๋๋ฌด ์ปค์ง๊ฑฐ๋ ์์์ง๋ ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์ค๊ณ๋์์ต๋๋ค.
-
์ด๊ธฐํ ๋ฐฉ๋ฒ ์ ํ ๊ธฐ์ค
์ด๊ธฐํ ๋ฐฉ์์ ๋ฐ๋ผ ํ์ต ์ฑ๋ฅ์ด ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.
- ๋ฐ๋ผ์ ์ฌ์ฉํ๋ ค๋ ํ์ฑํ ํจ์์ ๋คํธ์ํฌ ๊ตฌ์กฐ์ ๋ง์ถฐ ์ ์ ํ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๐ ์๋๋ ์ด๊ธฐํ ๋ฐฉ๋ฒ ์ ํ ์ ๊ณ ๋ คํด์ผ ํ ํ์ ๋๋ค:
-
ํ์ฑํ ํจ์์์ ์กฐํฉ ๊ณ ๋ ค:
- ํ์ฑํ ํจ์์ ๋ฐ๋ผ ์ต์ ์ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ๋ค๋ฆ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ReLU ๊ณ์ด ํจ์์๋ He ์ด๊ธฐํ๊ฐ, Sigmoid๋ Tanh ํจ์์๋ Xavier ์ด๊ธฐํ๊ฐ ์ ํฉํฉ๋๋ค.
-
๋คํธ์ํฌ ๊น์ด์ ๊ตฌ์กฐ์ ๋ฐ๋ฅธ ์กฐ์ :
- ๋คํธ์ํฌ๊ฐ ๊น์ด์ง์๋ก ๊ทธ๋๋์ธํธ ์์ค์ด๋ ํญ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์ด๋ฅผ ์ํํ๊ธฐ ์ํด ๊ฐ ์ธต์ ๊ฐ์ค์น ์ด๊ธฐํ๋ฅผ ์ ์คํ๊ฒ ์ค์ ํด์ผ ํฉ๋๋ค.
-
๋ฐฐ์น ์ ๊ทํ์์ ๋ณํ ์ฌ์ฉ:
- ๋ฐฐ์น ์ ๊ทํ(Batch Normalization)๋ ๊ฐ ์ธต์ ์ ๋ ฅ ๋ถํฌ๋ฅผ ์ ๊ทํํ์ฌ ํ์ต์ ์์ ํ์ํต๋๋ค.
- ์ด๊ธฐํ์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋ ๋์ ์ฑ๋ฅ์ ์ป์ ์ ์์ต๋๋ค.
-
๋๋กญ์์๊ณผ์ ์ํธ์์ฉ:
- ๋๋กญ์์(Dropout)์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๊ฐ์ค์น ์ด๊ธฐํ๊ฐ ๋๋กญ์์์ ํจ๊ณผ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค.
- ์ด๋๋ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ ์ ํ ์ ํํ์ฌ ๋๋กญ์์๊ณผ์ ์๋์ง๋ฅผ ๊ทน๋ํํด์ผ ํฉ๋๋ค.
-
ํ์ต๋ฅ ๊ณผ ์ด๊ธฐํ์ ์๊ด๊ด๊ณ:
- ๊ฐ์ค์น ์ด๊ธฐํ์ ๋ฐ๋ผ ์ต์ ์ ํ์ต๋ฅ ์ด ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์ ํํ ํ, ์ด์ ๋ง๋ ํ์ต๋ฅ ์ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
-
์ ๊ทํ ๊ธฐ๋ฒ๊ณผ์ ์กฐํฉ:
- L1, L2 ์ ๊ทํ์ ๊ฐ์ ๊ธฐ๋ฒ๊ณผ ์ด๊ธฐํ๋ฅผ ํจ๊ป ์ฌ์ฉํ์ฌ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๊ณ ์ผ๋ฐํ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
-
์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์คํ์ ๊ฒ์ฆ:
- ๋ชจ๋ธ๊ณผ ๋ฐ์ดํฐ์ ์ ๋ฐ๋ผ ์ต์ ์ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก, ์ฌ๋ฌ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ์คํํ์ฌ ๊ฐ์ฅ ์ ํฉํ ๋ฐฉ์์ ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด๋ฌํ ํ๋ค์ ๊ณ ๋ คํ์ฌ ์จ์ดํธ ์ด๊ธฐํ๋ฅผ ์ค์ ํ๋ฉด ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ํ์ต ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ์ ๋์ฑ ํฅ์์ํฌ ์ ์์ต๋๋ค.
โ (์ฐธ๊ณ ) ์จ์ดํธ๋ฅผ 0 ๋๋ 1๋ก ์ค์ ํ๋ฉด ์ด๋ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋์?
- ์จ์ดํธ๋ฅผ 0 ๋๋ 1๋ก ์ด๊ธฐํํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- 0์ผ๋ก ์ค์ ํ ๊ฒฝ์ฐ: ๋ชจ๋ ๋ด๋ฐ์ด ๋์ผํ ์ถ๋ ฅ๊ณผ ๋์ผํ ๊ทธ๋๋์ธํธ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ฉฐ, ํ์ต์ด ์งํ๋์ง ์์.
- 1๋ก ์ค์ ํ ๊ฒฝ์ฐ: ๊ทธ๋๋์ธํธ๊ฐ ๋๋ฌด ํฌ๊ฑฐ๋ ๋๋ฌด ์์์ง ์ ์์ผ๋ฉฐ, ๋คํธ์ํฌ๊ฐ ์ ๋๋ก ํ์ต๋์ง ์์.
- ๋๋ค ์ด๊ธฐํ์ ํ์์ฑ: ๋ด๋ฐ๋ค์ด ๊ฐ๊ธฐ ๋ค๋ฅธ ํน์ง์ ํ์ตํ ์ ์๋๋ก ๊ฐ์ค์น๋ฅผ ๋ฌด์์๋ก ์ด๊ธฐํํด์ผ ํจ.
โ(์ฐธ๊ณ ) ๊ทธ๋ฌ๋ฉด ์ผ๋ฐ ์ ๊ท๋ถํฌ๋ ์ ํ ์ ์ฐ๋์?
- ํ์ดํ ์น์์
torch.nn.init.normal_
ํจ์๋ ํ ์์ ๊ฐ์ ์ ๊ท ๋ถํฌ(Normal Distribution)๋ฅผ ๋ฐ๋ฅด๋๋ก ์ด๊ธฐํํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ด ํจ์๋ ํ๊ท (
mean
)๊ณผ ํ์คํธ์ฐจ(std
)๋ฅผ ์ง์ ํ์ฌ, ํด๋น ๋ถํฌ์ ๋ฐ๋ผ ํ ์์ ์์๋ค์ ๋ฌด์์๋ก ์ค์ ํฉ๋๋ค.- ์ผ๋ฐ์ ์ผ๋ก, ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ๊ฐ์ค์น ์ด๊ธฐํ ์์๋ ํ์ฑํ ํจ์์ ๋คํธ์ํฌ ๊ตฌ์กฐ์ ์ต์ ํ๋ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.
- ์๋ฅผ ๋ค์ด, ReLU ํ์ฑํ ํจ์์๋ He ์ด๊ธฐํ, Sigmoid๋ Tanh ํจ์์๋ Xavier ์ด๊ธฐํ๊ฐ ์ ํฉํฉ๋๋ค. ์ด๋ฌํ ๋ฐฉ๋ฒ๋ค์ ๊ฐ ์ธต์ ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ ๋ ธ๋ ์๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฐ์ค์น๋ฅผ ์ด๊ธฐํํจ์ผ๋ก์จ, ํ์ต์ ์์ ์ฑ๊ณผ ์๋ ด ์๋๋ฅผ ํฅ์์ํต๋๋ค.
- ๋ฐ๋ฉด์,
torch.nn.init.normal_
๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์ ๊ท ๋ถํฌ ์ด๊ธฐํ๋ ์ด๋ฌํ ์ต์ ํ๋ ์ด๊ธฐํ ๋ฐฉ๋ฒ์ ๋นํด ํ์ต ํจ์จ์ด ๋จ์ด์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์, ํน์ ํ ์ด์ ๋ ์คํ์ ์ธ ๋ชฉ์ ์ด ์๋ ํ, ์ผ๋ฐ์ ์ธ ์ ๊ท ๋ถํฌ ์ด๊ธฐํ๋ ๋ง์ด ์ฌ์ฉ๋์ง ์์ต๋๋ค.- ๊ทธ๋ฌ๋, ํน์ ํ ๋ชจ๋ธ์ด๋ ์คํ์์๋
torch.nn.init.normal_
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ์๋ฅผ ๋ค์ด, GAN(Generative Adversarial Network) ๋ชจ๋ธ์ ๊ตฌํ์์ ๊ฐ์ค์น๋ฅผ ์ด๊ธฐํํ ๋, ํ๊ท ์ด 0์ด๊ณ ํ์คํธ์ฐจ๊ฐ 0.02์ธ ์ ๊ท ๋ถํฌ๋ฅผ ์ฌ์ฉํ๊ธฐ๋ ํฉ๋๋ค.
-
๊ฒฐ๋ก
์จ์ดํธ ์ด๊ธฐํ๋ ๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ์ฒซ๊ฑธ์์ ๊ฒฐ์ ์ง๋ ์ค์ํ ์์์ ๋๋ค.
- ์ ์ ํ ์ด๊ธฐํ๋ฅผ ์ ํํ๋ฉด ํ์ต์ด ์์ ์ ์ผ๋ก ์งํ๋๊ณ , ๊ทธ๋๋์ธํธ ์์ค์ด๋ ํญ๋ฐ ๊ฐ์ ๋ฌธ์ ๋ ์ค์ผ ์ ์์ต๋๋ค.
์ฝ๊ฒ ์ ๋ฆฌํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ReLU ๊ณ์ด โ He ์ด๊ธฐํ
- Sigmoid, Tanh โ Xavier ์ด๊ธฐํ
- SELU โ LeCun ์ด๊ธฐํ
๋ชจ๋ธ์ ์ฒ์๋ถํฐ ์ ๋๋ก ์ธํ ํ๋ฉด ํ์ต ์๋๋ ๋นจ๋ผ์ง๊ณ , ์ํ๋ ์ฑ๋ฅ์ ๋ ์ฝ๊ฒ ์ป์ ์ ์์ต๋๋ค.
์ฝ์ด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๐โจ