๋ฐ์ํ
1. ์ ๊ฒฝ๋ง์ ํ์ต ๊ณผ์
์ ๊ฒฝ๋ง์ ํ์ต ๊ณผ์ ์ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์์ต๋๋ค. ์์ ํ(Forward Pass), ์ญ์ ํ(Backward Pass)๊ฐ ์์ต๋๋ค.
๋จผ์ ์ด ํ์ต ๊ณผ์ ์ ๋ฐํ์ฌ ์ค๋ช ์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
Forward Pass (์์ ํ)
Forward Pass (์์ ํ)๋ input(์ ๋ ฅ) data๊ฐ ์ ๊ฒฝ๋ง์ ๊ฐ์ธต์ ์ฐจ๋ก๋๋ก ํต๊ณผํ๋ฉด์ ์ต์ข output ๊น์ง ๋๋ฌํ๋ ๊ณผ์ ์ ๋๋ค.
- ์ด ๊ณผ์ ์ input layer(์ ๋ ฅ์ธต)์์ output layer(์ถ๋ ฅ์ธต)๊น์ง ์์ฐจ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ์ต์ข ์ ์ผ๋ก ์์คํจ์ (loss function)์ ํตํด ์์ธก๊ฐ๊ณผ ์ค์ ๊ฐ์ ์ฐจ์ด๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์ด ์ฐจ์ด๋ฅผ ์์ค(loss) or ์ค์ฐจ(Error)๋ผ๊ณ ํฉ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด ์ฐจ์ด๋ ์ ๊ฒฝ๋ง์ ์ฑ๋ฅ์ ์ธก์ ํ๋ ์งํ๊ฐ ๋ฉ๋๋ค.
์ ๋ฆฌํ๋ฉด, input๊ฐ์ input layer(์ ๋ ฅ์ธต), hidden layer(์๋์ธต)์ ์ง๋๋ฉด์ ๊ฐ ์ธต์์์ ๊ฐ์ค์น์ ํจ๊ป ๊ณ์ฐ๋๋ฉฐ ๋์ค์๋ output layer(์ถ๋ ฅ์ธต)์ผ๋ก ๋ชจ๋ ์ฐ์ฐ์ด ๋ง์น ์์ธก๊ฐ์ด ๋์ค๊ฒ ๋ฉ๋๋ค.
- ์ด๋ ๊ฒ input layer(์ ๋ ฅ์ธต)์์ output layer(์ถ๋ ฅ์ธต) ๋ฐฉํฅ์ผ๋ก ์์ธก๊ฐ์ ์ฐ์ฐ์ด ์งํ๋๋ ๊ณผ์ ์ Forward Pass (์์ ํ) ๋ผ๊ณ ํฉ๋๋ค.
Backward Pass (์ญ์ ํ)
์ญ์ ํ๋ ์์ค ํจ์(Loss function)์ ํตํด ๊ณ์ฐ๋ ์์ค์ ์ฌ์ฉํ์ฌ ์ ๊ฒฝ๋ง์ Weigh(๊ฐ์ค์น)์ bias(ํธํฅ)์ ์ ๋ฐ์ดํธ ํ๋ ๊ณผ์ ์ ๋๋ค.
- ์ด ๊ณผ์ ์์๋ ์์ค ํจ์(Loss function)์ ๊ธฐ์ธ๊ธฐ(Gradient)๋ฅผ ๊ณ์ฐํ๊ณ , ์ด๋ฅผ ํตํด Weight(๊ฐ์ค์น)์ ๋ํ loss(์์ค)์ ๋ฏผ๊ฐ๋๋ฅผ ํ์ ํฉ๋๋ค.
- ์ฌ๊ธฐ์ ๊ธฐ์ธ๊ธฐ(Gradient)๋ ์ฐ์ ๋ฒ์น(Chain Rule)์ ์ฌ์ฉํ๋ Backward Pass (์ญ์ ํ) ์๊ณ ๋ฆฌ์ฆ์ ํตํด input layer(์ ๋ ฅ์ธต) ๋ฐฉํฅ์ผ๋ก ์ ํ๋ฉ๋๋ค.
- ๊ฐ ์ธต(layer)์ Weight(๊ฐ์ค์น)๋ ํด๋น ์ธต์ input ๊ฐ (์ ๋ ฅ๊ฐ), Weight(๊ฐ์ค์น)์ ๋ํ ์์ค ํจ์(Loss function)์ ๊ธฐ์ธ๊ธฐ(Gradient), ํ์ต๋ฅ (Learning Rate)๋ฅผ ๊ณ ๋ คํ์ฌ ์ ๋ฐ์ดํธ๋ฅผ ํฉ๋๋ค.
- ์ฌ๊ธฐ์ ๊ธฐ์ธ๊ธฐ(Gradient)๊ฐ ์์(+)๋ฉด Weight(๊ฐ์ค์น)๋ฅผ ์ค์ด๊ณ , ์์(-)๋ฉด Weight(๊ฐ์ค์น)๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ์์ผ๋ก ์ ๋ฐ์ดํธ ํฉ๋๋ค.
- ์ด๋ ๊ฒ Weight(๊ฐ์ค์น)๋ฅผ ์กฐ์ ํ๋ฉด์ ๋ค์ ์์ ํ(Forward Pass)๋ฅผ ์งํํ ๋, ์์ค(Loss)๊ฐ ๊ฐ์ํ๋๋ก ํฉ๋๋ค.
* Backward Pass(์ญ์ ํ) ์์ ์ฐ์๋ฒ์น(Chain Rule)
- ์ญ์ ํ์์ ์ฐ์๋ฒ์น์ ์ธ๊ณต์ ๊ฒฝ๋ง์ ํ์ต ์๊ณ ๋ฆฌ์ฆ์ค ํ๋์ ๋๋ค. ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ์์ธ๋ฐ, ์ฃผ๋ก ๊ฒฝ์ฌํ๊ฐ๋ฒ(Gradient Descent)๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ฒฝ๋ง์ด Loss function(์์ค ํจ์)๋ฅผ ์ต์ํ ํ๋ ๋ฐฉ์์ผ๋ก ํ์ตํฉ๋๋ค.
2. ์ธ๊ณต์ ๊ฒฝ๋ง ์์ (Code & ์์)
ํ๋ฒ ์ธ๊ณต์ ๊ฒฝ๋ง Model์ ํ๋ฒ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
- input Dimension์ด 3, Output Dimension์ด 2์ธ ์ธ๊ณต์ ๊ฒฝ๋ง์ ํ๋ฒ ๊ตฌํํด ๋ณด๊ฒ ์ต๋๋ค.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
model.add(Dense(2, input_dim=3, activation='softmax'))
- ์ฌ๊ธฐ์ Softmax ํจ์๋ ์ถ๋ ฅ ๋ฒกํฐ์ ๋ถ๋ฅ๋ฅผ ์ํํ๋ ์ญํ ์ ํฉ๋๋ค.
- Output Dimension, ์ฌ๊ธฐ์๋ Output Vector์ ์ฐจ์์ 2๋ก ๋๋ฉด, ์ด์ง(binary) ๋ถ๋ฅ๋ฅผ ์ํํ๋ ๋ชจ๋ธ์ด ๋ฉ๋๋ค.
- ์ฐธ๊ณ ๋ก Softmax ํจ์๋ก๋ ์ด์ง ๋ถ๋ฅ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
Keras Library ์์๋ "summary()"๋ฅผ ์ฌ์ฉํ๋ฉด ๊ทธ ๋ชจ๋ธ์ ์กด์ฌํ๋ ๋ชจ๋ ๋งค๊ฐ๋ณ์, ๊ฐ์ค์น, ํธํฅ์ ๊ฐ์๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
dense (Dense) (None, 2) 8
=================================================================
Total params: 8 (32.00 Byte)
Trainable params: 8 (32.00 Byte)
Non-trainable params: 0 (0.00 Byte)
_________________________________________________________________
- ๋งค๊ฐ๋ณ์๋ 8๊ฐ๊ฐ ๋์ต๋๋ค. ์ด ์ ๊ฒฝ๋ง์์๋ ํ์ต ๊ฐ๋ฅํ ๋งค๊ฐ๋ณ์ W & b ๊ฐ์๊ฐ ์ด 8๊ฐ๋ผ๊ณ ๋ํ๋ ๋๋ค.
- ์ด ์ ๊ฒฝ๋ง ์์๋ input layer(์ ๋ ฅ์ธต)์ ๋ด๋ฐ์ด 3๊ฐ, output layer(์ถ๋ ฅ์ธต)์ ๋ด๋ฐ์ด 2๊ฐ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ดํ ๊ฐ๊ฐ์ ๊ฐ์ค์น๋ฅผ ์๋ฏธํ๋ w ๋ฅผ ์๋ฏธํ๊ณ ์์ต๋๋ค.
- ๊ฐ๊ฐ 3๊ฐ์ ๋ด๋ฐ(x1, x2, x3) 2๊ฐ์ ๋ด๋ฐ ์ฌ์ด์๋ ์ด 6๊ฐ์ ํ์ดํ๊ฐ ์กด์ฌํ๋๋ฐ, ์ด๋ ์ ์ ๊ฒฝ๋ง์์ ๊ฐ์ค์น w์ ๊ฐ์๊ฐ 6๊ฐ์์ ์๋ฏธํฉ๋๋ค.
Forward Pass (์์ ํ) ๊ณ์ฐ ์์
- ํ๋ ฌ๊ณฑ ์์๋ 3์ฐจ์ ๋ฒกํฐ์์ 2์ฐจ์ ๋ฒกํฐ๊ฐ ๋๊ธฐ ์ํด์ 3 × 2 ํ๋ ฌ์ ๊ณฑํ๋ค๊ณ ํ ์ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด ํ๋ ฌ ๊ฐ๊ฐ์ ์์๊ฐ ๊ฐ๊ฐ์ w๊ฐ ๋ฉ๋๋ค. ์ ๊ทธ๋ฆผ์์๋ y1 ์ ์ฐ๊ฒฐ๋๋ ํ์ดํ w1, w2, w3๋ฅผ ์ฃผํฉ์์ผ๋ก ํํํ๊ณ , y2 ์ ์ฐ๊ฒฐ๋๋ ํ์ดํ w4, w5, w6๋ฅผ ์ด๋ก์์ผ๋ก ํํํ์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ๋ด๋ฐ๊ณผ ํ์ดํ๋ก ํํํ๋ ์ธ๊ณต ์ ๊ฒฝ๋ง์ ๊ทธ๋ฆผ์์๋ ํธํฅ b๋ ์๋ต๋์์ง๋ง ํธํฅ b ์ ์ฐ์ฐ ๋ํ ์กด์ฌํฉ๋๋ค.
- ์์์ ์ค๋ช ํ์ง๋ง ์ด ๊ทธ๋ฆผ์์๋ ํธํฅ์ ํํํ์ง ์์์ต๋๋ค ,๊ทธ๋ ์ง๋ง ํ๋ ฌ ์ฐ์ฐ์์์๋ b1, b2๋ฅผ ํํํ์์ต๋๋ค.
- ํธํฅ b ์ ๊ฐ์๋ ํญ์ Output Dimension(์ถ๋ ฅ ์ฐจ์)์ ๊ธฐ์ค์ผ๋ก ๊ฐ์๋ฅผ ํ์ธํ๋ฉด ๋ฉ๋๋ค.
- ์ด ์ธ๊ณต ์ ๊ฒฝ๋ง์ ๊ฒฝ์ฐ์๋ Output Dimension(์ถ๋ ฅ ์ฐจ์)์ด 2์ด๋ฏ๋ก ํธํฅ ๋ํ b1, b2๋ก ๋ ๊ฐ์ ๋๋ค.
- ๊ฐ์ค์น w์ ๊ฐ์๊ฐ w1 ~ w6 ๋ก ์ด 6๊ฐ์ด๋ฉฐ ํธํฅ b์ ๊ฐ์๊ฐ b1, b2 ๋ก ๋ ๊ฐ์ด๋ฏ๋ก ์ด ํ์ต๊ฐ๋ฅํ parameter(๋งค๊ฐ๋ณ์)์ ์๋ 8๊ฐ์ ๋๋ค. model.summary()๋ฅผ ์คํํ๋ฉด ๋งค๊ฐ๋ณ์์ ์ 8๊ฐ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ ๋ด๋ฐ y1, y2๋ฅผ ๊ตฌํ๋ ๊ณผ์ ์ ์์์ผ๋ก ํํํ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํํํ ์ ์์ต๋๋ค.
- ์ด๋ฒ์๋ ์ ๋ ฅ x1, x2, x3 ์ Input Vector(์ ๋ ฅ ๋ฒกํฐ) X๋ก ํ๊ณ ๊ณ์ฐํด๋ณด๊ฒ ์ต๋๋ค.
- ๊ทธ๋ฆฌ๊ณ w1 ~ w6 ๋ฅผ ์์๋ก ํ๋ 3 × 2 ํ๋ ฌ์ ๊ฐ์ค์น ํ๋ ฌ W ๋ผ๊ณ ํฉ๋๋ค.
- ํธํฅ b1, b2 ๋ฅผ ์์๋ก ํ๋ Vector ๋ฅผ B, ๊ทธ๋ฆฌ๊ณ y1, y2 ๋ฅผ ์์๋กํ๋ Output Vector (์ถ๋ ฅ ๋ฒกํฐ)๋ฅผ Y ๋ก ๋ช ๋ช ํฉ์๋ค.
- ์์ ์ค๋ช ์ ๊ธฐ๋ฐํ์ฌ ์ธ๊ณต ์ ๊ฒฝ๋ง์ ์๋์ ๊ณผ์ ์ฒ๋ผ ํํํฉ๋๋ค.
๋ค์ ๋งํด ์์์ Y(๋ด๋ฐ) = X(์ ๋ ฅ๋ฒกํฐ) * W(๊ฐ์ค์น ํ๋ ฌ) + B(ํธํฅ) ์ ๋๋ค.
Backward Pass (์ญ์ ํ) ์์
ํ๋ฒ ์ญ์ ํ์ ์งํ๊ณผ์ ์ ์ค๋ช ํด ๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
- ์์์ ์ถ๋ ฅ์ธต(Output Layer)์์, ๋ด๋ฐ(Neuron)๋ ๊ฐ๊ฐ ์์ต๋๋ค.
- ๊ฐ Output Neuron(์ถ๋ ฅ ๋ด๋ฐ)์ ์์ค ํจ์(Loss Function)๋ฅผ ํตํด ๊ณ์ฐ๋ ์ค์ฐจ์ ๊ธฐ๋ฐํ์ฌ ์ค์ฐจ ์ ํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ด ์ค์ฐจ ์ ํธ๋ ๊ฐ์ค์น(Weight)๋ฅผ ํตํด ์ ๋ ฅ์ธต(Input Layer)์ผ๋ก ์ ํ๋๋ฉฐ, ์ ๋ ฅ์ธต(Input layer)๊ณผ ์ถ๋ ฅ์ธต(Output layer) ์ฌ์ด์ Weight(๊ฐ์ค์น)์ ๋ํ Gradient(๊ธฐ์ธ๊ธฐ)๋ฅผ ๊ณ์ฐํฉ๋๋ค.
- ์ ๋ ฅ์ธต(Input Layer) ์๋ ์ธ ๊ฐ์ ๋ด๋ฐ(Neuron)์ด ์์ผ๋ฉฐ, ๊ฐ ๋ด๋ฐ(Neuron)์ ์ถ๋ ฅ์ธต(Output layer) ์ผ๋ก๋ถํฐ ์ ํ๋Gradient(๊ธฐ์ธ๊ธฐ)์ ๋ฐ๋ผ ์์ ์ ๊ฐ์ค์น(Weight)๋ฅผ ์กฐ์ ํฉ๋๋ค.
- Backward pass(์ญ์ ํ) ๊ณผ์ ์์๋ ์ถ๋ ฅ์ธต(Output layer)์ ์ค์ฐจ๋ก๋ถํฐ ์์ํด์ ์ฐ์ ๋ฒ์น(Chain Rule)์ ์ฌ์ฉํ์ฌ ๊ฐ layer(์ธต)์ Weight(๊ฐ์ค์น)์ ๋ํ Loss function(์์ค ํจ์)์ ํธ๋ฏธ๋ถ์ ๊ณ์ฐํฉ๋๋ค.
- ์ด๋ฅผ ํตํด Weight(๊ฐ์ค์น)์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ๊ณ์ฐ๋๊ณ , ์ด Gradient(๊ธฐ์ธ๊ธฐ)๋ Optimizer(ex: SGD, Adam ๋ฑ)๋ฅผ ์ฌ์ฉํ์ฌWeight(๊ฐ์ค์น)๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
* Optimizer:
Optimizer(์ตํฐ๋ง์ด์ )๋ ์ ๊ฒฝ๋ง์ ํ๋ จํ ๋ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ์ ์๋ loss function(์์ค ํจ์)์ ๊ฐ์ ์ต์ํํ๊ฑฐ๋ ์ต์ ํํ๊ธฐ ์ํด ๋ชจ๋ธ์ Weight(๊ฐ์ค์น)์ bias(ํธํฅ)์ ์ ๋ฐ์ดํธํ๋ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํฉ๋๋ค.
Forward Pass(์์ ํ), Backward pass(์ญ์ ํ) Summary
- Forward Pass(์์ ํ)๋ input(์ ๋ ฅ)์์ output(์ถ๋ ฅ)์ผ๋ก ๋ฐ์ดํฐ๊ฐ ํ๋ฅด๋ ๊ณผ์ ์ผ๋ก, ์ต์ข ์ถ๋ ฅ๊ณผ loss(์์ค) ๊ฐ์ ๊ณ์ฐํฉ๋๋ค.
- Backward Pass(์ญ์ ํ)๋ output(์ถ๋ ฅ)์์ input(์ ๋ ฅ)์ผ๋ก ์ค์ฐจ ์ ํธ๊ฐ ํ๋ฅด๋ ๊ณผ์ ์ผ๋ก, loss(์์ค)์ ๊ธฐ์ค์ผ๋ก weight(๊ฐ์ค์น)๋ฅผ ์กฐ์ ํฉ๋๋ค.
์ด ๊ณผ์ ๋ค์ ์ ๊ฒฝ๋ง์์ ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋๋ฉฐ, ์ด ๋ฐ๋ณต์ ์ผ๋ก ์ํ๋๋ ์๋ฏธ์ ์ฉ์ด๋ฅผ epoch(์ํญ) ์ด๋ผ๊ณ ํฉ๋๋ค.
epoch๋ฅผ ๊ฑฐ๋ญํ ์๋ก, ์ ๊ฒฝ๋ง์ loss(์์ค)๊ฐ ์ต์ํ ๋๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ ๋ชจ๋ธ๋ง ํ ์ ์๊ฒ, ์์์ Weight(๊ฐ์ค์น) ์ bias(ํธํฅ)์ ์์์ ์ฐพ๋ ๊ณผ์ ์ ๊ฑฐ์นฉ๋๋ค.
3. Gradient Exploding
Gradient Exploding(๊ธฐ์ธ๊ธฐ ํญํ) ๋ฌธ์ ๋ ์ ๊ฒฝ๋ง์ Backward Pass(์ญ์ ํ) ๊ณผ์ ์ค์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ๋๋ฌด ์ปค์ ธ์ ์์น์ ์ผ๋ก ๋ถ์์ ํด์ง๋ ๊ฒ์ ๋งํฉ๋๋ค.
- ๊ธด Sequence(์ํ์ค)๋ฅผ ์ฒ๋ฆฌํ ๋ RNN์์ ์์ฃผ ๋ฐ์ํฉ๋๋ค.
- ์ด์ ๋ Time-Step์ Weight(๊ฐ์ค์น)๊ฐ Backward Pass(์ญ์ ํ) ๋ ๋ ์ฐ์์ ์ผ๋ก ๊ณฑํด์ง๋ฉด์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ์ฆ๊ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฌ๋ฉด Gradient Exploding(๊ธฐ์ธ๊ธฐ ํญํ) ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋ญ๊ฐ ์์๊น์?
- Gradient Exploding(๊ธฐ์ธ๊ธฐ ํญํ)๊ฐ ์ผ์ด๋๋ ์ด์ ๋ ์๋ ๊ทธ๋ฆผ์ ๋ณด๋ฉด์ ์ค๋ช
๋๋ฆฌ๋ฉด, ์ ๊ฒฝ๋ง์ Backward Pass(์ญ์ ํ) ๊ณผ์ ์ค์ ๋๋ฌด ํฐ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ์๊ฒจ์ Parameter๊ฐ Overshooting์ด ๋ฉ๋๋ค.
- * Overshooting: ์ฌ๊ธฐ์๋ ์๊ณ๊ฐ์ ์ด๊ณผํ๋ ํ์ - like Gradient Exploding(๊ธฐ์ธ๊ธฐ ํญํ)๊ณผ ๊ฐ๋ค๊ณ ๋ณด์๋ฉด ๋ฉ๋๋ค.
- ๊ธฐ์ธ๊ธฐ ํด๋ฆฌํ(Gradient Clipping): ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ํด๊ฒฐ์ฑ
์ค ํ๋๋ก, Backward Pass(์ญ์ ํ) ๊ณผ์ ์์ Weight(๊ฐ์ค์น)์ ํฌ๊ธฐ๊ฐ ํน์ ์๊ณ๊ฐ์ ์ด๊ณผํ๋ ๊ฒฝ์ฐ Weight(๊ฐ์ค์น)์ ํฌ๊ธฐ๋ฅผ ์๊ณ๊ฐ์ผ๋ก ์ ํํฉ๋๋ค. ์ด๋ Gradient(๊ธฐ์ธ๊ธฐ)์ ๋ฐฉํฅ์ ์ ์งํ๋ฉด์ ํฌ๊ธฐ๋ง ์กฐ์ ํฉ๋๋ค.
- ๋ง์ฝ Gradient(๊ธฐ์ธ๊ธฐ)์ ํฌ๊ธฐ๊ฐ ์๊ณ๊ฐ ์ด์์ผ๋ก ์ปค์ง๋ฉด? ๊ฐ์ด ์๊ณ๊ฐ ๋ฏธ๋ง์ด ๋๋ก๋ก Scaling ํด์ค๋๋ค.
- ๊ฐ์ค์น ์ด๊ธฐํ(Weight Initialization): Weight(๊ฐ์ค์น)๋ฅผ ์ ์ ํ๊ฒ ์ด๊ธฐํํ์ฌ Backward Pass(์ญ์ ํ)์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ๊ณผ๋ํ๊ฒ ์ฆ๊ฐํ์ง ์๋๋ก ์กฐ์ ํฉ๋๋ค.
- ๋ค๋ง, Weight(๊ฐ์ค์น)๋ฅผ ์ค์ด๋ฉด Vanishing Problem(์์ค ๋ฌธ์ )๊ฐ ๋ฐ์ํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ ์ ํ ์กฐ์ ํด์ค์ผ ํฉ๋๋ค.
- ์์ ํ์ต๋ฅ (Learning Rate): ํ์ต๋ฅ ์ ๋ฎ์ถ์ด Weight(๊ฐ์ค์น) ์ ๋ฐ์ดํธ ํฌ๊ธฐ๋ฅผ ์๊ฒ ํ์ฌ Gradient Exploding(๊ธฐ์ธ๊ธฐ ํญํ)์ ์ํฅ์ ์ค์ผ ์ ์์ต๋๋ค.
- ๋ฐฐ์น ์ ๊ทํ(Batch Normalization): ๊ฐ layer(์ธต)์ input(์ ๋ ฅ)์ Normalization(์ ๊ทํ)ํจ์ผ๋ก์จ Gradient(๊ธฐ์ธ๊ธฐ)์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ๊ณ ํ์ต ๊ณผ์ ์ ์์ ํํ ์ ์์ต๋๋ค.
- ๋จ์ํ๋ ๋คํธ์ํฌ(Simplified Network): ์ ๊ฒฝ๋ง์ ๋ณต์ก๋๋ฅผ ์ค์ฌ์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ์ฆํญ๋๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
4. Gradient Vanishing
Gradient Vanishing (๊ธฐ์ธ๊ธฐ ์์ค) ๋ฌธ์ ๋ ์ ๊ฒฝ๋ง์ Backward Pass(์ญ์ ํ) ๊ณผ์ ์ค์ ๋ฐ์ํฉ๋๋ค.
- ๋คํธ์ํฌ์ ๊น์ ๋ถ๋ถ์ผ๋ก ์์ํ์ฌ ์์ชฝ layer(์ธต)์ผ๋ก ์ด๋ํ๋ฉด์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ์ ์ ์์์ง๋ ํ์์ ๋๋ค.
- ๊ทธ๋ฌ๋ฉด Input layer(์ ๋ ฅ์ธต)์ ๊ฐ๊น์ด Weight(๊ฐ์ค์น)๋ ๊ฑฐ์ด update๊ฐ ์๋ฉ๋๋ค.
- ๊ทธ๋ฌ๋ฉด ํจ๊ณผ์ ์ธ ํ์ต์ด ์ด๋ ค์์ง์ ์์ต๋๋ค.
Gradient Vanishing (๊ธฐ์ธ๊ธฐ ์์ค)์ ์ฃผ์ ์์ธ์ ๋ํ์ฌ ๋งํด๋ณด๊ฒ ์ต๋๋ค.
- Activation Function(ํ์ฑํ ํจ์): ํ์ฑํ ํจ์์ธ "Sigmoid" ํจ์, "tanh(ํ์ดํผ๋ณผ๋ฆญ ํ์ ํธ)" ํจ์๋ ์ถ๋ ฅ๊ฐ์ ๋ฒ์๊ฐ ์ ํ๋์ด ์์ต๋๋ค.
- input(์ ๋ ฅ) ๊ฐ์ด ์ปค์ง๊ฑฐ๋ ์์์ง๋ฉด ํจ์์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ๋งค์ฐ ์์์ง๋๋ค. ์ด๋ ๊ฒ ์์ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ Network๋ฅผ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉด์ ๊ณฑํด์ง๋ฉด, Gradient(๊ธฐ์ธ๊ธฐ)๋ ์ ์ ๋ ์์์ง๋๋ค.
- ์ด๊ธฐ Weight(๊ฐ์ค์น) ์ค์ : Weight(๊ฐ์ค์น)๊ฐ ์๊ฒ ์ด๊ธฐํ ๋๋ฉด, Activation Function(ํ์ฑํ ํจ์)์์์ Gradient(๊ธฐ์ธ๊ธฐ)๋ ์์์ ธ์ Gradient Vanishing (๊ธฐ์ธ๊ธฐ ์์ค)์ด ๋ฐ์ํ ์๋ ์์ต๋๋ค.
- ๊น์ ๋คํธ์ํฌ์ ๊ตฌ์กฐ: ๋ง์ฝ ๋คํธ์ํฌ๊ฐ ๋งค์ฐ ๊น์ ๊ฒฝ์ฐ, Gradient(๊ธฐ์ธ๊ธฐ)๋ ๋ ๋ง์ layer(์ธต)๋ฅผ ๊ฑฐ์น๊ฒ ๋๊ณ , ๊ฐ layer(์ธต)๋ง๋ค Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ์ ์ ๋ ์์์ง ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ฉด Gradient Vanishing (๊ธฐ์ธ๊ธฐ ์์ค) ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ์ด๋ค๊ฒ ์์๊น์?
RNN์ ๊ตฌ์กฐ๋ฅผ ๋ด๊พธ๊ธฐ๋ ํ์ง๋ง, ๋ค๋ฅธ ์ฌ๋ฌ ๋ฐฉ๋ฒ๋ ์๋์ ๊ธฐ์ ํด ๋ณด์์ต๋๋ค.
- ReLU ํ์ฑํ ํจ์ ์ฌ์ฉ: ReLU(Rectified Linear Unit) ๋ฐ ๊ทธ ๋ณํ๋ค์ ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ Gradient(๊ธฐ์ธ๊ธฐ)๊ฐ ์ฌ๋ผ์ง์ง ์๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ด, ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์ ๋ฅผ ์ํ์ํฌ ์ ์์ต๋๋ค.
- ์ ์ ํ ๊ฐ์ค์น ์ด๊ธฐํ: He ์ด๊ธฐํ๋ Xavier(Glorot) ์ด๊ธฐํ์ ๊ฐ์ ์ ๋ต์ ์ฌ์ฉํ์ฌ ์ ์ ํ Weight(๊ฐ์ค์น) ์ค์ผ์ผ์ ์ค์ ํจ์ผ๋ก์จ Gradient Vanishing (๊ธฐ์ธ๊ธฐ ์์ค) ๋ฌธ์ ๋ฅผ ์ค์ผ ์ ์์ต๋๋ค.
- ๋ฐฐ์น ์ ๊ทํ(Batch Normalization): ๊ฐ layer(์ธต)์ ์ ๋ ฅ์ Normalization(์ ๊ทํ)ํ์ฌ ํ์ต ๊ณผ์ ์ ์์ ํ์ํค๊ณ Gradient Vanishing (๊ธฐ์ธ๊ธฐ ์์ค) ๋ฌธ์ ๋ฅผ ์ํํ ์ ์์ต๋๋ค.
- ์์ฐจ ์ฐ๊ฒฐ(Residual Connections): input(์ ๋ ฅ)์ ๋ช ์ธต์ ๊ฑด๋๋ฐ์ด output(์ถ๋ ฅ)์ ์ง์ ๋ํ๋ ๋ฐฉ์์ผ๋ก, ์ ๋ณด๊ฐ ๊น์ ์ธต์ผ๋ก loss(์์ค) ์์ด ์ ๋ฌ๋ ์ ์๋๋ก ํฉ๋๋ค. ResNet๊ณผ ๊ฐ์ ์ํคํ ์ฒ์์ ์ฌ์ฉ๋ฉ๋๋ค.
- ๊ฒ์ดํธ๊ฐ ์๋ ์ํ ๊ตฌ์กฐ: LSTM(Long Short-Term Memory)์ด๋ GRU(Gated Recurrent Unit)์ ๊ฐ์ ์ํ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๋ ๊ฒ์ดํธ๋ฅผ ์ฌ์ฉํด ์ ๋ณด ํ๋ฆ์ ์กฐ์ ํจ์ผ๋ก์จ Gradient Vanishing(๊ธฐ์ธ๊ธฐ ์์ค) ๋ฌธ์ ์ ๋์ฒํฉ๋๋ค.
Ps. ๊ทธ๋ฌ๋ฉด ๋ค์ ๊ธ์ LSTM, GRU ๋ชจ๋ธ์ ์ค๋ช ํ๋ ๊ธ์ ๋ค๊ณ ์ค๋๋ก ํ๊ฒ ์ต๋๋ค. ๋๋์ด ์ฐ๋ค์ LSTM์...
๋ฐ์ํ
'๐ฅ๏ธ Deep Learning' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DL] Neural Networks (์ ๊ฒฝ๋ง) (0) | 2024.03.17 |
---|---|
[DL] Perceptron (ํผ์ ํธ๋ก ) (0) | 2024.03.12 |
[DL] Matplotlib ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ฐํ์ฌ ์์๋ณด๊ธฐ (0) | 2024.03.05 |
[DL] Numpy & ํ๋ ฌ์ ๋ฐํ์ฌ ์์๋ณด๊ธฐ (0) | 2023.09.03 |
[DL] Preparations for Deep Learning - ์ค๋น์ฌํญ & Python ๊ธฐ๋ณธ๋ฌธ๋ฒ (0) | 2023.07.26 |