๐ ์ํค๋ ์ค : https://wikidocs.net/35476 ์ ๋ฅ๋ฌ๋ ๊ฐ์ ํํธ ๊ณต๋ถํ ๊ฒ ์ ๋ฆฌ (์ด๋ฏธ์ง ์ถ์ฒ๋ ๋ชจ๋ ์ํค๋ ์ค ํํ์ด์ง)
๐ ์ํํธ๋งฅ์ค ํ๊ท
- ๋ก์ง์คํฑํ๊ท : ์ด์ง ๋ถ๋ฅ ๋ฌธ์ VS ์ํํธ๋งฅ์ค ํ๊ท : ๋ค์ค ํด๋์ค ๋ถ๋ฅ ๋ฌธ์
- ๋ํ์ ์ธ ๋ค์ค ํด๋์ค ๋ถ๋ฅ ์์ : iris ๋ถ๊ฝ ํ์ข ๋ถ๋ฅ (k=3)
- Softmax function
- ํด๋์ค์ ๊ฐ์๊ฐ k ๊ฐ์ผ ๋, k ์ฐจ์์ ๋ฒกํฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ๊ฐ ํด๋์ค์ ๋ํ ํ๋ฅ ์ ์ถ์ ํ๋ค.
- zi : k์ฐจ์์ ๋ฒกํฐ์์ i ๋ฒ์งธ ์์
- pi : i ๋ฒ์งธ ํด๋์ค๊ฐ ์ ๋ต์ผ ํ๋ฅ
k ์ฐจ์์ ๋ฒกํฐ๋ฅผ ์ ๋ ฅ → ๋ฒกํฐ ์์ ๊ฐ์ 0๊ณผ 1 ์ฌ์ด์ ๊ฐ์ผ๋ก ๋ณ๊ฒฝ → ๋ค์ k ์ฐจ์์ ๋ฒกํฐ๋ฅผ ๋ฐํ
๐ ์ํ ๋ฐ์ดํฐ ๋ฒกํฐ(4์ฐจ์) ์ ์ํํธ๋งฅ์ค ํจ์์ ์ ๋ ฅ๋ฒกํฐ 3์ฐจ์์ผ๋ก ์ถ์ํ๋ ๋ฐฉ๋ฒ?
๐ ๊ฐ์ค์น ๊ณฑ์ ์งํ : ์ค์ฐจ๋ฅผ ์ต์ํํ๋ ๊ฐ์ค์น ๊ฐ์ผ๋ก update ํ๋ฉด์
๐ ์ค์ฐจ?
๐ ์ค์ฐจ = (์์ธก๊ฐ - ์ค์ ๊ฐ) ์ ์ฐจ์ด
๐ ์ค์ ๊ฐ์ ํํ : ์ํซ์ธ์ฝ๋ฉ ๋ฒกํฐ
โ ์ ์์ธ์ฝ๋ฉ์ด ์๋ ์ํซ ์ธ์ฝ๋ฉ์ ์ฌ์ฉํ๋ ์ด์ : ์-ํซ ์ธ์ฝ๋ฉ์ ๋ถ๋ฅ ๋ฌธ์ ๋ชจ๋ ํด๋์ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ท ๋ฑํ๊ฒ ๋ถ๋ฐฐ → ์ค์ฐจ๋ ๊ท ๋ฑํ๊ฒ ๊ณ์ฐ๋จ. BUT ์ํซ์ธ์ฝ๋ฉ์ ๊ฐ ํด๋์ค๋ฅผ ๋ฌด์์์ฑ ๊ด๊ณ๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ๋จ์ด์ '์ ์ฌ์ฑ'์ ๊ตฌํ๊ธฐ ์ด๋ ต๋ค๋ ๋จ์ ์ด ์กด์ฌ
๐ ์ค์ฐจ ๊ณ์ฐ ๋ฐฉ๋ฒ?
๐ ๋น์ฉํจ์๋ก ํฌ๋ก์ค ์ํธ๋กํผ ํจ์๋ฅผ ์ฌ์ฉ
๐ ํฌ๋ก์ค ์ํธ๋กํผ ํจ์?
º y : ์ค์ ๊ฐ, k : ํด๋์ค์ ๊ฐ์
º yj : ์ค์ ๊ฐ ์-ํซ ๋ฒกํฐ์ j๋ฒ์งธ ์ธ๋ฑ์ค
º pj : ์ํ ๋ฐ์ดํฐ๊ฐ j ๋ฒ์งธ ํด๋์ค์ผ ํ๋ฅ
º cost ๋ฅผ ์ต์ํํ๋ ๋ฐฉํฅ์ผ๋ก ํ์ตํ๋ค.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# iris ๋ถ๊ฝ ํ์ข
์์ : 3๊ฐ class, 4๊ฐ feautures
model = Sequential()
model.add(Dense(3, input_dim=4, activation='softmax'))
# ์
๋ ฅ ์ฐจ์ = 4, ์ถ๋ ฅ ์ฐจ์ = 3, ํ์ฑํ ํจ์ = ์ํํธ๋งฅ์ค ํจ์
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
# ์ค์ฐจํจ์ = ํฌ๋ก์ค์ํธ๋กํผ ํจ์
# ์ต์ ํ = ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ผ์ข
์ธ adam ์ ์ฌ์ฉ
history = model.fit(X_train, y_train, epochs=200, batch_size=1, validation_data=(X_test, y_test))
# ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํ ํ๋ จ ํ์ : epoch = 200
print("\n ํ
์คํธ ์ ํ๋: %.4f" % (model.evaluate(X_test, y_test)[1]))
# ํ
์คํธ ์ ํ๋: 0.9667
๐ ํผ์ ํธ๋ก
- ๋ค์์ ์ ๋ ฅ์ผ๋ก๋ถํฐ ํ๋์ ๊ฒฐ๊ณผ๋ฅผ ๋ด๋ณด๋ด๋ ์๊ณ ๋ฆฌ์ฆ
- ๊ฐ์ค์น์ ๊ฐ์ด ํฌ๋ฉด ํด์๋ก ํด๋น ์ ๋ ฅ๊ฐ์ด ์ค์ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ๊ฐ ์ ๋ ฅ๊ฐ์ด ๊ฐ์ค์น์ ๊ณฑํด์ ธ ๋ด๋ฐ์ ์ ์ก → ๊ฐ ์ ๋ ฅ๊ฐ๊ณผ ๊ทธ์ ํด๋น๋๋ ๊ฐ์ค์น์ ๊ณฑ์ ์ ์ฒด ํฉ์ด ์๊ณ์น(threshold)๋ฅผ ๋์ผ๋ฉด ์ถ๋ ฅ ์ ํธ๋ก์ 1์ ์ถ๋ ฅํ๊ณ , ๊ทธ๋ ์ง ์์ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅ ๐ ๊ณ๋จํจ์ (ํ์ฑํ ํจ์)
- ์๊ณ์น๋ฅผ ์ข๋ณ์ผ๋ก ๋๊ฒจ์ ํธํฅ b ๋ก ํํํ๋ค. ํธํฅ b ๋ํ ๋ฅ๋ฌ๋์ด ์ต์ ์ ๊ฐ์ ์ฐพ์์ผํ ๋ณ์ ์ค ํ๋์ด๋ค.
- ํ์ฑํ ํจ์ : ๋ด๋ฐ์์ ์ถ๋ ฅ๊ฐ์ ๋ณ๊ฒฝ ์ํค๋ ํจ์ (๊ณ๋จํจ์, ์๊ทธ๋ชจ์ด๋ ํจ์, ์ํํธ๋งฅ์ค ํจ์ ๋ฑ)
1. ๋จ์ธต ํผ์ ํธ๋ก
- XOR ๋ฌธ์ : ์๋ก ๋ค๋ฅธ ๊ฐ์ผ ๋๋ง 1, ๊ฐ์ ๊ฐ์ ๊ฐ์ง๋ฉด 0์ ์ถ๋ ฅ๊ฐ์ ๊ฐ์ง๋ XOR ๊ฒ์ดํธ์์, ์ง์ ํ๋๋ก ํ์์ ์๊ณผ ๊ฒ์์ ์์ ๋๋๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋ฌธ์ .
2. ๋ค์ธต ํผ์ ํธ๋ก MLP
- ์ค๊ฐ์ ์ธต (์๋์ธต) ์ ๋ ์ถ๊ฐํ ํผ์ ํธ๋ก ๋ชจ๋ธ
- ์๋์ ๊ฐ์ด ์๋์ธต์ด 2๊ฐ ์ด์์ธ ์ ๊ฒฝ๋ง์ ์ฌ์ธต ์ ๊ฒฝ๋ง DNN ์ด๋ผ๊ณ ํ๋ค.
โญ ๋ฅ๋ฌ๋ ํค์๋ : ํ๋ จ(training), ์์คํจ์(Loss function), ์ตํฐ๋ง์ด์ (Optimizer)
๐ ์ธ๊ณต์ ๊ฒฝ๋ง
1. ํผ๋ ํฌ์๋ ์ ๊ฒฝ๋ง FFNN
- ์ค์ง ์ ๋ ฅ์ธต์์ ์ถ๋ ฅ์ธต ๋ฐฉํฅ์ผ๋ก ์ฐ์ฐ์ด ์ ๊ฐ๋๋ ์ ๊ฒฝ๋ง
- ↔ ์ํ ์ ๊ฒฝ๋ง RNN : ์๋์ธต, ์ถ๋ ฅ์ธต ์ฌ์ด์ ๋ฐฉํฅ์ฑ์ด ์์ ๋ก์ด ์ ๊ฒฝ๋ง ๋ชจ๋ธ
2. ์ ๊ฒฐํฉ์ธต (Fully-connected layer, FC, Dense Layer)
- ์ด๋ค ์ธต์ ๋ชจ๋ ๋ด๋ฐ์ด ์ด์ ์ธต์ ๋ชจ๋ ๋ด๋ฐ๊ณผ ์ฐ๊ฒฐ๋ผ ์๋ ์ธต์ผ๋ก FC ํน์ Dense layer ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ์ผ๋ผ์ค์์๋ ๋ฐ์ง์ธต์ ๊ตฌํํ ๋ Dense() ํจ์๋ฅผ ์ฌ์ฉํ๋ค.
3. ํ์ฑํ ํจ์ (Activation Function)
- ์๋์ธต๊ณผ ์ถ๋ ฅ์ธต์ ๋ด๋ฐ์์ ์ถ๋ ฅ๊ฐ์ ๊ฒฐ์ ํ๋ ํจ์
- ํ์ฑํ ํจ์์ ํน์ง : ๋น์ ํ ํจ์
- ์ ํ ํจ์ : ์ถ๋ ฅ์ด ์ ๋ ฅ์ ์์๋ฐฐ๋งํผ ๋ณํ๋ ํจ์๋ก ์ง์ ํํ๋ฅผ ๋๋ค.
- ๋น์ ํ ํจ์ : ์ง์ 1๊ฐ๋ก ๊ทธ๋ฆด ์ ์๋ ํจ์. ์ธ๊ณต์ ๊ฒฝ๋ง์์๋ ์๋์ธต์ ์์์ผ๋๊ธฐ ๋๋ฌธ์ ํ์ฑํํจ์๋ ๋ฐ๋์ ๋น์ ํํจ์์ฌ์ผ ํ๋ค. ์ ํํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ์๋ฌด๋ฆฌ ์ธต์ ๊น๊ฒ ํ๋๋ผ๋ ๊ฒฐ๋ก ์ ์ผ๋ก ์ ํ(1์ธต)์ด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ ํ ํ์ฑํ ํจ์๋ฅผ ์ฌ๋ฌ๊ฒน ๊ฒน์ฒ๋ ํํํ ์ ์๋ ์ ๋ณด๋ '์ ํ์ ๋ณด' ๋ฟ์ด๋ค.
(1) ๊ณ๋จํจ์
- ๊ฑฐ์ ์ฌ์ฉ๋์ง ์์ง๋ง ์ธ๊ณต์ ๊ฒฝ๋ง์ ์ฒ์ ๋ฐฐ์ธ๋ ์ ํ๊ฒ ๋๋ ํ์ฑํ ํจ์
(2) ์๊ทธ๋ชจ์ด๋ ํจ์
โญ ์ธ๊ณต์ ๊ฒฝ๋ง ํ์ต ๊ณผ์
- ์์ ํ(forward propagation) ์ฐ์ฐ์ ํตํด ์์ธก๊ฐ ๊ณ์ฐ → ์ค์ฐจ (์์ธก๊ฐ - ์ค์ ๊ฐ) ๋ฅผ ์์คํจ์๋ก ๊ณ์ฐ → ์์ค(์ค์ฐจ)์ ๋ฏธ๋ถ์ ํตํด ๊ธฐ์ธ๊ธฐ(gradient) ๋ฅผ ๊ตฌํจ → ์ญ์ ํ(backpropagation) ์ํ : ์ถ๋ ฅ์ธต์์ ์ ๋ ฅ์ธต ๋ฐฉํฅ์ผ๋ก ๊ฐ์ค์น์ ํธํฅ์ ์ ๋ฐ์ดํธ by ๊ฒฝ์ฌํ๊ฐ๋ฒ
๐ ์๊ทธ๋ชจ์ด๋์ ๋ฌธ์ ๋ ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ ๋ ๋ฐ์
- ์๊ทธ๋ชจ์ด๋ ํจ์๋ฅผ ๋ฏธ๋ถํ์ ๋ ๋์ถ ๊ฐ๋ฅํ ๋ฏธ๋ถ ๊ฐ์ ์ ๋๋จ์์ ์ต์๊ฐ์ผ๋ก 0, ์ต๋๊ฐ์ผ๋ก 0.25๊ฐ ๋์จ๋ค. ์ฆ, 0.25์ดํ์ ๊ฐ์ด ๋ฏธ๋ถ๊ฐ์ผ๋ก ๋์ถ๋๊ธฐ ๋๋ฌธ์ ์๊ทธ๋ชจ์ด๋ ํจ์๋ฅผ ํ์ฑํํจ์๋ก ํ์ฌ ๊ณ์ ์ธต์ ์์ผ๋ฉด ๊ฐ์ค์น์ ํธํฅ ์ ๋ฐ์ดํธ ๊ณผ์ (์ญ์ ํ ๊ณผ์ ) ์์ 0์ ๊ฐ๊น์ด ๊ฐ์ด ๋์ ํด์ ๊ณฑํด์ง๊ฒ ๋๋ฏ๋ก ์๋จ์ ์์นํ ๋ ธ๋์๋ ๊ธฐ์ธ๊ธฐ(๋ฏธ๋ถ๊ฐ) ๊ฐ ์ ์ ๋ฌ๋์ง ์๊ฒ ๋๋ค ๐ ๊ธฐ์ธ๊ธฐ ์์ค ๋ฌธ์
- ์์ ๊ฐ์ ๋ฌธ์ ์ ์ผ๋ก ์ธํด ์๊ทธ๋ชจ์ด๋ ํจ์์ ์๋์ธต์์์ ์ฌ์ฉ์ ์ง์๋๋ค. ์ฃผ๋ก ์ด์ง๋ถ๋ฅ๋ฅผ ์ํด '์ถ๋ ฅ์ธต'์์๋ง ์ฌ์ฉ๋๋ค.
(3) ํ์ดํผ๋ณผ๋ฆญํ์ ํธ ํจ์
- ์ ๋ ฅ๊ฐ์ -1๊ณผ 1 ์ฌ์ด์ ๊ฐ์ผ๋ก ๋ณํํ๋ ํจ์
- ์ด ์ญ์๋ -1๊ณผ 1์ ๊ฐ๊น์ด ์ถ๋ ฅ๊ฐ์ด ๋์ฌ๋ ๋ฏธ๋ถ ๊ณผ์ ์์ ์์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ๊ธด ํ๋, ๋ฏธ๋ถ์ ์ต๋๊ฐ์ 1๋ก, 0.25๋ณด๋ค๋ ํฌ๋ค. ์ ๋ฐ์ ์ผ๋ก ์๊ทธ๋ชจ์ด๋ ํจ์๋ณด๋จ ํฐ ๋ฏธ๋ถ๊ฐ์ด ๋์ค๋ฏ๋ก ๊ธฐ์ธ๊ธฐ ์์ค์ด ์ ์ ํธ์ด๋ฉฐ, ์๋์ธต์์ ์๊ทธ๋ชจ์ด๋ ํจ์๋ณด๋ค๋ ์ ํธ๋๋ ํจ์์ด๋ค.
(4) ๋ ๋ฃจ ํจ์
- ์ธ๊ณต์ ๊ฒฝ๋ง์ ์๋์ธต์์ ๊ฐ์ฅ ์ธ๊ธฐ์๋ ํจ์!
- ์์๋ฅผ ์ ๋ ฅํ๋ฉด 0์ ์ถ๋ ฅํ๊ณ ์์๋ฅผ ์ ๋ ฅํ๋ฉด ์ ๋ ฅ๊ฐ์ ๊ทธ๋๋ก ๋ฐํํ๋ค. ์ถ๋ ฅ๊ฐ์ด ํน์ ์์ ๊ฐ์ ์๋ ดํ์ง ์๋๋ค. 0 ์ด์์ ์ ๋ ฅ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฏธ๋ถ ๊ฐ์ด ํญ์ 1์ด๊ธฐ ๋๋ฌธ์, ๊น์ ์ ๊ฒฝ๋ง์ ์๋์ธต์์ ํจ์ฌ ๋ ์ ์๋ํ๋ค.
- ์ฐ์ฐ์๋๋ ๋น ๋ฅด๋ค.
- ๋ฌธ์ ์ : ์ ๋ ฅ๊ฐ์ด ์์๋ฉด ๋ฏธ๋ถ๊ฐ๋ 0 ์ด ๋๋ ๊ฒ๊ณผ, ๊ฐ์ด ์์์ธ ๋ด๋ฐ์ ๋ค์ ํ์ํ๋ ๊ฒ์ด ์ด๋ ต๋ค (dying ReLU)
(5) ๋ฆฌํค ๋ ๋ฃจ
- dying ReLU ๋ฌธ์ ๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋ณํํจ์
- ์ ๋ ฅ๊ฐ์ด ์์์ผ ๊ฒฝ์ฐ์ 0์ด ์๋๋ผ 0.001๊ณผ ๊ฐ์ ๋งค์ฐ ์์ ์๋ฅผ ๋ฐํํ๋๋ก ์ค๊ณ
(6) ์ํํธ๋งฅ์ค ํจ์
- ์ถ๋ ฅ์ธต์์ ์์ฃผ ์ฌ์ฉ๋๋ ํจ์ (์๋์ธต์์๋ ๋ณ๋ก ์ฐ์ด์ง ์์) ๋ก ๋ค์ค ํด๋์ค ๋ถ๋ฅ ๋ฌธ์ ์ ์ฌ์ฉํ๋ค.
4. ํ๋ ฌ๊ณฑ ์ฐ์ฐ
- ์ธ๊ณต์ ๊ฒฝ๋ง์ ํ๋ ฌ๊ณฑ์ ์ฌ์ฉํ๋ฉด ๋ณ๋ ฌ ์ฐ์ฐ๋ ๊ฐ๋ฅํ๋ค.
๐ ์ธ๊ณต ์ ๊ฒฝ๋ง์ 4๊ฐ์ ์ํ์ ๋์์ ์ฒ๋ฆฌํ๊ณ ์์ง๋ง ํ์ต ๊ฐ๋ฅํ ๋งค๊ฐ๋ณ์์ ์๋ ์ฌ์ ํ 8๊ฐ๋ผ๋์ !
์ด๋ ๊ฒ ๋ค์์ ์ํ์ ๋์์ ์ฒ๋ฆฌํ๋ ๊ฒ์ '๋ฐฐ์น ์ฐ์ฐ' ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
์์ ์ธ๊ณต์ ๊ฒฝ๋ง์ ์ฝ๋๋ก ๊ตฌํํ๋ฉด ์๋์ ๊ฐ๋ค.
์
๋ ฅ์ธต : 4๊ฐ์ ์
๋ ฅ๊ณผ 8๊ฐ์ ์ถ๋ ฅ
์๋์ธต1 : 8๊ฐ์ ์
๋ ฅ๊ณผ 8๊ฐ์ ์ถ๋ ฅ
์๋์ธต2 : 8๊ฐ์ ์
๋ ฅ๊ณผ 3๊ฐ์ ์ถ๋ ฅ
์ถ๋ ฅ์ธต : 3๊ฐ์ ์
๋ ฅ๊ณผ 3๊ฐ์ ์ถ๋ ฅ
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
model = Sequential()
# 4๊ฐ์ ์
๋ ฅ๊ณผ 8๊ฐ์ ์ถ๋ ฅ
model.add(Dense(8, input_dim=4, activation='relu'))
# ์ด์ด์ 8๊ฐ์ ์ถ๋ ฅ
model.add(Dense(8, activation='relu'))
# ์ด์ด์ 3๊ฐ์ ์ถ๋ ฅ
model.add(Dense(3, activation='softmax'))
๐ ๋ฅ๋ฌ๋ ํ์ต ๋ฐฉ๋ฒ - ์ญ์ ํ ์ดํดํ๊ธฐ
โญ ๋ฅ๋ฌ๋ ํ์ต ํคํฌ์ธํธ : ์์คํจ์, ์ตํฐ๋ง์ด์ , ์ํฌํฌ
1. ์์คํจ์
- ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ์ ์ฐจ์ด (= ์ค์ฐจ) ๋ฅผ ์์นํํด์ฃผ๋ ํจ์
- ์ค์ฐจ์ ์์คํจ์์ ๊ฐ์ ๋น๋ก๊ด๊ณ
- ํ๊ท๋ MSE, ๋ถ๋ฅ๋ ํฌ๋ก์ค ์ํธ๋กํผ๋ฅผ ์์คํจ์๋ก (์ฃผ๋ก) ์ฌ์ฉํ๋ค.
# 1.(ํ๊ท) MSE
model.compile(optimizer='adam', loss='mse', metrics=['mse'])
# 2.(๋ถ๋ฅ) Binary Cross-Entropy
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['acc'])
# 3.(๋ถ๋ฅ) Categorical cross entropy
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['acc'])
# 4. (๋ถ๋ฅ) ์ํซ์ธ์ฝ๋ฉ์ด ์๋ ์ ์ ์ธ์ฝ๋ฉ์ผ๋ก ๋ถ๋ฅ ์ํํ๊ณ ์ ํ๋ค๋ฉด
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['acc'])
2. ๊ฒฝ์ฌํ๊ฐ๋ฒ _ batch size
- ์ตํฐ๋ง์ด์ : ์ต์ ํ ์๊ณ ๋ฆฌ์ฆ. ์ต์ ํ๋ ์์คํจ์์ ์ต์๊ฐ์ ์ฐพ์๊ฐ๋ ๊ฒ์ ์๋ฏธํ๋ค.
- ๋ฐฐ์น : ๋งค๊ฐ ๋ณ์์ ๊ฐ์ ์กฐ์ ํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ์ ์. ์ ์ฒด๋ฅผ ๊ฐ์ง๊ณ ์กฐ์ ํ ์๋ ์๊ณ , ๋ฐ์ดํฐ์ ์ผ๋ถ๋ง ๊ฐ์ง๊ณ ๋งค๊ฐ๋ณ์๋ฅผ ์กฐ์ ํ ์๋ ์๋ค.
- ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ตํฐ๋ง์ด์ ๋ฐฉ๋ฒ ์ค ํ๋๋ก, ๋ฐฐ์น ๊ฒฝ์ฌ ํ๊ฐ๋ฒ, SGD, Mini-batch GD ์ ์ธ๋ถ ๋ฐฉ๋ฒ์ผ๋ก ๋๋๋ค.
(1) ๋ฐฐ์น ๊ฒฝ์ฌ ํ๊ฐ๋ฒ
- ์ค์ฐจ loss ๋ฅผ ๊ตฌํ ๋ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ คํ๋ค. 1 epoch (ํ ๋ฒ์ ํ๋ จ์) ์ ๋ชจ๋ ๋งค๊ฐ๋ณ์ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๋ค.
- ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ คํ๋ฏ๋ก ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํฌ๊ฒ ์๊ตฌํ๋ค๋ ๊ฒ์ด ๋จ์
model.fit(X_train, y_train, batch_size=len(X_train))
(2) SGD : ๋ฐฐ์น ํฌ๊ธฐ๊ฐ 1์ธ GD
- ๋งค๊ฐ๋ณ์ ์กฐ์ ์ ์ ์ฒด ๋ฐ์ดํฐ๊ฐ ์๋ ๋๋ค์ผ๋ก ์ ํํ ํ๋์ ๋ฐ์ดํฐ์ ๋ํด์๋ง ๊ณ์ฐํ์ฌ ๋ฐ์
- ๋น ๋ฅธ ์๋ , but ๋ณ๊ฒฝ ํญ์ด ๋ถ์์ (์ ํ๋๊ฐ ๋ฎ์ ์ ์์)
model.fit(X_train, y_train, batch_size=1)
(3) ๋ฏธ๋๋ฐฐ์น ๊ฒฝ์ฌ ํ๊ฐ๋ฒ
- ์ ์ฒด ๋ฐ์ดํฐ๋ 1๊ฐ์ ๋ฐ์ดํฐ ๋ง๊ณ , ํน์ ํ ๋ฐฐ์น ํฌ๊ธฐ๋ฅผ ์ ํด์ ํด๋น ๋ฐ์ดํฐ ๊ฐ์๋งํผ์ ๋ํด ๊ณ์ฐ์ ์งํํ์ฌ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์กฐ์ ํ๋ ๊ฒฝ์ฌํ๊ฐ๋ฒ
- ๋น ๋ฅธ ์๋, SGD ๋ณด๋ค ์์ ์
- ๋ณดํต ๋ฐฐ์น ํฌ๊ธฐ๋ 2์ n์ ๊ณฑ์ ํด๋นํ๋ ์ซ์๋ก ์ ํํ๋ ๊ฒ์ด ๋ณดํธ์
model.fit(X_train, y_train, batch_size=128)
3. ์ตํฐ๋ง์ด์
(1) Momentum
- ๊ฒฝ์ฌ ํ๊ฐ๋ฒ์์ ๊ณ์ฐ๋ ์ ์ ์ ๊ธฐ์ธ๊ธฐ์ ํ ์์ ์ ์ ์ ์ ์ ๊ธฐ์ธ๊ธฐ๊ฐ์ ์ผ์ ํ ๋น์จ๋งํผ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด๋ฅผ ๊ฒฝ์ฌํ๊ฐ๋ฒ์ '๊ด์ฑ' ์ ๋ํด์ค๋ค๊ณ ํํํ๋ค. ( = gradient๊ฐ 0์ด ๋๊ฒ ํ์ง ์๋๋ค )
- ๐ง ๊ด์ฑ์ ๋ํด์ค๋ค? : ๋ก์ปฌ ๋ฏธ๋๋ฉ์ ๋๋ฌํ์์ ๋ ๊ธ๋ก๋ฒ ๋ฏธ๋๋ฉ์ผ๋ก ์๋ชป ์ธ์ํ์ฌ ํ์ถํ์ง ๋ชปํ์์ ์ํฉ์์ ๋ชจ๋ฉํ . ์ฆ, ๊ด์ฑ์ ํ์ ๋น๋ฆฌ๋ฉด ๊ฐ์ด ์กฐ์ ๋๋ฉด์ ํ์ฌ์ ๋ก์ปฌ ๋ฏธ๋๋ฉ์์ ํ์ถํ๊ณ ๊ธ๋ก๋ฒ ๋ฏธ๋๋ฉ ๋ด์ง๋ ๋ ๋ฎ์ ๋ก์ปฌ ๋ฏธ๋๋ฉ์ผ๋ก ๊ฐ ์ ์๋ ํจ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๊ฒ์ ์๋ฏธํ๋ค.
tf.keras.optimizers.SGD(lr=0.01, momentum=0.9)
(2) Adagrad
- ๊ฐ ๋งค๊ฐ๋ณ์์ ์๋ก ๋ค๋ฅธ ํ์ต๋ฅ ์ ์ ์ฉ์ํค๋ ๊ฒ
- ๋ณํ๊ฐ ๋ง์ (์ ๋ฐ์ดํธ ๋น๋์๊ฐ ๋ง์) ๋งค๊ฐ๋ณ์๋ ํ์ต๋ฅ ์ด ์๊ฒ ์ค์ ๋๊ณ ๋ณํ๊ฐ ์ ์ ๋งค๊ฐ๋ณ์๋ ํ์ต๋ฅ ์ ๋๊ฒ ์ค์ ํ๋ค.
tf.keras.optimizers.Adagrad(lr=0.01, epsilon=1e-6)
(3) RMSprop
- Adagrad ์ ๋จ์ (ํน์ ๋งค๊ฐ๋ณ์์ ํ์ต๋ฅ ์ด ์ง๋์น๊ฒ ๋จ์ด์ง๋ค๋ ๋จ์ ) ์ ๋ณด์ํ ์ต์ ํ ๋ฐฉ์
tf.keras.optimizers.RMSprop(lr=0.001, rho=0.9, epsilon=1e-06)
(4) Adam
- RMSprop ๊ณผ Momentum ๋ ๊ฐ์ง๋ฅผ ํฉ์น ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฉํฅ๊ณผ ํ์ต๋ฅ ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ ๊ณ ๋ คํ๋ค.
- ํ์ฌ ์ ์ผ ๋ง์ด ์ฌ์ฉ๋๋ ์ต์ ํ ๋ฐฉ์์ด๋ค.
tf.keras.optimizers.Adam(lr=0.001, beta_1=0.9, beta_2=0.999, epsilon=None, decay=0.0, amsgrad=False)
4. ์ญ์ ํ
โญ ์ค์ฐจ ๊ณ์ฐ ํ, ๊ฒฝ์ฌํ๊ฐ๋ฒ์ ์ฌ์ฉํด ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๊ณผ์
https://wikidocs.net/37406 ํด๋น ๋งํฌ๋ฅผ ํตํด ๋น ๋ฅด๊ณ ์์ธํ๊ฒ ์ดํดํ๊ธฐ! (์ ๋ฆฌ PASS)
โญ Total error ๊ฐ์ ํน์ ๊ฐ์ค์น wi ๋ก ํธ๋ฏธ๋ถ ํ๋ ๊ฒ์ด ํต์ฌ (Chain rule)
โญ ์ธ๊ณต ์ ๊ฒฝ๋ง์ ํ์ต์ ์ค์ฐจ๋ฅผ ์ต์ํํ๋ ๊ฐ์ค์น๋ฅผ ์ฐพ๋ ๋ชฉ์ ์ผ๋ก ์์ ํ์ ์ญ์ ํ๋ฅผ ๋ฐ๋ณตํ๋ ๊ฒ!
5. Epochs, Batch size, Iteration
- ํ์ต : ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ์ ์ค์ฐจ๋ก๋ถํฐ, ์ตํฐ๋ง์ด์ ๋ฅผ ํตํด ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธ ํ๋ ๊ณผ์
- ๊ธฐ๊ณ๋ ๋๊ฐ์ ๋ฌธ์ ์ง์ ์ ๋ต์ง๋ฅผ ์ฃผ๋๋ผ๋, ํ์ต ๋ฐฉ๋ฒ์ ๋ค๋ฅด๊ฒ ์ค์ ํ์ฌ ํ์ตํ ์ ์๋๋ฐ ์ด์ ๊ด๋ จ๋ ํ๋ผ๋ฏธํฐ๊ฐ epoch, batch size, iteration !
(1) Epochs
- ์ ์ฒด ๋ฐ์ดํฐ์ ๋ํด ์์ ํ์ ์ญ์ ํ๊ฐ ๋๋ ์ํ
- ๊ฐ์ด ๋๋ฌด ํฌ๊ฑฐ๋ ๋๋ฌด ์์ผ๋ฉด ๊ณผ์ ํฉ / ๊ณผ์์ ํฉ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค.
(2) batch size
- ๋ช ๊ฐ์ ๋ฐ์ดํฐ ๋จ์๋ก ๋งค๊ฐ๋ณ์๋ฅผ ์ ๋ฐ์ดํธ ํ๋์ง๋ฅผ ๋งํ๋ค.
- ํ์ค์ ๋น์ ํ๋ฉด ๋ฌธ์ ์ง์์ ๋ช ๊ฐ์ฉ ๋ฌธ์ ๋ฅผ ํ๊ณ ๋์ ์ ๋ต์ง๋ฅผ ํ์ธํ๋๋์ ๋ฌธ์
- ๋ฐฐ์น ํฌ๊ธฐ ๋จ์๋ก ํ์ตํ๋ฉด์ ์ํ ํฌ๊ธฐ ๋จ์๋ง๋ค ๊ฐ์ค์น๋ฅผ ์ ๋ฐ์ดํธ ํ๋ค.
(3) Iteration (Step)
- ํ ๋ฒ์ ์ํฌํฌ๋ฅผ ๋๋ด๊ธฐ ์ํด ํ์ํ ๋ฐฐ์น์ ์
๐ ๊ณผ์ ํฉ์ ๋ง๋ ๋ฐฉ๋ฒ
- ๊ณผ์ ํฉ : ํ๋ จ ๋ฐ์ดํฐ์ ํฌํจ๋ ๋ ธ์ด์ฆ๊น์ง ํ์ตํ์ฌ, ์ ์ ์๋ก์ด ๋ฐ์ดํฐ (๊ฒ์ฆ, ํ ์คํธ ๋ฐ์ดํฐ) ์๋ ์ ๋๋ก ๋์ํ์ง ์๋ ์ํ
๐ ์ธ๊ณต์ ๊ฒฝ๋ง์ ๊ณผ์ ํฉ์ ๋ง๋ ๋ฐฉ๋ฒ
1. ๋ฐ์ดํฐ์ ์์ ๋๋ฆฌ๊ธฐ
- ๋ฐ์ดํฐ์ ์์ด ์ ์ผ๋ฉด ํน์ ํจํด์ด๋ ๋ ธ์ด์ฆ๊น์ง ์ฝ๊ฒ ํ์ตํ๊ฒ ๋จ
- ๋ฐ์ดํฐ์ ์์ ๋๋ฆฌ๋ฉด ๋ฐ์ดํฐ์ ์ผ๋ฐ์ ์ธ ํจํด์ ํ์ตํ์ฌ ๊ณผ์ ํฉ์ ๋ฐฉ์งํ ์ ์๊ฒ๋จ
โ Data Augmentation
: ๊ธฐ์กด์ ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ธ์ฉ ๋ณํ + ์ถ๊ฐ ํ์ฌ ๋ฐ์ดํฐ์ ์์ ์๋์ ์ผ๋ก ๋๋ฆฌ๋ ๋ฐฉ๋ฒ
: ์ด๋ฏธ์ง → ์ด๋ฏธ์ง๋ฅผ ๋๋ฆฌ๊ฑฐ๋ ๋ ธ์ด์ฆ๋ฅผ ์ถ๊ฐ, ์ผ๋ถ๋ถ์ ์์ ํ๋ ํํ๋ก ์ฆ์ํ๋ ๋ฐฉ๋ฒ์ด ์์
: ํ ์คํธ → ์ฌ๋ฒ์ญ์ ํตํด ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ๋ง๋ค์ด๋ด๋ ์ญ๋ฒ์ญ (Back Translation) ๋ฑ์ ๋ฐฉ๋ฒ์ด ์์
2. ๋ชจ๋ธ์ ๋ณต์ก๋ ์ค์ด๊ธฐ
โ ์๋์ธต์ ์ ํน์ ๋งค๊ฐ๋ณ์์ ์๋ฅผ ์กฐ์ ํ๋ค.
3. ๊ฐ์ค์น ๊ท์ Regularization ์ ์ฉํ๊ธฐ
โ ๊ฐ๋จํ ๋ชจ๋ธ = ์ ์ ์์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง ๋ชจ๋ธ
โ ๊ฐ์ค์น ๊ท์
โพ L1 ๊ท์ : ๊ฐ์ค์น w๋ค์ ์ ๋๊ฐ ํฉ๊ณ๋ฅผ ๋น์ฉ ํจ์์ ์ถ๊ฐ. w ๋ฅผ 0์ผ๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ํน์ ํ ํน์ฑ์ ๋ชจ๋ธ์ ์ฌ์ฉ๋์ง ์๊ธฐ๋ ํ๋ค. ์ด๋ค ํน์ฑ๋ค์ด ๋ชจ๋ธ์ ์ํฅ์ ์ฃผ๊ณ ์๋์ง๋ฅผ ์ ํํ ํ๋จํ๊ณ ์ ํ ๋ ์ ์ฉํ๋ค.
โพ L2 ๊ท์ : ๋ชจ๋ ๊ฐ์ค์น w๋ค์ ์ ๊ณฑํฉ์ ๋น์ฉ ํจ์์ ์ถ๊ฐ. w ๋ฅผ 0์ ๊ฐ๊น์ด ๊ฐ์ผ๋ก ๋ง๋ ๋ค. L1 ๊ท์ ๋ณด๋จ L2 ๊ท์ ์ ์ฌ์ฉ์ ๊ถ์ฅํ๋ค.
โพ Lambda λ : ๊ท์ ์ ๊ฐ๋๋ฅผ ์ ํ๋ ํ์ดํผํ๋ผ๋ฏธํฐ → ๊ฐ์ด ํฌ๋ฉด ๊ท์ ์ ๊ฐ๋๊ฐ ํผ์ ์๋ฏธ
๋ ์ ๋ชจ๋ ๋น์ฉ ํจ์๋ฅผ ์ต์ํํ๊ธฐ ์ํด์๋ ๊ฐ์ค์น w๋ค์ ๊ฐ์ด ์์์ ธ์ผ ํ๋ค๋ ํน์ง์ ๊ฐ์ง๋ค.
4. Dropout
- ํ์ต๊ณผ์ ์์ ์ ๊ฒฝ๋ง์ ์ผ๋ถ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋ฐฉ๋ฒ
- ๋งค๋ฒ ๋๋ค ์ ํ์ ํตํด ๋ด๋ฐ๋ค์ ์ฌ์ฉํ๋ฏ๋ก ์๋ก ๋ค๋ฅธ ์ ๊ฒฝ๋ง๋ค์ ์์๋ธ ํ์ฌ ์ฌ์ฉํ๋ ํจ๊ณผ๋ฅผ ๋ด์ด ๊ณผ์ ํฉ์ ๋ฐฉ์งํ๋ค.
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dropout, Dense
max_words = 10000
num_classes = 46
model = Sequential()
model.add(Dense(256, input_shape=(max_words,), activation='relu'))
model.add(Dropout(0.5)) # ๋๋กญ์์ ์ถ๊ฐ. ๋น์จ์ 50%
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5)) # ๋๋กญ์์ ์ถ๊ฐ. ๋น์จ์ 50%
model.add(Dense(num_classes, activation='softmax'))
๐ ๊ธฐ์ธ๊ธฐ ์์ค๊ณผ ํญ์ฃผ
- ๊ธฐ์ธ๊ธฐ ์์ค
- ๊น์ ์ธ๊ณต์ ๊ฒฝ๋ง์์์ ์ญ์ ํ ๊ณผ์ ์ ์งํํ ๋ ์ ๋ ฅ์ธต์ผ๋ก ๊ฐ์๋ก ๊ธฐ์ธ๊ธฐ๊ฐ ์ ์ฐจ์ ์ผ๋ก ์์์ง๋ ํ์
- ํด๊ฒฐ๋ฐฉ๋ฒ
- ์๋์ธต์์ ์๊ทธ๋ชจ์ด๋ ํจ์๋ฅผ ์ฌ์ฉํ์ง ๋ง๊ฒ
- ๋์ ์๋์ธต์์๋ ReLU ํจ์์ ๋ณํ๋ค์ ์ฌ์ฉํ ๊ฒ
- ๊ฐ์ค์น ์ด๊ธฐํ ๋ฐฉ๋ฒ : ์ธ์ด๋น์ด ์ด๊ธฐํ, He ์ด๊ธฐํ
- ๊ธฐ์ธ๊ธฐ ํญ์ฃผ
- ๊ธฐ์ธ๊ธฐ๊ฐ ์ ์ฐจ ์ปค์ง๋๋ ๋น์ ์์ ์ผ๋ก ํฐ ๊ฐ์ด ๋๋ฉด์ ๋ฐ์ฐํ๋ ๊ฒฝ์ฐ
- RNN ์์ ์ฝ๊ฒ ๋ฐ์ํ๋ ๋ฌธ์ ์ด๋ค.
- ํด๊ฒฐ๋ฐฉ๋ฒ
- Gradient Clipping : ๊ธฐ์ธ๊ธฐ ๊ฐ์ ์๋ฅด๋ ๊ฒ์ผ๋ก ์๊ณ๊ฐ์ ์ค์ ํด ์๊ณ์น ์ด์์ ๊ธฐ์ธ๊ธฐ๋ ๋์ค์ง ์๋๋ก ํ๋ค.
from tensorflow.keras import optimizers
Adam = optimizers.Adam(lr=0.0001, clipnorm=1.)
- ๋ฐฐ์น ์ ๊ทํ
- ๊ธฐ์ธ๊ธฐ ์์ค ํน์ ํญ์ฃผ๋ฅผ ์ํ์ํค๋ ๋ฐฉ๋ฒ
- ์ธ๊ณต ์ ๊ฒฝ๋ง์ ๊ฐ ์ธต์ ๋ค์ด๊ฐ๋ ์ ๋ ฅ์ ํ๊ท ๊ณผ ๋ถ์ฐ์ผ๋ก ์ ๊ทํํ์ฌ ํ์ต์ ํจ์จ์ ์ผ๋ก ๋ง๋ ๋ค.
- ์ธต ์ ๊ทํ
๐ MLP ๋ก ํ ์คํธ ๋ถ๋ฅํ๊ธฐ
๐ 20๊ฐ ๋ด์ค ๊ทธ๋ฃน ๋ฐ์ดํฐ ์ค์ต
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
def fit_and_evaluate(X_train, y_train, X_test, y_test):
model = Sequential()
model.add(Dense(256, input_shape=(vocab_size,), activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.fit(X_train, y_train, batch_size=128, epochs=5, verbose=1, validation_split=0.1)
score = model.evaluate(X_test, y_test, batch_size=128, verbose=0)
return score[1]
๐ NNLM ํผ๋ํฌ์๋ ์ ๊ฒฝ๋ง ์ธ์ด๋ชจ๋ธ
- ๊ณผ๊ฑฐ์ ์์ฐ์ด๋ฅผ ํ์ตํ ๋ ํต๊ณ์ ์ธ ์ ๊ทผ์ ์ฌ์ฉํ์์ผ๋, ์ต๊ทผ์๋ ์ธ๊ณต์ ๊ฒฝ๋ง์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ด NLP ์์ ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ธ๋ค.
- ์ ๊ฒฝ๋ง ์ธ์ด ๋ชจ๋ธ์ ์์ด์ธ NNLM
โญ ์ธ์ด๋ชจ๋ธ : ๋ฌธ์ฅ์ ํ๋ฅ ์ ํ ๋นํ๋ ๋ชจ๋ธ
โญ ์ธ์ด ๋ชจ๋ธ๋ง : ์ฃผ์ด์ง ๋ฌธ๋งฅ์ผ๋ก๋ถํฐ ์์ง ๋ชจ๋ฅด๋ ๋จ์ด๋ฅผ ์์ธกํ๋ ๊ฒ
- N-gram ์ธ์ด ๋ชจ๋ธ์ ํ๊ณ : ์ถฉ๋ถํ ๋ฐ์ดํฐ๋ฅผ ๊ด์ธกํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ, ์ธ์ด๋ฅผ ์ ํํ ๋ชจ๋ธ๋งํ์ง ๋ชปํ๋ ํฌ์ ๋ฌธ์ (sparsity problem) ๋ฐ์
- ๋จ์ด์ ์๋ฏธ์ ์ ์ฌ์ฑ : ๋จ์ด์ ์๋ฏธ์ ์ ์ฌ์ฑ์ ํ์ตํ ์ ์๋๋ก ์ค๊ณํ๋ค๋ฉด, ํ๋ จ ์ฝํผ์ค์ ์๋ ๋จ์ด ์ํ์ค์ ๋ํ ์์ธก์ด๋ผ๋ ์ ์ฌํ ๋จ์ด๊ฐ ์ฌ์ฉ๋ ๋จ์ด ์ํ์ค๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋ณด๋ค ์ ํํ ์์ธก์ ํ ์ ์๋ค. NNLM ์ด ์ด๋ฌํ ์์ด๋์ด๋ฅผ ๋ฐ์ํ ๋ชจ๋ธ! (+์๋ ์๋ฒ ๋ฉ์ ์์ด๋์ด)
โ lookup table ๊ณผ์ ์์ ์์ฑ๋ ๋จ์ด๋ฒกํฐ๊ฐ ์๋ฒ ๋ฉ ๋ฒกํฐ!
โ ํฌ์ฌ์ธต์์ ๋ชจ๋ ์๋ฒ ๋ฉ ๋ฒกํฐ ๊ฐ๋ค์ ์ฐ๊ฒฐ๋๋ค. (์ด์ด๋ถ์)
์์ ๊ฐ์ ๊ณผ์ ์ผ๋ก ์ฝํผ์ค๋ฅผ ํ์ตํ๊ฒ ๋๋ค๋ฉด ๊ฒฐ๊ณผ์ ์ผ๋ก ์๋ง์ ๋ฌธ์ฅ์์ ์ ์ฌํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋จ์ด๋ค์ ๊ฒฐ๊ตญ ์ ์ฌํ ์๋ฒ ๋ฉ ๋ฒกํฐ๊ฐ์ ์ป๊ฒ๋๋ค. ๋จ์ด ๊ฐ ์ ์ฌ๋๋ฅผ ๊ตฌํ ์ ์๋ ์๋ฒ ๋ฉ ๋ฒกํฐ์ ์์ด๋์ด๋ Word2Vec, FastText, GloVe ๋ฑ์ผ๋ก ๋ฐ์ ๋์ด์ ๋ฅ ๋ฌ๋ ์์ฐ์ด ์ฒ๋ฆฌ ๋ชจ๋ธ์์๋ ํ์์ ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ด ๋์๋ค.
โญ NNLM ๋ชจ๋ธ์ ์ด์ : ๋จ์ด์ ์ ์ฌ๋ ๊ณ์ฐ์ด ๊ฐ๋ฅ, ํฌ์ ๋ฌธ์ ํด๊ฒฐ
โญ ํ๊ณ : (๊ณ ์ ๋ ๋ฒกํฐ ๊ธธ์ด) ์ ํด์ง ์ฃผ๋ณ๋จ์ด n ๊ฐ๋ง์ ์ฐธ๊ณ ํ๋ ๋ฌธ์ (๋ชจ๋ ์ด์ ๋จ์ด๋ฅผ ์ฐธ๊ณ ํ ์ ์์) ๐ RNN ์ ํตํด ํด๊ฒฐ
'1๏ธโฃ AIโขDS > ๐ NLP' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[cs224n] 6๊ฐ ๋ด์ฉ ์ ๋ฆฌ (0) | 2022.03.24 |
---|---|
[cs224n] 5๊ฐ ๋ด์ฉ ์ ๋ฆฌ (0) | 2022.03.22 |
[cs224n] 4๊ฐ ๋ด์ฉ ์ ๋ฆฌ (0) | 2022.03.18 |
[cs224n] 3๊ฐ ๋ด์ฉ ์ ๋ฆฌ (0) | 2022.03.14 |
[cs224n] 2๊ฐ ๋ด์ฉ ์ ๋ฆฌ (0) | 2022.03.14 |
๋๊ธ