์์ ๋ชฉํ
ํน์ง์ ์ ์ด๋ ค๋ด๋ ๋ฅ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ฐ๊ณ ์ค์ ๋ฐ์ดํฐ์ ํ์ฉํด์ ์ทจ์์จ, ์ฃผ๊ฐ ๋ฑ์ ์์ธกํ๋ค.
- ๋ฅ๋ฌ๋์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ feature extraction ์ด๋ค.
์ด๋ฌํ ์ฅ์ ์ ์์ธก ์์คํ ์ ์ ์ฉ์ ํ๋๋!
ํ๋ผ๋ฏธํฐ ํ๋
ํ๋ผ๋ฏธํฐ์ ๊ฐ๋
⇒ ์ต์ ์ ๋ชจ๋ธ ๊ตฌํ์ ์ํด ํ์ต๋ฅ , ๋ฐฐ์นํฌ๊ธฐ, ํ๋ จ๋ฐ๋ณตํ์, ๊ฐ์ค์น ์ด๊ธฐํ๋ฐฉ๋ฒ ๋ฑ ์ฌ์ฉ์๊ฐ ์ค์ ํ๋ ๋ณ์
⇒ ์ผ๋ฐ์ ์ผ๋ก Parameter Tuning ์ด๋ผ๊ณ ํ์ง๋ง
์ค์ ๋ก ํ๋ผ๋ฉํฐ๋ ๋ชจ๋ธ์ด ํ์ตํ๋ ๋ณ์๋ก Weight, Bias๋ฑ์ด๊ณ ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ์ค์ ํ๋ ๋ณ์๋ค์ ํ์ดํผํ๋ผ๋ฉํฐ
ํ๋ผ๋ฏธํฐ๋ ๋ชจ๋ธ์ด ์์์ ํ์ตํ๋ ์์ด๋ค์ด๊ณ
์ฐ๋ฆฌ๋ค์ ์ด๋ค ํ์ดํผํ๋ผ๋ฏธํฐ๋ฅผ ์ด๋ค์์ผ๋ก ๋ณํํ๋ฉด ๋๋์ง ์์๋ณด์๋ค.
๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํ์ดํผํ๋ผ๋ฏธํฐ๋?
1) ์๋์ธต ์์ ์๋ ๋ ธ๋ ์
- input, output layer ์ฌ์ด์ ์๋์ธต์ ๋ฃ์ด์ ์ ํ๋ชจ๋ธ์ด ์๋ ๋น์ ํ๋ชจ๋ธ์ด ๊ฐ๋ฅํ๊ฒ๋ ๋ณต์ก๋๋ฅผ ๋์ผ ์ ์๋ค๊ณ ํ์๋ค.
- Hidden Layer์ ๋ ธ๋์ซ์๋ Input layer ์ซ์๋ณด๋ค ํฐ ๊ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ๋ ํจ๊ณผ์ ์ด๋ค.
- ํ์ง๋ง ๋๋ฌด ๋ง๊ฑฐ๋ ์ ์ ๋ ธ๋, layer๋ Overfitting, Underfitting ๋ฑ์ ๋ฌธ์ ๊ฐ ์์ ์ ์๋ค.
- overfitting: ์๊ฐ์ด๋ ๋ฆฌ์์ค๊ฐ ๋ง์ด ์๋น๋ ์ ์๋ค.
- Underfitting: ๋ณต์ก๋๊ฐ ๋ฎ์์ง๊ณ , ์๋๋ ๋นจ๋ผ์ง์ง๋ง ์ ๋๋ก ํ์ต๋์ง ์์ ์ ์๋ค.
Python ์์
# ์ ์ธ - layer sequence๋ผ๋ ๋ชจ๋ธ์ ์๋๋ค.
multi_step_model = tf.keras.models.Sequential()
# ๊ฐ layer์ ๋
ธ๋ ์ - 32
# ์ ์ธ - LSTM, LSTM, Dense layer ์ด๋ ๊ฒ ์ธ๊ฐ์ง ์ธต์ผ๋ก ๊ตฌ์ฑํ๊ฒ ๋ค.
multi_step_model.add(tf.keras.layers.LSTM(32,
return_sequences=True,
input_shape=x_train_multi.shape[-2:]))
multi_step_model.add(tf.keras.layers.LSTM(16, activation='relu'))
multi_step_model.add(tf.keras.layers.Dense(72))
- Dense layer๋ Hidden layer๋ผ๊ณ ์๊ฐํด๋ ๋ฌด๋ฐฉํ๋ค.
2) ๋ฐฐ์น ์ฌ์ด์ฆ
- ๋ชจ๋ธํ์ต์ ํจ์จ์ ์ํด ์ผ์ ํ ํฌ๊ธฐ๋ก ๋๋ ํ ๋ฒ์ batch๋ง๋ค ์ฃผ๋ ๋ฐ์ดํฐ ์ํ์ size
- ์ ์ฒด Dataset์ ํ๋ฒ์ ํ์ตํ๊ธฐ์ ํ๋์จ์ด ์์คํ ์ ๋ถ๋ด/ํ๊ณ๊ฐ ๋๊ฑฐ๋ ์๊ฐ๋ฌธ์ ๊ฐ ์์๋ ⇒์ผ์ ํ ํฌ๊ธฐ๋ก ๋๋์ด์ ํ์ต
- Total Data=Batch Size * Mini Batch$
- ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ, epoch ์ ๋ฑ์ ๊ณ ๋ คํด์ ์ค์
# ์ผ๋ฐ์ ์ผ๋ก 256์ผ๋ก ๋ฐฐ์น์ฌ์ด์ฆ ์ค์
# ํ ํ๋ฐ์ดํฐ ์ซ์๊ฐ ์ ๋ค - 64๋ก ์กฐ์
BATCH_SIZE = 256
BUFFER_SIZE = 10000
# ๋ฐฐ์น ์ฌ์ด์ฆ๋ณ๋ก ์
ํํด์ ๋ฐ์ดํฐ๋ฅผ ๋๋๊ฒ ๋ค.
# ๋ฐฐ์น ์ค์ ํ ๊ฒ์ด input ๊ฐ์ผ๋ก ๋ค์ด๊ฐ๋ค.
train_univariate = tf.data.Dataset.from_tensor_slices((x_train_uni, y_train_uni))
train_univariate = train_univariate.cache().shuffle(BUFFER_SIZE).batch(BATCH_SIZE).repeat()
val_univariate = tf.data.Dataset.from_tensor_slices((x_val_uni, y_val_uni))
val_univariate = val_univariate.batch(BATCH_SIZE).repeat()
3) ํ๋ จ๋ฐ๋ณตํ์(Epoch) ์ํฌํฌ
- ํ์ต์ ๋ฐ๋ณต ์ซ์๋ฅผ ๊ฒฐ์ ํ๋ ๋ณ์
- ์ ์ฒด Dataset์ 1ํ ํ์ต 1 epoch=BatchSize*Iteration
- ํ์ต ํจ์จ์ด ๋จ์ด์ง๋ ์์ ์ ์ ์ ํ ํ๋จ
4) ํ์ฑํ ํจ์
- ๊ฐ๋ณ hidden unit์ด๋ผ๋ neuron์ ๋ค์ด์ค๋ ์ ๋ ฅ์ ํธ์ ์ด ํฉ์ ์ถ๋ ฅ ์ ํธ๋ก ๋ณํ์์ผ์ผํจ
- ์ด ๋ ๋ชจ๋ธ์ ๋ณต์ก๋๋ฅผ ๋์ด๊ธฐ ์ํด์ ์ ํ ํจ์๊ฐ ์๋ ๋น์ ํ ํจ์๋ฅผ ํต๊ณผ์์ผ์ ์ ๋ฌ
- ๊ฐ ํจ์ ํน์ง - ์ํ์ ์ธ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋ณ๊ฒ๋ง ์ฝ๊ณ ๋์ด๊ฐ๊ธฐ
ํ์ด์ฌ ์์
multi_step_model.add(tf.keras.layers.LSTM(16, activation='relu'))
์ฌ๊ธฐ์๋ถํฐ ํ์๋ ์๋์ง๋ง ํ์ต์ ํจ์จ์ฑ์ ๋์ด๊ธฐ์ํด ๊ณ ๋ คํ ๋ถ๋ถ!
๋ฐฐ์น์ ๊ทํ(Batch Normalization)
์ ๊ทํ๊ฐ ํ์ํ ์ด์ - ํ์ตํ๊ณ ์ ํ๋ ๋ชจํ์ ๋น์ ํ ๋ชจ๋ธ์์์ ๊ฐ์ฅ ์ต์ ์ ์ ์ฐพ๋ ๊ณผ์ ์ด๋ค.
- ํ์ต์ ๋ ๋นจ๋ฆฌํ๊ธฐ์ํด ⇒ Local Optimum ๋ฌธ์ ์ ๋น ์ง์ง ์๊ธฐ์ํด
- ์ต์ ์ ์ ์ฐพ์์ผ ํ๋๋ฐ ์ ์ฒด์ ์ธ ์ดํด๊ฐ ์์ผ๋ฉด Global Optimum์ ์ฐพ์ง ๋ชปํ๊ณ ๋ก์ปฌ์ ๋จธ๋ฌด๋ฅผ ์ ์์
- ์ด๋ด๋ ์ ๊ทํ๋ฅผ ํตํด ์ข๋ Local Optimum์์ ์ฝ๊ฒ ๋น ์ ธ์ฌ ์ ์๊ฒ ํด์ ํ์ต์ ๊ฐ์ํ ์ํฌ์ ์์
Local Optimum ๋ฌธ์ ๋ ๊ณจ์ง๊ธฐ๊ฐ ์ฌ๋ฌ ๊ฐ๊ฐ ์๋๋ฐ ๊ฐ์ฅ ๊น์ง ์๋ ๊ณจ์ง๊ธฐ์ ์์์๋ ํ์ต์ด ๋ฉ์ถฐ๋ฒ๋ฆฌ๋ ๋ฌธ์ ์ด๋ค
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ๊ณจ์ง๊ธฐ ๊ธฐ์ธ๊ธฐ๋ค์ ์ฐ๊ทธ๋ฌ๋จ๋ ค์, ์๋งํ๊ฒ ๋ง๋ค์ด์ ์ฌ๊ธฐ๋ณด๋ค ๋ ์ข์ ๊ณณ์ด ์์ ๊ฒ ๊ฐ์๋ฐ?ํ๊ณ ์์ ๊ณจ์ง๊ธฐ์์ ๋์ฌ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋๋ฐ ์ด๊ฒ์ด Nomaliztion์ ๋ฐฉ๋ฒ์ด๋ค.
๊ทธ๋์ ๋ฐฐ์น์ ๊ทํ๊ฐ ๋ญ๋ฐ!
๋ง๊ทธ๋๋ก ๋ฐฐ์น(๋ฉ์ด๋ฆฌ์ง ๋ฐ์ดํฐ)๋ฅผ ์ ๊ทํ ์์ผ์ค๋ค๋ ๊ฒ์ด๋ค.
์ํ์ ์ผ๋ก input์ ํ๊ท 0, ํ์คํธ์ฐจ 1์ธ ๋ถํฌ๋ก normalize ์์ผ์ค๋ค.
- Mini-batch ์ Feature ๋ณ ํ๊ท ๊ณผ ๋ถ์ฐ์ ๊ตฌํด์ ํ์ค์ ๊ท๋ถํฌ๋ฅผ ๊ฐ ๋ ธ๋๋ณ๋ก ์ํํ๋ค.
- ํ์ต์ ํจ์จ์ ๋์ด๊ธฐ ์ํด ๋์
- ํ์ต์๋๊ฐ ๊ฐ์
- ์ด๊ธฐ๊ฐ ์ค์ ์ ์์กด์ฑ์ด ์ ์ด์ง (ํ์ตํ ๋๋ง๋ค ์ถ๋ ฅ๊ฐ์ ์ ๊ทํํด์)
- ๊ณผ์ ํฉ ์ํ(overfitting)์ ์ค์ผ ์ ์์
- Gradient Vanishing ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ
- ๋จ์
- ๋ฐฐ์น์ฌ์ด์ฆ์ ์์กด์ ์ ⇒ ๋๋ฌด์์ ๋ฐฐ์น์ฌ์ด์ฆ์์๋ ํ์ต์ด ์ ์๋จ
- RNN์ ์ ์ฉํ๊ธฐ ์ด๋ ค์ ( RNN- sequential ํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ด๊ฐ๊ธฐ ๋๋ฌธ)
⇒ RNN์ ๊ฐ ์์ ๋ง๋ค ๋ค๋ฅธ ๋ถํฌ ํต๊ณ์น๋ฅผ ๊ฐ์ง๊ธฐ๋๋ฌธ์ ์ ์ฉํ๊ธฐ ์ด๋ ค์
- ํ์ฑํ ํจ์์ ํ์ฑํ ๊ฐ ํน์ ์ถ๋ ฅ๊ฐ์ ์ ๊ทํ ํ๋ ๊ณผ์
- Activation Function ์ /ํ์ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ ๊ฒฝ๋ง์ ๊ฐ Layer์์ ๋ฐ์ดํฐ์ ๋ถํฌ๋ฅผ ์ ๊ทํ ํ๋ ๊ณผ์
- ์ ์ฒดdata์ ๋ํ ํ๊ท ๋ถ์ฐ๊ณผ ๊ฐ์ด ๋ฌ๋ผ์ง ์ ์์
- ์ ๋ ฅ๋ถํฌ๊ฐ ์ผ์ ํด์ง๊ณ ํ์ต๋ฅ ์ ๊ฐ์ ์ํค๋ ํจ๊ณผ๊ฐ ์์
์ธต ์ ๊ทํ
๋ฐฐ์น ์ ๊ทํ: ์ํ๋งํ๋ ๋ฐฐ์น๋ค ์์ฒด์ ์ ๊ทํ (๋ค์ด์ค๋ ๋ฐฐ์น๋ค๋ง๋ค ์ ๊ทํ์์ผ์ค)
์ธต ์ ๊ทํ: ์ธต ๋จ์์ ์ ๊ทํ(๋ ์ด์ด์ ๋ค์ด์ค๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ํ๊ท , ํ์คํธ์ฐจ๋ฅผ ๊ตฌํด์ ์ฐ๊ทธ๋ฌํธ๋ฆฐ๋ค)
- layer ๋ณ๋ก ์ผ์ด๋๋ค. ๊ฐ ๋ฐฐ์น์ ์๋ ๋ชจ๋ feature๋ค์ ํ๊ท ๊ณผ ํ์คํธ์ฐจ๋ฅผ ๊ตฌํ๋ ๊ฒ์ด๋ค.
- ๊ฐ hidden node์ feature ๋ณ ๋ถ์ฐ๊ณผ ํ๊ท ์ด ์๋ layer ์ ์ฒด์ ํ๊ท ๊ณผ ๋ถ์ฐ์ Normalize
- RNN ์ ์ฉ์ด ํ๋ค๋ค, ๋ฐฐ์น ์ฌ์ด์ฆ์ ์ํฅ์ด ํฌ๋ค ๋ผ๋ ๋จ์ ์ ๋ณด์
์ฌ์ฉ์์
layer.laterNormalization ํด์ ํ์ธต ์์์ฃผ๋ฉด ํจํค์ง๊ฐ ์์์ ๋ ธ๋ฉ๋ผ์ด์ฆ ํด์ค๋ค.
'๐ฅ > AI ๐ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[2์ฃผ์ฐจ] ํ๋ผ๋ฉํฐ ํ๋2 (0) | 2021.10.06 |
---|---|
[1์ฃผ์ฐจ] ์์ฝ & ๋ง๋ฌด๋ฆฌ (0) | 2021.09.29 |
[1์ฃผ์ฐจ] LSTM (0) | 2021.09.29 |
[1์ฃผ์ฐจ] ๋ฅ๋ฌ๋ ๊ธฐ์ด๋ชจ๋ธ : MLP (0) | 2021.09.29 |
[1์ฃผ์ฐจ] ์์ ๋ชฉํ (0) | 2021.09.28 |