๐ Pytorch Tutorials
๐ 1.Positional Encoding
๐ positional encoding์ด๋ ๋ฌด์์ธ๊ฐ
์
๋ ฅ ๋ฐ์ดํฐ(๋ฌธ์ฅ) โ ํ๋ ฌ
๋จ์ด ์ธ๋ฑ์ค๋ค์ ๊ฐ๊ฐ ๋ค๋ฅธ ๋ฒกํฐ๊ฐ์ ๊ฐ์ง๊ณ , ๋จ์ด์ ํผ์ฒ ๊ฐ์ด ์ ์ฌํ ์๋ก(= ๋ฌธ๋งฅ์ ์ ์ฌ๋๊ฐ ๋์์๋ก) ๋ฒกํฐ ๊ณต๊ฐ์ ์๋ฒ ํ
๋ฒกํฐ๋ ๊ฐ๊น์์ง
- RNN / LSTM : ์ ๋ ฅ๋๋ ๋ฌธ์ฅ์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํจ (์ ์ฐ์ฐ์ด ๋๋์ผ ๋ท ์ฐ์ฐ ์งํ)
- Transformer : ์ ๋ ฅ๋ ๋ฌธ์ฅ์ ๋ณ๋ ฌ๋ก ํ ๋ฒ์ ์ฒ๋ฆฌํจ
โ ๋จ์ด์ ์์น(์์)๋ฅผ ์ ์ ์๋ค๋ ๋ฌธ์ ๋ฐ์
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด Positional Encoding์ ์ฌ์ฉํด ์ ๋ ฅ๋๋ ๋ฌธ์ฅ์์์ ๋จ์ด์ ์์์ ๋ํ ์ ๋ณด๋ฅผ encodingํจ โ ๋จ์ด ๋ฒกํฐ ์์ ๋จ์ด์ ์์น ์ ๋ณด๋ฅผ ํฌํจ์ํด
๐ Transformer ์ดํดํ๊ธฐ1
seq2seq ๋ชจ๋ธ์ ํฌ๊ฒ 2๊ฐ๋ก ๊ตฌ์ฑ๋จ
: ์ ๋ ฅ ๋ฌธ์ฅ์ ๋ชจ๋ ๋จ์ด๋ค์ ์์ฐจ์ ์ผ๋ก ์ ๋ ฅ ๋ฐ์ ๋ค์ ๋ง์ง๋ง์ ๋ชจ๋ ๋จ์ด ์ ๋ณด๋ค์ ์์ถํด์ ํ๋์ ๋ฒกํฐ( = Context vector)๋ก ๋ง๋ฆ
: ์ปจํ ์คํธ ๋ฒกํฐ๋ฅผ ๋ฐ์ ๋ฒ์ญ๋ ๋จ์ด๋ค์ ํ๋์ฉ ์์ฐจ์ ์ผ๋ก ์ถ๋ ฅํจ
โ ์ ๋ ฅ ๋ฌธ์ฅ โ ํ๋์ ์ปจํ ์คํธ ๋ฒกํฐ โ ์ถ๋ ฅ ์ํ์ค
RNN์ ๊ธฐ๋ฐํ seq2seq ๋ชจ๋ธ์ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฌธ์ ์ ์ด ๋ํ๋ ์ ์์
1. ์ ๋ณด ์์ค (โต ํ๋์ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฒกํฐ์ ๋ชจ๋ ์ ๋ณด๋ฅผ ์์ถํ๋ ค๊ณ ํด์)
2. ๊ธฐ์ธ๊ธฐ ์์ค
โ ์
๋ ฅ ๋ฌธ์ฅ์ด ๊ธธ๋ฉด ๋ฒ์ญ ํ์ง์ด ๋จ์ด์ง๋ ํ์์ผ๋ก ๋ํ๋ ์ด๋ฅผ ํด๊ฒฐํ๊ณ ์ Attention ๊ธฐ๋ฒ ์ฌ์ฉํ๊ฒ ๋จ
Decoder์์ ์ถ๋ ฅ ๋จ์ด๋ฅผ ์์ธกํ๋ ๋งค ์์ (time step)๋ง๋ค encoder์ ์ ์ฒด ์
๋ ฅ ๋ฌธ์ฅ์ ๋ค์ ํ ๋ฒ ์ฐธ๊ณ ํจ
์ด๋ ์ ์ฒด ์
๋ ฅ ๋ฌธ์ฅ์ ๋ชจ๋ ๋์ผํ ๋น์จ๋ก ์ฐธ๊ณ ํ๋ ๊ฒ์ด ์๋๋ผ ํด๋น ์์ ์์ ์์ธกํด์ผ ํ ๋จ์ด์ ์ฐ๊ด ์๋ ์
๋ ฅ ๋จ์ด ๋ถ๋ถ์ ์ข ๋ ์ง์คํด์ ๋ณด๊ฒ ๋จ
ํ์ด์ฌ์ ๊ธฐ๋ณธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ์๋ ์์ง๋ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๊ณ ๊ณ ๋ คํด์ผ ํ ์ฌํญ์ด ๋ง์
spaCy
: tokenization, ํ์ฌ ํ๊น ๋ฑ ๊ธฐ๋ณธ์ ์ธ ์ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ์ง์ํ๋ ์์ฐ์ด์ฒ๋ฆฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
spaCy๋ฅผ ์ด์ฉํด ํ ํฐํ๋ฅผ ์ํํ๋ฉด ํ ํฐ ์ธ์๋ PoS(ํ์ฌ), lemma ๋ฑ์ ์ ๋ณด๋ฅผ ์ ์ ์์NLTK
torchtext
+) ํจ์
torch.topk()
: ์์ธก ๊ฐ์์ top-k๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์ ์๋ ํจ์ # values์๋ ๊ฐ
# indexs์๋ ์ธ๋ฑ์ค ๊ฐ
values, indexs = torch.topk(predict, k=k, dim=-1)