cleanUrl: 'articles/playlist'
๐ง Intro. What is E-byul? (feat. NLP)
์ข์ผ๋ ๊ทธ ์ฌ๋
์์งํ ๊ฒฌ๋๊ธฐ ๋ฒ๊ฑฐ์
๋ค๊ฐ ์กฐ๊ธ ๋ ํ๋ค๋ฉด ์ข๊ฒ ์ด
์ง์ง ์กฐ๊ธ
๋ด ์ญ ๋ถ์ ์ผ๋ง์ด๋ผ๋
์ํ๋ค ํ๋ณตํด์ค
- ์ค์ข
์ , โ์ข๋โ (2017)
ย
์ฌ๋ฌ๋ถ๋ค์ ์ฐ์ธํ ๋ ์ ์ด๋ค ์์ผ๋ก ์๊ฐ์ ๋ณด๋ด์๋์? ์์
์ ์๋ง์ ์ฌ๋๋ค์ ์๋กํ๊ธฐ๋ ํ๊ณ , ๋จ์ํ ๋ง๋ก ์ ๋ฌํ๊ธฐ ํ๋ ํํ์ ๊ฑด๋ค๊ณค ํฉ๋๋ค. ์ฐ์ธ์ฆ์ ๊ฐ์ง๊ณ ์๋ ์ฌ๋๋ค์ ์ฆ๊ฑฐ์ด ์์
๋ณด๋ค๋ ์ฌํ ์์
์ ํํ๋ ๊ฒฝํฅ์ด ์์ต๋๋ค. ์ฌํ ์์
์ ๋ฃ๋๋ค๊ณ ํด์ ๋ ์ฐ์ธํด์ง๋ ๊ฒ์ด ์๋ ์คํ๋ ค ์์ ์ ๊ฐ์ ์ํ๋ฅผ ์ดํดํด์ค๋ค๊ณ ๋๊ปด ํธ์ํจ์ ๋๋ผ๋ ๊ฒ์ด์ฃ .
๋์ค ๊ฐ์์๋ ์๋ง์ ์ด๋ณ ๋
ธ๋๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋
ธ๋ ๊ฐ์ฌ์ ๋ํ๋๋ ์ด๋ณ์ ์ ์๋ ๋งค์ฐ ์ฌ์ธํ๊ณ ๋ณตํฉ์ ์ด์ฃ . ๊ทธ๋ ๋ค๋ฉด ์๋ง์ ์ด๋ณ ๋
ธ๋๋ค ์ค์์๋ ์ฐ๋ฆฌ๊ฐ ๋ฃ๊ณ ์ถ์ ์ข
๋ฅ์ ๊ฐ์ฌ๊ฐ ๋ด๊ธด ๋
ธ๋๋ค์ ๊ณจ๋ผ ๋ค์ ์๋ ์์๊น์? ์์ฐ์ด์ฒ๋ฆฌ(NLP, Natural Language Processing)๋ฅผ ์ด์ฉํด ์ฃผ์ด์ง ํ
์คํธ์ ๋ํ ํน์ ๊ฐ์ ์ ๋ถ๋ฅํ๋ โ๊ฐ์ ๋ถ๋ฅโ ์์
์ ๋
ธ๋ ๊ฐ์ฌ์ ์ ์ฉํ๋ค๋ฉด ๊ฐ๋ฅํฉ๋๋ค! ์ด๋ฒ ํฌ์คํธ์์๋ ์์ฐ์ด์ฒ๋ฆฌ๋ฅผ ์ด์ฉํ์ฌ ์ด๋ณ ๊ฐ์ฌ๋ค์ ๊ฐ์ ๋ถ๋ฅํ๋ ๋
ผ๋ฌธ์ ์๊ฐํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
ย
ย
๋ณธ ๋
ผ๋ฌธ์์๋ ์ด๋ณ ๊ฐ์ฌ๋ฅผ ๊ฐ์ ๋ถ๋ฅํ๊ธฐ ์ํด์ CBOW ํ์ต์ ํตํด ๊ฐ์ ์ฌ์ ์ ๊ตฌ์ถํ๊ณ , LSTM์ ์ฌ์ฉํ์ฌ ๊ฐ์ฌ ํ์ต์ ๊ฑฐ์น ํ, ์ ์ฌํ ๊ฐ์ ์ผ๋ก ๊ฐ์ฌ๋ฅผ ๋ถ๋ฅํ๋ ๋ชจ๋ธ์ ์๊ฐํ๊ณ ์์ต๋๋ค. CBOW ๋ Word2Vec ๋ชจ๋ธ ์ค ํ๋์ด๊ณ , LSTM์ RNN ๋ชจ๋ธ ์ค ํ๋์
๋๋ค. ๊ทธ๋ผ ์ง๊ธ๋ถํฐ CBOW ๋ชจ๋ธ์ ์ด๋ป๊ฒ ๊ตฌ์ฑ๋๊ณ ๊ตฌํ๋๋์ง, LSTM ๋ชจ๋ธ์ ์ด๋ค ๊ณผ์ ์ ๊ฑฐ์ณ ๋ฐ์ดํฐ๋ฅผ ํ์ตํ๋์ง ์์๋ณด๊ฒ ์ต๋๋ค!
ย
ย
deep daiv. 1st Digital Single <What is E-byul? (feat. NLP)> Tracklist
๐ง Intro. What is E-byul? (feat. NLP)๐ง Track 1. CBOW๋ก ๊ฐ์ ์ฌ์ ๊ตฌ์ถํ๊ธฐ1) Word2Vec2) CBOW3) CBOW๋ก ๊ฐ์ ์ฌ์ ๊ตฌ์ถํ๊ธฐ ๐ง Track 2. LSTM์ผ๋ก ๊ฐ์ ๋ถ๋ฅ ํ์ตํ๊ธฐ1) ๋ฐ์ดํฐ์ ์์๋ฅผ ๊ณ ๋ คํ์ฌ ํ์ตํ๋ ์ํ์ ๊ฒฝ๋ง RNN(Recurrent Neural Network)2) RNN์ ๋จ์ ์ ๋ณด์ํ LSTM 3) LSTM์ผ๋ก ๊ฐ์ ๋ถ๋ฅ ํ์ตํ๊ธฐ๐ง Outro. More & More๐ง ์ฐธ๊ณ ๋ฌธํ
ย
๐ง Track 1. CBOW๋ก ๊ฐ์ ์ฌ์ ๊ตฌ์ถํ๊ธฐ
1) Word2Vec
์ ๋ฒ ์๊ฐ์๋ โํต๊ณ ๊ธฐ๋ฐ ๊ธฐ๋ฒโ์ ํตํด ๋จ์ด ๋ถ์ฐ ํํ์ ์ป์์ต๋๋ค. ์ด๋ฒ์๋ ํ์ธต ๋ฐ์ ๋ ๊ธฐ๋ฒ์ธ โ์ถ๋ก ๊ธฐ๋ฐ ๊ธฐ๋ฒโ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์์ ๋ฐ๋ก Word2Vec์ด ๋ฑ์ฅํฉ๋๋ค! ํต๊ณ ๊ธฐ๋ฐ๊ณผ ์ถ๋ก ๊ธฐ๋ฐ์ ๊ฐ์ฅ ํฐ ์ฐจ์ด๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ๋ฐ์ ์์ต๋๋ค. ํต๊ณ ๊ธฐ๋ฐ์ ๋จ ํ ๋ฒ์ ์ฒ๋ฆฌ๋ก ๋จ์ด์ ๋ถ์ฐ ํํ์ ์ป๋ ๋ฐ๋ฉด ์ถ๋ก ๊ธฐ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ๋ฏธ๋๋ฐฐ์น๋ก ๋๋์ด ํ์ตํ์ฃ . ๋ง๋ญ์น์ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ํต๊ณ ๊ธฐ๋ฐ๋ ๊ด์ฐฎ์ง๋ง ์ค์ ๋ก ์ ์ฉํ๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ ์์ฒญ๋๊ฒ ํฌ๊ธฐ ๋๋ฌธ์ ํต๊ณ ๊ธฐ๋ฐ ๊ธฐ๋ฒ์ผ๋ก๋ ํ๊ณ๊ฐ ์์ต๋๋ค.
ย
Word2vec์ ๋ชจ๋ธ์ ๋ํ์ ์ผ๋ก CBOW์ skip-gram์ผ๋ก ๋๋๋๋ฐ, CBOW๋ ๋งฅ๋ฝ(์ฃผ๋ณ ๋จ์ด)์ผ๋ก๋ถํฐ ํ๊ฒ ๋จ์ด๋ฅผ ์ถ์ธกํ๊ณ skip-gram์ ํ๊ฒ ๋จ์ด๋ก๋ถํฐ ๋งฅ๋ฝ(์ฃผ๋ณ ๋จ์ด)์ ์ถ์ธกํ๋ ๋ฐฉ์์
๋๋ค. ๋ณดํต skip-gram์ด ๋ ํจ์จ์ ์ผ๋ก ์ฐ์ด์ง๋ง, ์๊ฐํ๋ ๋
ผ๋ฌธ์์๋ CBOW๋ฅผ ์ด์ฉํ์ฌ ๋
ธ๋ ๊ฐ์ฌ์ ๋จ์ด ์๋ฏธ ํ์
๊ณผ ์ด๋ฅผ ๋ฐํ์ผ๋ก ๊ฐ์ ์ฌ์ ์ ๊ตฌ์ถํ๊ณ ์๊ธฐ ๋๋ฌธ์ CBOW์ ๋ํด ์์๋ณด๋ ๊ฒ์ ๋ชฉํ๋ก ํ๊ฒ ์ต๋๋ค.
*CBOW์ ๋ํ ๋๋ถ๋ถ์ ์ค๋ช
๊ณผ ๊ทธ๋ฆผ์ โ๋ฐ๋ฐ๋ฅ๋ถํฐ ์์ํ๋ ๋ฅ๋ฌ๋2โ ๊ต์ฌ ์๋ฃ๋ฅผ ์ฃผ๋ก ์ฐธ๊ณ ํ์์ต๋๋ค.
ย
2) CBOW
ย
์ ๊ทธ๋ฆผ์ ๋ณด๋ฉด CBOW ๋ชจ๋ธ์ด ์
๋ ฅ์ธต, ์๋์ธต, ์ถ๋ ฅ์ธต์ผ๋ก ๋๋์ด์ ธ ์๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ๊ฐ ์ธต์ ์ ๊ฒฝ๋ง ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ ์ธ ๊ตฌ์กฐ์ธ๋ฐ์, CBOW์ ํน์ง์ ์ฌ๋ฌ ๊ฐ์ ์
๋ ฅ์ด ์๋ค๋ ์ ์
๋๋ค. ์ฃผ๋ณ ๋งฅ๋ฝ์ ํฌ๊ธฐ๋ฅผ ์ด๋ ์ ๋๋ก ์ ํ ๊ฒ์ธ์ง์์ ์
๋ ฅ์ ๊ฐ์๊ฐ ๋ฌ๋ผ์ง๋๋ฐ, ์์ ์์์์๋ ์๋์ฐ์ ํฌ๊ธฐ(๋งฅ๋ฝ)๋ฅผ 1๋ก ์ค์ ํ๊ธฐ ๋๋ฌธ์ ์
๋ ฅ์ด 2๊ฐ์ธ ๊ฒ์
๋๋ค. You say goodbye and I say hello. ๋ผ๋ ๋ฌธ์ฅ์์ ํ๊น์ด say๋ผ๋ ๋จ์ด๋ผ๋ฉด ์ฃผ๋ณ ๋จ์ด์ธ you์ goodbye์ ์ํซ๋ฒกํฐ๋ฅผ ์
๋ ฅ์ผ๋ก ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค.
ย
ย
๊ฐ ์ธต ์ฌ์ด์๋ ๊ฐ์ค์น(W)๊ฐ ์กด์ฌํฉ๋๋ค. ์ ๊ฒฝ๋ง ๋ชจ๋ธ์ ๊ธฐ๋ณธ์ ๊ฐ์ค์น์ ํธํฅ์ ์์ต๋๋ค. ์ ๊ฒฝ๋ง์ ํ์ต ์๋ฆฌ๋ ์์ ํ(์ ๋ฐฉํฅ)๋ก ์
๋ ฅ๊ณผ ๊ฐ์ค์น, ํธํฅ์ ํตํด ์์คํจ์๋ฅผ ๊ตฌํ๊ณ ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ญ์ ํ(์ญ๋ฐฉํฅ)๋ก ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํด ๊ฐ์ค์น๋ฅผ ๊ฐฑ์ ํ๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ํ์ต์ด๋ผ ํ๋ฉฐ ํ์ต์ด ๋ฐ๋ณต๋ ์๋ก ๋งค๊ฐ๋ณ์(๊ฐ์ค์น, ํธํฅ ๋ฑ)๋ค์ด ์์คํจ์๋ฅผ ์ต์๋ก ํ๋๋ก ๊ฐฑ์ ๋์ด, ํ์ต์ ์งํํ ์๋ก ์ ๊ฒฝ๋ง์ ํจ์จ์ด ์ข์์ง๊ฒ ๋ฉ๋๋ค.
ย
Softmax๋ ์ถ๋ ฅ์ธต์์ ๋์จ ์ ์๋ฅผ ํ๋ฅ ๋ก ๋ณํํด์ฃผ๋ ํจ์์
๋๋ค. Softmax ๊ณ์ธต์ ํตํด ๊ตฌํ ํ๋ฅ ์ ๊ต์ฐจ ์ํธ๋กํผ ์ค์ฐจ ๊ณ์ธต์ ์ด์ฉํด ์ ๋ต ๋ ์ด๋ธ๊ณผ ๋น๊ตํ๋ ๊ฒ์ด์ฃ . ์ด๋ ๊ฒ ๊ตฌํด์ง ์์คํจ์๋ ์ญ์ ํ๋ฅผ ํตํด ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๊ณ ์ ๊ณ์ธต์ ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐฑ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด์ ๊ฐ๋จํ CBOW ๋ชจ๋ธ์ ๊ตฌํํด๋ณด๊ฒ ์ต๋๋ค!
ย
MatMul
class MatMul: def __init__(self, W): self.params = [W] self.grads = [np.zeros_like(W)] self.x = None # ์์ ํ def forward(self, x): W, = self.params # ๋ํ์ด์ matmul์ ํ๋ ฌ ๊ณฑ์ ์ํํฉ๋๋ค. out = np.matmul(x, W) self.x = x return out # ์ญ์ ํ def backward(self, dout): W, = self.params dx = np.matmul(dout, W.T) # T๋ ์ ์นํ๋ ฌ dW = np.matmul(self.x.T, dout) # [...] ์ฌ์ฉ ์ ๊น์ ๋ณต์ฌ self.grads[0][...] = dW return dx
SoftmaxWithLoss
softmax
# ์ํํธ๋งฅ์ค ํจ์ ๊ตฌํ def softmax(a): c = np.max(a) exp_a = np.exp(a - c) # ์ค๋ฒํ๋ก ๋์ฑ sum_exp_a = np.sum(exp_a) y = exp_a / sum_exp_a return y
cross_entropy_error
# ๊ต์ฐจ ์ํธ๋กํผ ์ค์ฐจ ํจ์ ๊ตฌํ def cross_entropy_error(y, t): if y.ndim == 1: t = t.reshape(1, t.size) y = y.reshape(1, y.size) batch_size = y.shape[0] return -np.sum(t * np.log(y + 1e-7)) / batch_size
# ์ํํธ๋งฅ์ค ๊ณ์ธต๊ณผ ๊ต์ฐจ ์ํธ๋กํผ ์ค์ฐจ ๊ณ์ธต์ ํฉํ ๊ฒ์ ๋๋ค! class SoftmaxWithLoss: def __init__(self): self.loss = None # ์์ค self.y = None # softmax์ ์ถ๋ ฅ self.t = None # ์ ๋ต ๋ ์ด๋ธ (์-ํซ ๋ฒกํฐ) # ์์ ํ def forward(self, x, t): self.t = t self.y = softmax(x) self.loss = cross_entropy_error(self.y, self.t) return self.loss # ์ญ์ ํ def backward(self, dout=1): batch_size = self.t.shape[0] dx = (self.y - self.t) / batch_size return dx
class SimpleCBOW: def __init__(self, vocab_size, hidden_size): # ์ดํ ์, ์๋์ธต์ ๋ด๋ฐ ์ V, H = vocab_size, hidden_size # ๊ฐ์ค์น ์ด๊ธฐํ # random.randn์ ํตํด ์์์ ๊ฐ์ค์น๋ฅผ ์ค์ ํฉ๋๋ค. # astype('f') ๋ ๋ํ์ด ๋ฐฐ์ด ๋ฐ์ดํฐ ํ์ , 32๋นํธ ๋ถ๋์์์ ์๋ก ์ด๊ธฐํ W_in = 0.01 * np.random.randn(V, H).astype('f') W_out = 0.01 * np.random.randn(H, V).astype('f') # ๊ณ์ธต ์์ฑ # MatMul ๊ณ์ธต์ ์๋์ฐ์ ํฌ๊ธฐ๋งํผ ์์ฑํด์ผ ํฉ๋๋ค! self.in_layer0 = MatMul(W_in) self.in_layer1 = MatMul(W_in) self.out_layer = MatMul(W_out) self.loss_layer = SoftmaxWithLoss() # ๋ชจ๋ ๊ฐ์ค์น์ ๊ธฐ์ธ๊ธฐ๋ฅผ ๋ฆฌ์คํธ์ ์ถ๊ฐ layers = [self.in_layer0, self.in_layer1, self.out_layer] self.params, self.grads = [], [] for layer in layers: self.params += layer.params self.grads += layer.grads # ์ธ์คํด์ค ๋ณ์์ ๋จ์ด์ ๋ถ์ฐ ํํ ์ ์ฅ self.word_vecs = W_in # ์์ ํ def forward(self, contexts, target): h0 = self.in_layer0.forward(contexts[:, 0]) h1 = self.in_layer1.forward(contexts[:, 1]) h = (h0 + h1) * 0.5 score = self.out_layer.forward(h) loss = self.loss_layer.forward(score, target) return loss # ์ญ์ ํ def backward(self, dout=1): ds = self.loss_layer.backward(dout) da = self.out_layer.backward(ds) da *= 0.5 self.in_layer1.backward(da) self.in_layer0.backward(da) return None
ย
CBOW ๋ชจ๋ธ์ ํ์ต์ ์ผ๋ฐ์ ์ธ ์ ๊ฒฝ๋ง์ ํ์ต๊ณผ ๋น์ทํฉ๋๋ค. ํ์ต ๋ฐ์ดํฐ๋ฅผ ์ ๊ฒฝ๋ง์ ์
๋ ฅํ ํ, ๊ธฐ์ธ๊ธฐ๋ฅผ ๊ตฌํ๊ณ ๊ฐ์ค์น ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐฑ์ ํด ๋๊ฐ๋๋ค. Optimizer๋ ๋งค๊ฐ๋ณ์ ๊ฐฑ์ ์ ์ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก SGD(ํ๋ฅ ์ ๊ฒฝ์ฌ ํ๊ฐ๋ฒ), AdaGrad ๋ฑ์ด ์์ต๋๋ค. ์๋ ์ฝ๋์์๋ Adam์ด๋ผ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ฒ ์ต๋๋ค!
import sys from common.trainer import Trainer from common.optimizer import Adam from simple_cbow import SimpleCBOW from common.util import preprocess, create_contexts_target, convert_one_hot window_size = 1 hidden_size = 5 batch_size = 3 max_epoch = 1000 text = 'You say goodbye and I say hello.' corpus, word_to_id, id_to_word = preprocess(text) vocab_size = len(word_to_id) contexts, target = create_contexts_target(corpus, window_size) target = convert_one_hot(target, vocab_size) contexts = convert_one_hot(contexts, vocab_size) model = SimpleCBOW(vocab_size, hidden_size) optimizer = Adam() trainer = Trainer(model, optimizer) trainer.fit(contexts, target, max_epoch, batch_size) trainer.plot() word_vecs = model.word_vecs for word_id, word in id_to_word.items(): print(word, word_vecs[word_id])
ย
Colab์ ํตํด ์ง์ ์ํํด ๋ณธ ๊ฒฐ๊ณผ์
๋๋ค! ์ธ๋ก ์ถ์ loss ๊ฐ, ๊ฐ๋ก์ถ์ iterations ๋ก ํ์ต์ ์งํํ ์๋ก loss ๊ฐ ์์์ง๋ ๊ฒ์ด ์ด์์ ์
๋๋ค. ๋ง๋ญ์น๊ฐ ์์์ ๊ทธ๋ฐ์ง ๋ง์กฑ์ค๋ฌ์ด ๊ฒฐ๊ณผ๋ ์๋์ง๋ง ํ์ต์ด ์งํ๋์๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์์ต๋๋ค!!
ย
์ง์ ํด๋ณด๊ณ ์ถ์ผ์ ๋ถ๋ค์ ์๋ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์ฌ ํด๋ณด์๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค!
ย
3) CBOW๋ก ๊ฐ์ ์ฌ์ ๊ตฌ์ถํ๊ธฐ
์ด์ ๋
ผ๋ฌธ์์ CBOW๋ฅผ ์ด๋ป๊ฒ ํ์ฉํ๊ณ ์๋์ง์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค! Word2Vec๋ฅผ ์ด์ฉํ๊ธฐ ์ํด์๋ ์ ์ฒ๋ฆฌ ๊ณผ์ ์ด ํ์์
๋๋ค. ์ ์ฒ๋ฆฌ์๋ ํ ํฐํ, ํ์ฌ ํ๊น
, ๋ถ์ฉ์ด ์ฒ๋ฆฌ ๊ณผ์ ๋ฑ์ด ์์ฃ . ์ ์ฒ๋ฆฌ๋ฅผ ๋ง์น ํ์๋ ๋ฌด์์ ํ ๊น์? ์ด์ ๋จ์ด๋ณ ์๋ฏธ๋ฅผ ํ์
ํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ๋จ์ํ โ์ฌ๋โ์ด๋ผ๋ ๋จ์ด๋ ๋ฌด์กฐ๊ฑด ํ๋ณต๋ง์ ๋ปํ์ง ์์ต๋๋ค. ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง์ฃ . โ์์ฃผ ๋ง์ด ์ฌ๋ํ๋ ๋์ ๊ทธ๋๋ฅผ ์ด์ ๋ ๋ ๋ณด๋ด๋ คํดโ, โ๋ค๋ฅธ ์ฌ๋ ๋ชป ํ ๊ฑฐ ๊ฐ์์โ ๊ฐ์ ๋ฌธ์ฅ๋ค์์ ์ฌ๋์ โ์ด๋ณโ์ด๋ผ๋ ๋จ์ด์ ์๋ฏธ์ ์ผ๋ก ์ ์ฌ๋๊ฐ ๋ ๋์์ผ ํ๋ค๋ ๊ฒ์
๋๋ค. ์ด๋ Word2Vec์ ํตํ ์๋ฒ ๋ฉ ๋ชจ๋ธ์ ๋จ์ด ๊ฐ ๊ฑฐ๋ฆฌ ์ ์ฌ๋๋ฅผ ํ๋ณํ์ฌ ๋จ์ด ๊ฐ์ ์๋ฏธ๋ฅผ ํ์
ํ๊ฒ ๋ฉ๋๋ค.
ย
์ง๊ธ๊น์ง ์ค๋ช
ํ๋ CBOW๋ฅผ ์ด์ฉํด ๋จ์ด๋ฅผ ํ์ตํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ์ ์ฌ์ ์ ๊ตฌ์ถํ๊ฒ ๋ฉ๋๋ค. ์์ ๋
ผ๋ฌธ์์๋ 4๊ฐ์ง ๋ํ ๊ฐ์ ์ โ์ฌํโ, โ๋ถ์ โ, โ๋ถ๋
ธโ, โ๋ฌด๊ด์ฌโ์ผ๋ก ์ค์ ํ๊ณ ์ ์ฌ๋๋ฅผ ๋ฒกํฐํํ์์ต๋๋ค. ์๋ ํ๋ ๋
ผ๋ฌธ์ ์๊ฐ๋์ด ์๋ ํ์ธ๋ฐ์, 4๊ฐ์ง ๊ฐ์ ์ ๋ํ ์ ์ฌ๋๊ฐ ๋์ ๋จ์ด๋ฅผ 5๊ฐ์ฉ ์ถ์ถํ ๊ฒฐ๊ณผ์
๋๋ค.
์์ ํ์ฒ๋ผ ์ ์ฌ๋๊ฐ ๋์ ์์๋๋ก , ์ ์ฌ๋๊ฐ 0.5 ์ด์์ธ ๋จ์ด๋ค๋ง์ ์ด์ฉํ์ฌ ๋ํ ๊ฐ์ ์ ๋ํ ๊ฐ์ ์ฌ์ ์ ๊ตฌ์ถํ๋ ๊ฒ์ด์ฃ . ์ด์ ์ด๋ฅผ ๋ฐํ์ผ๋ก LSTM์ ์ด์ฉํ์ฌ ์ด๋ณ ๊ฐ์ฌ์ ๊ฐ์ ์ ๋ถ๋ฅํ๊ฒ ๋๋ ๊ฒ์
๋๋ค!
ย
๐ง Track 2. LSTM์ผ๋ก ๊ฐ์ ๋ถ๋ฅ ํ์ตํ๊ธฐ
1) ๋ฐ์ดํฐ์ ์์๋ฅผ ๊ณ ๋ คํ์ฌ ํ์ตํ๋ ์ํ์ ๊ฒฝ๋ง RNN(Recurrent Neural Network)
ย
๋ฅ๋ฌ๋ ๋ชจ๋ธ์ ํ์ต์ํค๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๋์ ์ ๊ฒฝ๋ง ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฐฉํ์ฌ ๋ง๋ค์ด์ง โ์ธ๊ณต์ ๊ฒฝ๋ง(Artificial Neural Network)โ์
๋๋ค. ์ค๋ ํฌ์คํธ์์ ์๊ฐํ RNN(Recurrent Neural Network, ์ํ์ ๊ฒฝ๋ง)๋ ์ธ๊ณต์ ๊ฒฝ๋ง์ ํ ์ข
๋ฅ์ธ๋ฐ์. ์ํ์ ๊ฒฝ๋ง์ โ์์ฐจ ๋ฐ์ดํฐ(Sequential Data)โ ์ฆ โ์์โ ์ ๋ณด๊ฐ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ์ตํ๋ ๊ฒ์ ํนํ๋ ์ธ๊ณต์ ๊ฒฝ๋ง์
๋๋ค. โ์์ฐจ ๋ฐ์ดํฐโ๋ ์๊ฐ ์์๋๋ก ์ฅ๋ฉด์ด ์งํ๋๋ ์ํ์ ์ํ์ค์ฒ๋ผ ์์ ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด์.
ํ
์คํธ๋ฐ์ดํฐ๋ ์์ฐจ๋ฐ์ดํฐ์ ํด๋นํด์. ๋ฌธ์ฅ์ ์ฝ๋ โ์์โ๊ฐ ์๊ณ , ์ด๋ค ๋จ์ด์ ์๋ฏธ๋ ๊ทธ ๋จ์ด์ ์๋ค ์์์ ์๋ ๋ค๋ฅธ ๋จ์ด๋ค์ ๋ฐ๋ผ ์ฆ ๋ฌธ์ฅ์์ ์์นํ๋ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๊น์. ํ
์คํธ๋ฐ์ดํฐ์์ ์์ ์ ๋ณด๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ํ ์๋ ์๋๋ฐ, RNN์ ํ
์คํธ๋ฐ์ดํฐ์ ์์ ์ ๋ณด๊น์ง ๋ชจ๋ ๊ณ ๋ คํ์ฌ ํ์ต์ ํ๊ฒ ๋ค๋ ๊ฒ์
๋๋ค.
RNN์ด ์ด๋ป๊ฒ ํ
์คํธ๋ฐ์ดํฐ์ ์์ ์ ๋ณด๋ฅผ ๊ณ ๋ คํด์ ํ์ต๋๋์ง ์์๋ณผ๊น์? RNN(์ํ์ ๊ฒฝ๋ง)์ ์ด๋ฆ์ฒ๋ผ ๋ชจ๋ธ ๋ด๋ถ์ โ์ํโํ๋ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ด, ๊ณผ๊ฑฐ์ ํ์ตํ ๊ฐ์ ํ์ฌ์ ํ์ต์ ๋ฐ์ํ๋ ๊ณผ์ ์ ๊ณ์ํด์ ๋ฐ๋ณตํ ์ ์์ด์. ๋ฐ๋ก ๊ณผ๊ฑฐ์ ํ์ตํ ๊ฐ์ ๊ฐ์ค์น(Weight Value)๋ฅผ ํ์ฌ์ ํ์ต๊ณผ์ ์ ๋ฐ์ํ๋ ๋ฐฉ๋ฒ์ ํตํด์์.
ย
RNN ์๊ณ ๋ฆฌ์ฆ์ ์๋ฆฌ
* โ[๋ฅ๋ฌ๋] RNN ๊ธฐ์ด (์ํ์ ๊ฒฝ๋ง - Vanilla RNN)โ ์์์ ์ค๋ช
๊ณผ ์ด๋ฏธ์ง, ์์ ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค. https://www.youtube.com/watch?v=PahF2hZM6cs
RNN ์๊ณ ๋ฆฌ์ฆ์ด ์๋ํ๋ ์๋ฆฌ๋ฅผ ๊ฐ๋จํ ์์๋ณผ๊ฒ์. ๋จผ์ ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ฅ์์ ๋จ์ด์ ํ์ฌ๋ฅผ ๊ฐ๊ฐ ๋ถ๋ฅํ๋ POSํ๊น
(ํ์ฌ ํ๊น
, Part-Of-Speech Tagging) ์์
์ ํ๋ค๊ณ ์๊ฐํด๋ด
์๋ค.
I, work, at google (๋ ๊ตฌ๊ธ์์ ์ผํด.)
๋๋ช
์ฌ, ๋์ฌ, ์ ์น์ฌ, ๋ช
์ฌ
ํ์์คํญ t์์ RNN ๋ชจ๋ธ ๊ตฌํ ๊ณผ์
a. ์
๋ ฅ์ธต : xt ํฌ์
b. ์๋์ธต : xt์ ht-1์ ๋ํ ํ์ฑํ ํจ์ ์ฒ๋ฆฌ โ yt , ht ์ฐ์ถ (๊ฐ์ค์น์ ํธํฅ๊ฐ์ ๋งค๊ฐ๋ณ์)
c. ์ถ๋ ฅ์ธต : yt์ ๋ํ ํ์ฑํ ํจ์ ์ฒ๋ฆฌ โ ์์ธก๊ฐ ์ฐ์ถ
๊ทธ ๋ค์ ์์ ์์ โworkโ๋ฅผ ์ฒ๋ฆฌํ ๋๋ โIโ์ ๋ํ ์ํ๊ฐ์ ๊ณ ๋ คํ์ฌ, ํ๋ฅ ์ ์ผ๋ก ๋ฌธ์ฅ์์ ๋งจ ์์ ๋๋ช
์ฌ๊ฐ ์จ ๋ค์๋ ๋์ฌ๊ฐ ์จ๋ค๋ ์ถ๋ก ์ ๊ฑฐ์ณ โworkโ์ ํ์ฌ๋ฅผ โ๋์ฌโ๋ก ํ๋จํ๊ฒ ๋ฉ๋๋ค.
๋จ์ด ํ๋๋ฅผ ์๋์ธต์์ ๊ณ์ฐํด ๋ด๋ณด๋ด๋ ์ฒ๋ฆฌ์ ๋จ์๋ฅผ cell์ด๋ผ๊ณ ํ๋๋ฐ, โworkโ๋ฅผ ์ฒ๋ฆฌํ๋ cell์์๋ ๊ณผ๊ฑฐ์ ๊ณ์ฐํ โIโ์ ๋ํ ์ํ๊ฐ์ด ์ํ์ ์ผ๋ก ๊ฐ์ด ๊ณ ๋ ค๋์ด ๊ณ์ฐ์ด ๋๋ ๊ฒ์
๋๋ค.
๋ค์ด์ด ์ค๋ โatโ์ ์ฒ๋ฆฌํ ๋๋ โIโ์ โworkโ์ ์ํ๊ฐ์ด ๊ณ ๋ ค๋๊ณ ,
โgoogleโ์ ์ฒ๋ฆฌํ ๋๋ โIโ์ โworkโ์ โatโ์ ์ํ๊ฐ์ด ๊ณ ๋ ค๋๊ฒ ์ฃ .
t๋ฒ์งธ ์์ ์์ ํ์ฌ์ input์ธ xt์ ๊ณผ๊ฑฐ t-1๋ฒ์งธ ์์ ์์ ์ฒ๋ฆฌํ ์ํ๊ฐ ht-1๋ฅผ ๊ณ ๋ คํด ํ์ฌ์ ์ํ๊ฐ ht๋ฅผ ์ฐ์ถํ๋ ์
์ด๋ฌํ ์์ ์ด ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต๋๋ฉด ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์งํ๋ฉ๋๋ค. ์์ ๋ง๋ค ๋์ผํ cell์ด ์ฌ์ฉ๋๊ณ , ๊ฐ์ค์น์ ํธํฅ๊ฐ๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ๊ฐ์ค์น์ ํธํฅ๊ฐ์ RNN ๋ชจ๋ธ์ ํ์ต์ํค๋ ๊ณผ์ ์์ ๋ชจ๋ธ์ด ์ต์ข
์ ์ผ๋ก ๊ณ์ฐํ์ฌ ์ฐ์ถํ ์์ธก๊ฐ๊ณผ ์ ๋ต๊ฐ ์ฌ์ด ์ฐจ์ด๋ฅผ ์ค์ฌ์ฃผ๋ ๋ฐฉํฅ์ผ๋ก ๊ณ์ํด์ ์กฐ์ ๋๋ฉฐ ์ต์ ํ๋ฉ๋๋ค.
์ด๋ ๊ฒ ๋งค๊ฐ๋ณ์์ธ ๊ฐ์ค์น์ ํธํฅ๊ฐ์ ์ต์ ํ์ํค๋ ๊ณผ์ ์ธ back propagation ์ญ์ ์์ ์ ๋ฐ๋ผ ์์ฐจ์ ์ผ๋ก ์งํ๋์ด์, BPTT(Back Propagation THROUGH TIME)๋ผ๊ณ ํฉ๋๋ค.
์์ t์์ RNN ๋ชจ๋ธ์ ์ง๋ํ์ต(์ ๋ต์ ์๋ ค์ฃผ๋ ํ์ต)ํ๋ ๊ณผ์
: ์ถ๋ ฅ์ธต์์ ์ฐ์ถํ ์์ธก๊ฐ๊ณผ ์ ๋ต๊ฐ ๊ฐ ์ฐจ์ด(error)๊ฐ ์ค์ด๋ค๋๋ก
๋งค๊ฐ๋ณ์(๊ฐ์ค์น & ํธํฅ๊ฐ)๋ฅผ ์ต์ ํ
ย
2) RNN์ ๋จ์ ์ ๋ณด์ํ LSTM
ย
RNN ๋ชจ๋ธ์ ๋น๊ต์ ์งง์ ์ํ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋์๋ ํจ๊ณผ์ ์ด์ง๋ง, ๋ฐ์ดํฐ๊ฐ ๋ง์์ง๋ฉด ์์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฅผ ๋ง์ง๋ง๊น์ง ๊ธฐ์ตํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๊ทธ ์ด์ ๋ RNN์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๊ฐ ์ด์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ํ์ฌ ์ฒ๋ฆฌ๋๊ธฐ ๋๋ฌธ์ด์์. ์ด๋ ๊ฒ ์ด์ ๊ฒฐ๊ณผ์ ์์กดํ๋ ๊ณ์ฐ ๋ฐฉ์์์๋ input ๋จ์ด ๊ฐ์๊ฐ ๋ง์์ง๊ณ ๊ฐ ๋จ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ์์ ๋ค์ด ๋ง์์ง๋ฉด ๋ง์์ง์๋ก, ์ด์ ์์ ๋ค์ ์ ๋ณด๊ฐ ์ถฉ๋ถํ ์ ๋ฌ๋๊ธฐ ์ด๋ ค์์ง๋๋ค.
์ด๋ฌํ RNN๋ชจ๋ธ์ ๋ฌธ์ ๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ๋ฑ์ฅํ ๋ชจ๋ธ์ด ๋ฐ๋ก LSTM(Long Short-Term Memory, ์ฅ๋จ๊ธฐ ๋ฉ๋ชจ๋ฆฌ)์
๋๋ค! LSTM์ cell ๋ด๋ถ์๋ ์
๋ ฅ๊ฐ์ hidden state ๊ฐ(์ํ๊ฐ)์ผ๋ก ๊ณ์ฐํ๋ ๊ณผ์ ๋ฟ ์๋๋ผ, ์
๋ ฅ๊ฐ์ cell state ๊ฐ์ผ๋ก ๊ณ์ฐํ๋ memory cell์ ๋งค์ปค๋์ฆ๋ ์ถ๊ฐ๋์ด ์์ด์.
์ด์ ์์ ๋ฌธ์ฅ๊ณผ ํจ๊ป LSTM์ cell์ด ๊ตฌํ๋๋ ๊ณผ์ ์ ์ดํด๋ณผ๊น์?
* โ[๋ฅ๋ฌ๋] LSTM ์ฝ๊ฒ ์ดํดํ๊ธฐโ ์์์ ์ค๋ช
๊ณผ ์ด๋ฏธ์ง, ์์ ๋ฅผ ์ฐธ๊ณ ํ์์ต๋๋ค. https://www.youtube.com/watch?v=bX6GLbpw-A4
John is my best friend, .... (x1, x2, x3, x4, x5, ....)
He likes basketball, .... (x23, x24, x25, ....)
1)_____ is still my best friend, .... (x50, x51, x52, x53, x54, x55, ....)
Jane is his wife, .... (x80, x81, x82, x83, ....)
2)_____ knows I am best friend of John .... (x100, x101, x102, x103, ....)
โ ๋น์นธ 1)์ ์ฌ ๋๋ช
์ฌ๋ โHeโ, ๋น์นธ 2)์ ์ฌ ๋๋ช
์ฌ๋ โSheโ
์์ ์์ ๋ฌธ์ฅ๋ค์ LSTM์ด ํ์ตํ๋ค๊ณ ์๊ฐํด ๋ด
์๋ค. ๊ฐ ๋จ์ด๋ค์ ์์ ์ ์์๋ก ์ค์ ํด๋ดค์ด์.
์ฒซ ๋ฒ์งธ ๋น์นธ์ ๋๋ฌํ ๋๊น์ง๋ ์ด์ ๋ฌธ์ฅ๋ค์์ ์ธ๊ธ๋ John์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํด๋๊ณ , ๋น์นธ์ ๋ค์ด๊ฐ ๋ง์ด โheโ๊ฐ ๋ ๊ฒ์ด๋ ์์ธก์ ๊ฐ์งํด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ค ๋ ๋ฒ์งธ ๋น์นธ์ ์ฒ๋ฆฌํ๋ 100๋ฒ์งธ ์์ ์ด ์ค๋ฉด ์๋ก ๋ค์ด์จ Jane์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ๊ณ , ์ด์ ์ John์ ๋ํ ์ ๋ณด๋ ์ ์ ์์ด์ผ ๋น์นธ์ ๋ค์ด๊ฐ ๋ง์ด โsheโ๊ฐ ๋ ๊ฒ์ด๋ผ ์์ธกํ ์ ์์ ๊ฑฐ์์. ์ด์ฒ๋ผ LSTM ๋ชจ๋ธ์๋ ๋ถํ์ํ ์ ๋ณด๋ ์์ด๋ฒ๋ฆฌ๊ณ , ํ์ํ ์ ๋ณด๋ ๊ธฐ์ต์ ๊ฐ์งํ๋ ๋งค์ปค๋์ฆ์ด ์์ต๋๋ค. ๋ฐ๋ก โ์ญ์ ๊ฒ์ดํธโ์
๋๋ค.
Jane์ด๋ ๋จ์ด๊ฐ ์ฒ์ ๋ฑ์ฅํ๋ 80๋ฒ์งธ ์์ ์ ๊ธฐ์ค์ผ๋ก LSTM ๋ชจ๋ธ์ด ์ ๋ณด๋ฅผ ํ์ตํ๋ ๊ณผ์ ์ ๋ฐ๋ผ๊ฐ ๋ณผ๊น์?
a. ์
๋ ฅ ๊ฒ์ดํธ (Input Mechanism)
b. ์ญ์ ๊ฒ์ดํธ (Forget Mechanism)
c. ์ถ๋ ฅ ๊ฒ์ดํธ (Output Mechanism)
์ด์ฒ๋ผ LSTM์์๋ ์
๋ ฅ, ์ญ์ , ์ถ๋ ฅ ๊ฒ์ดํธ๋ฅผ ๊ฑฐ์ณ ๊ธฐ์ตํ ์ ๋ณด์ ์ญ์ ํ ์ ๋ณด๋ฅผ ๊ฒฐ์ ํฉ๋๋ค. LSTM ๋ชจ๋ธ์ ํ์ฉํ๋ฉด ๊ธด ์ํ์ค์ ๋ฐ์ดํฐ๋ ์ ๊ตํ๊ฒ ๋ถ๋ฅํด๋ผ ์ ์๋ต๋๋ค.
3) LSTM์ผ๋ก ๊ฐ์ ๋ถ๋ฅ ํ์ตํ๊ธฐ
ย
๋
ผ๋ฌธ์์ ์ ์ํ๋ ์ด๋ณ ๊ฐ์ฌ ๊ฐ์ ๋ถ๋ฅ ๋ชจ๋ธ์ ์ด๋ณ ๋
ธ๋ ๋ฐ์ดํฐ ์์ง ๋ฐ ํ์ต๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ ๋จ๊ณ, ์ด๋ณ ๊ฐ์ฌ ๊ฐ์ ์ฌ์ ๊ตฌ์ถ ๋จ๊ณ, ์ด๋ณ ๊ฐ์ฌ ๊ฐ์ ๋ถ๋ฅ ๋จ๊ณ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ๊ทธ์ค ๊ฐ์ฌ ๊ฐ์ ๋ถ๋ฅ ๋จ๊ณ์์ ๋ฌธ์ฅ์ ํ๋ฆ์ ํ์ธํ๊ณ ์ด๋ณ ๊ฐ์ฌ์ ๊ฐ์ ์ ์ ํํ๊ฒ ๋ถ๋ฅํ๊ธฐ ์ํด LSTM ๋ชจ๋ธ์ด ํ์ฉ๋์์ต๋๋ค. LSTM ๋ชจ๋ธ์ ์ง๋ํ์ต์ํค๊ธฐ ์ํด์ ํ์ต๋ฐ์ดํฐ๋ก ์์ Word2Vec์ผ๋ก ๊ตฌ์ถํ ๊ฐ์ ์ฌ์ ์ ์ด์ฉํ๊ณ , ์ ๋ต ๋ฐ์ดํฐ๋ก๋ ๊ฐ์ ๋จ์ด์ ๋ผ๋ฒจ๋ง๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ค๊ณ ํฉ๋๋ค.
ํ์ต์ ์ฌ์ฉ๋ ๋จ์ด์ ๊ฐ์๋ ์ด 30๊ฐ๋ก, ๊ฐ๊ฐ์ ๋จ์ด๋ฅผ ์ฒ๋ฆฌํ๋ ์์ ์ญ์ 30๊ฐ๊ฐ ๋ฉ๋๋ค. ์ด 30๊ฐ์ ๋จ์ด๋ค์ 3์ฐจ์ ๋ฒกํฐ์ธ ์๋ ์๋ฒ ๋ฉ ์ธต์ ์๋ฒ ๋ฉ์ด ๋์ด ์์ต๋๋ค.
๋ํ ์๋ ์๋ฒ ๋ฉ ์ธต์ ์
๋ ฅ๊ฐ X, ๋ผ๋ฒจ๋ง๋ ๊ฐ์ ์ ๊ฒฐ๊ณผ๊ฐ Y๋ก ์ง์ ํ์์ต๋๋ค. X์ ์๋ ์
๋ ฅ๊ฐ x1, x2, x3.....x30์ด ๊ฐ๊ฐ LSTM ๋ด๋ถ cell์ ๊ฑฐ์ณ y1, y2, y3.... y30์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก ์ฐ์ถ๋๊ณ , ์ด ๊ฒฐ๊ณผ๊ฐ์ด ๋ค์ ์ต์ข
์์๊ฐ์ผ๋ก ์ฐ์ถ๋๋ ๊ณผ์ ์๋ softmax๋ผ๋ ํ์ฑํ ํจ์๊ฐ ์ ์ฉ๋์๊ฒ ๋ค์.
์ง๋ํ์ต์ ๊ฑฐ์น LSTM ๋ชจ๋ธ์ ์ฃผ์ด์ง ๋จ์ด ์
๋ ฅ๊ฐ์ ๋ํด ๋
ผ๋ฌธ์์ ๋ถ๋ฅํ 4๊ฐ์ง์ ์ด๋ณ ๊ฐ์ โ์ฌํโ, โ๋ถ์ โ, โ๋ฌด๊ด์ฌ(๊ด์กฐ)โ, โ๋ถ๋
ธโ ์ค ํ๋๋ฅผ ํ๋จํด๋ผ ์ ์์ต๋๋ค. ์๋ ์ฌ์ง์ ๋ณด๋ฉด ๊ฐ์ โํค์ด์ง๋คโ๋ผ๋ ๋จ์ด๋ ๋ฌธ์ฅ์ ๋ด์ฉ๊ณผ ๋ฌธ์ฅ ๋ด ์์น ๋ฑ์ด ๊ณ ๋ ค๋์ด ์๋ก ๋ค๋ฅธ ๊ฐ์ ์ผ๋ก ๋ถ๋ฅ๋๋ ๊ฒ์ ๋ณผ ์ ์์ด์. โ์ฐ๋ฆฌ ํค์ด์ ธ ๋ณด์โ๋ผ๋ ๋ฌธ์ฅ์์๋ ๋ฌด๊ด์ฌ์ ๊ฐ์ ์ผ๋ก, โ๋ ๋ชป ํค์ด์ ธ ๋๋ฅผ ๋ ๋๋ฉด ์๋ผโ ๋ผ๋ ๋ฌธ์ฅ์์๋ ๋ถ์ ์ ๊ฐ์ ์ผ๋ก ๋ถ๋ฅ๊ฐ ๋์๋ค์.
๐ง Outro. More & More
ย
์ด๋ ๊ฒ ์์ฐ์ด์ฒ๋ฆฌ ๋ชจ๋ธ ์ค Word2Vec์ LSTM๋ฅผ ํ์ฉํด ์ด๋ณ ๋
ธ๋ ๊ฐ์ฌ์ ๊ฐ์ ์ ๋ถ๋ฅํ๋ ์์
์ด ์ด๋ป๊ฒ ๊ฐ๋ฅํ์ง ์์๋ณด์์ต๋๋ค. ์ด๋ณ ๋
ธ๋๋ค ์ค์์๋ ๋ฌด๊ด์ฌ, ํ์ค ๋ถ์ , ์ฌํ ๋ฑ ๊ฐ์ ์ ๊ฒฐ์ด ๋ค๋ฅด๊ฒ ๋๋ ์ ์๋ค๋ ์ ๊ณผ, ์ด๋ฐ ์ฌ์ธํ ๊ฐ์ ์ ์ฐจ์ด๋ฅผ ์ฌ๋์ด ์ผ์ผ์ด ๋ถ์ํ์ง ์์๋ ์์ฐ์ด์ฒ๋ฆฌ๋ฅผ ํตํด ์ ๋ถ๋ฅํด๋ผ ์ ์๋ค๋ ์ ์ด ์ ๋ง ์ ๊ธฐํ ๊ฒ ๊ฐ์ต๋๋ค. ํนํ ๋
ธ๋ ๊ฐ์ฌ๋ โ์ด๋ณโ์ด๋ โ์ฌ๋โ์ ์ง์ ์ ์ผ๋ก ์ธ๊ธํ์ง ์๊ณ ๋ค์ํ ์์ ๋ก ๊ฐ์ ์ ์ ๋ฌํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์๋ฐ, ์ด๋ฌํ ์์ ์ ํํ์ ์๋ฏธ๋ Word2Vec ๋ชจ๋ธ์ ํตํด ์ถฉ๋ถํ ํ์
์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ํ์ธํ ์ ์์์ด์.
NLP๋ฅผ ํ์ฉํด ๋
ธ๋ ๊ฐ์ฌ์ ์ฃผ์ ๋ ๊ฐ์ ์ ๋ถ๋ฅํด๋ด๋ ๋ชจ๋ธ์ด ๋ ๋ฐ์ ํ๊ฒ ๋๋ค๋ฉด, ๊ธฐ์กด์ ๋ฉ๋ก๋์ ์ ์ฌ์ฑ์ด๋ ๋
ธ๋ ์ ๋ฐ์ ์ฅ๋ฅด๋ ๋ถ์๊ธฐ์ ๋ํ ํด์ํ๊ทธ ํค์๋์ ๊ธฐ๋ฐํ์ฌ ๋
ธ๋๋ฅผ ์ถ์ฒํ๋ ์์คํ
์์ ๋ ๋์๊ฐ ๋
ธ๋ ์ถ์ฒ๊ณผ ํ๋ ์ด๋ฆฌ์คํธ ํ๋ ์ด์
์ด ๊ฐ๋ฅํด์ง ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ฌํ ๊ฐ์ ์ด ๋๋ฌ๋๋ ๋
ธ๋ ๊ฐ์ฌ์ ํ ๋ถ๋ถ์ ์ถ์ฒํด์ฃผ๋ ์์คํ
์ด ๊ฐ๋ฅํด์ง๋ค๋ฉด ์ถ์ฒ์ ๋จ์๊ฐ ํ๋์ ๊ณก์ด ์๋๋ผ ๊ทธ๋ณด๋ค ๋ ์ธ๋ถํ๋ ๊ฐ์ฌ ๊ตฌ์ ์ด ๋๋ ๊ฒ์ด๋, ๋ ํ๋ถํ ๋
ธ๋ ์ถ์ฒ์ด ๊ฐ๋ฅํด์ง ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
๋ ๋ฐ์ด๋ ์ฑ๋ฅ์ NLP ๋ชจ๋ธ์ ๊ตฌํํ๊ธฐ ์ํ ์ฐ๊ตฌ์๋ค์ ๋
ธ๋ ฅ๋ ๋์์ด ์ด์ด์ง๊ณ , ์ ์ ๋ ๋ฐ์ ๋๋ NLP ๋ชจ๋ธ์ ํ์ฉํ ์ ์๋ ๋ฒ์๋ ๋์์ด ๋์ด์ง ์์ผ๋ก๊ฐ ๊ธฐ๋๋์ง ์์ผ์ ๊ฐ์?
ย
ย
๐ง ์ฐธ๊ณ ๋ฌธํ
ย
- โจย AI ML DL, [์ผ๋ผ์ค] ๋ฌด์์ ํํ ๋ฆฌ์ผ1 - Sequential Model ๊ตฌํ, 2019.12.11., https://ebbnflow.tistory.com/120
- โจย AI ML DL, [์ธ๊ณต์ง๋ฅ] ANN, DNN, CNN, RNN ๊ฐ๋ ๊ณผ ์ฐจ์ด, 2019.12.10., https://ebbnflow.tistory.com/119?category=895675
- [๋ฅ๋ฌ๋] RNN ๊ธฐ์ด (์ํ์ ๊ฒฝ๋ง - Vanilla RNN), Minsuk Heo ํ๋ฏผ์, 2018.9.2., https://www.youtube.com/watch?v=PahF2hZM6cs
- ํ์์ข ์ด๊ฐ๋ฐ์, ๋ฅ๋ฌ๋์์ ๊ฐ์ค์น(W), ํธํฅ(Bias)์ ์ญํ , 2021.8.30. https://jh2021.tistory.com/3
- [ํ ์ํ๋ก2 ๋ฅ๋ฌ๋] RNN, Minsuk Heo, 2020.5.25. https://youtu.be/9c4RupbiuZU
- [๋ฅ๋ฌ๋] LSTM ์ฝ๊ฒ ์ดํดํ๊ธฐ, Minsuk Heo ํ๋ฏผ์, 2018.9.9, https://www.youtube.com/watch?v=bX6GLbpw-A4
- ์๋ช ์ง, ๋ฐ์ํธ, ์ ์ฃผํ.(2020).Word2Vec๊ณผ LSTM์ ํ์ฉํ ์ด๋ณ ๊ฐ์ฌ ๊ฐ์ ๋ถ๋ฅ.์ค๋งํธ๋ฏธ๋์ด์ ๋,9(3),90-97. https://www-dbpia-co-kr-ssl.access.ewha.ac.kr/journal/articleDetail?nodeId=NODE10659164
- ifdean, RNN & LSTM - ์ํ์ ๋ฐ์ดํฐ ํ์ต, 2021.5.22., https://ifdean.tistory.com/5?category=859814
- 27. RNN(์ํ์ ๊ฒฝ๋ง), 2020.10.5., https://welcome-to-dewy-world.tistory.com/102?category=913368
- 28 . LSTM(Long Short-Term Memory), 2020.10.5., https://welcome-to-dewy-world.tistory.com/103?category=913368
ย