Ko-En Translation
๋ฐ์ดํฐ ์ค๋น
๋ฐ์ดํฐ์
AI Hub์ ํ๊ตญ์ด-์์ด ๋ฒ์ญ ๋ง๋ญ์น(๋ณ๋ ฌ) ์ฌ์ฉํ๋ค.
1_๊ตฌ์ด์ฒด(1).xlsx์ 200,000๊ฐ์ ํ๊ตญ์ด-์์ด ์์ ์ด์ฉํด ์ดํ๋ฅผ ๊ตฌ์ฑํ๊ณ ํ์ตํ๋ค.

ํ์ฑ
xlsx ํ์ผ์ด๋ฏ๋ก pandas์ openpyxl์ ์ค์นํด ํ์ฑํ๊ณ , ํ ์คํธ ํ์ผ๋ก ์ ์ฅํ๋ค. ์ ์ฅํ ๋ ๋ฏธ๋ฆฌ ์ ์ฒ๋ฆฌ ๋ฐ tokenize ํ ์ ์ฅํ๋ค.
๋ฌธ์ฅํด ์กด์ฌํ๋ ๋ฌธ์ฅ๋ถํธ ์์ ๊ณต๋ฐฑ์ ์ถ๊ฐํ๊ณ ํ๊ธ/์์ด์ ํ์ํ ๋ฌธ์ฅ๋ถํธ๋ง ๋จ๊ธด๋ค. ์ง์ฐ๋ฉฐ ์๊ธด ์ฌ๋ฌ๊ฐ์ ๊ณต๋ฐฑ์ ํ๋์ ๊ณต๋ฐฑ์ผ๋ก ๋ฐ๊พผ๋ค. ๊ทธ ํ tokenizeํ๋ค.
์ดํ์ง / ํ ํฌ๋์ด์
Sentencepiece๋ฅผ ์ฌ์ฉํ๋ค. konlpy์ Okt์ SpaCy๋ฅผ ์ฌ์ฉํด ๊ฐ๊ฐ ํ๊ตญ์ด์ ์์ด๋ฅผ tokenizeํ๋ค. vocab ์ ์์ torchtext๋ฅผ ์ด์ฉํ๋ค.
ํน์ ๊ธฐํธ๋ <pad>, <unk>, <s>, <\s>๊ฐ ์๊ณ ๊ฐ๊ฐ 0, 1, 2, 3๋ฒ์ด๋ค. <s>๋ ๋ฌธ์ฅ์ ์์, <\s>๋ ๋ฌธ์ฅ์ ๋ ํ ํฐ์ด๋ฉฐ <pad>๋ ๊ธธ์ด๊ฐ ๋ค๋ฅธ ์ฌ๋ฌ ๋ฌธ์ฅ์ ๋ณ๋ ฌํํ๊ธฐ ์ํด ๋น ๊ณต๊ฐ์ ์ฑ์ฐ๋๋ฐ ์ฌ์ฉํ๋ค.
kor.txt์ eng.txt๋ฅผ ์ด์ฉํด ์คํํ ๊ฒฐ๊ณผ ๋ค์ ํ์ผ์ด ์์ฑ๋๋ค.
๋ชจ๋ธ ๋ง๋ค๊ธฐ
์๋ฐฉํฅ ์ธ์ฝ๋์ ์ดํ ์ ์ ์ฌ์ฉํ multilayer Seq2seq๋ฅผ ๋ง๋ค ๊ฒ์ด๋ค.

multilayer์ด๋ฏ๋ก ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๊ตฌ์กฐ๊ฐ ๋์จ๋ค.
์ธ์ฝ๋๊ฐ ์๋ฐฉํฅ์ด๋ฏ๋ก ๋์ฝ๋๋ก hidden state๋ฅผ ๋๊ธธ ๋ ๋ฐ๋์ ์ฐจ์์ ์ ๋ฐ์ผ๋ก ์ค์ฌ์ฃผ์ด์ผ ํ๋ค.
์ธ์ฝ๋
GRU Cell์ ์ด์ฉํ RNN์ ๋ง๋ ๋ค. ์๋์ธต๊ณผ ์๋ฒ ๋ฉ ์ฐจ์์ด ๊ฐ๋ค๊ณ ์ค์ ํ๋ค.
(20, 22๋ฒ ์ค)nn.utils.rnn.pack_padded_sequence(x, lengths) ๋ถ๋ถ์ด ์๋๋ฐ, ์ด๋ ์ฌ๋ฌ ๊ฐ์ ๋ฐฐ์น๋ฅผ ํ๋ฒ์ ์ฐ์ฐํ ๋, <pad> ํ ํฐ์ ๊ณ์ฐํ์ง ์๋๋ก ๋ง๋ค์ด์ค๋ค. ๋จ, ์
๋ ฅ ๋ฐฐ์น์ ๊ธธ์ด๋ฅผ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํด ์ค ํ์๊ฐ ์์ผ๋ฏ๋ก, train ์ ์ฒ๋ฆฌํ๋ค.
(24๋ฒ ์ค) GRU cell์ ์ถ๋ ฅ์ผ๋ก ๊ทธ timestep์ hidden state๋ฅผ ์ถ๋ ฅํ๋ค. ์ด ์ฐจ์์ ์ด๋ค. ํ์ ๋์ฝ๋์์ attention์ ์คํํ ๋ ์ฐจ์์ ๋ง์ถ๊ธฐ ์ํด concatํ๊ณ ํตํฉํ๋ค.
๋ง์ง๋ง hidden state๋ ๊ทธ๋๋ก ์ถ๋ ฅํ๋ค.
๋์ฝ๋
(26๋ฒ ์ค) Bahdanau Attention์ ์ฌ์ฉํ๋ค. Dot attention๊ณผ๋ ๋ฌ๋ฆฌ t-1 ์์ ์ hidden state๋ฅผ attention์ ๋จผ์ ์ฌ์ฉํ ๋ค ์๋ฒ ๋ฉ ์ถ๋ ฅ๊ณผ ํฉ์ณ GRU์ ๋ฃ๋๋ค. Bahdanau Attention์ score ์์ ๋ค์๊ณผ ๊ฐ๋ค. j๋ฒ์งธ (๋ง์ง๋ง layer) ์ธ์ฝ๋ hidden state์ ๋ํ score์ด๋ค.
(28๋ฒ ์ค) ๋ฐฐ์น๋ง๋ค ๊ธธ์ด๊ฐ ๋ค๋ฅด๋ฏ๋ก, ์ ํจํ ๋ชจ๋ j์ ๋ํด ์ด๋ฅผ ์ํํ๊ณ softmax์ทจํ๋ค. ์ ํจํ j๋ง ๊ณจ๋ผ๋ด๊ธฐ ์ํด mask๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ๊ฐ์ ์์ ๋ฌดํ๋๋ก ๋๋ฉด softmax ์ 0์ด ๋๋ค.
(30-34๋ฒ ์ค) ์ด ๊ฐ๋ค๊ณผ ์ธ์ฝ๋ hidden state์ ๊ณฑํ ๊ฒฐ๊ณผ๋ฅผ ์๋ฒ ๋ฉ ๊ฒฐ๊ณผ์ ํฉ์ณ GRU Cell์ ๋ฃ๋๋ค.
(35๋ฒ ์ค) ์ต์ข ์ถ๋ ฅ์ ์ดํ ์ ๊ฒฐ๊ณผ, RNN ์ถ๋ ฅ, ์๋ฒ ๋ฉ ์ถ๋ ฅ์ ๋ชจ๋ ํฉ์ณ ๊ณ์ฐํ๋ค.
Seq2Seq ํตํฉ
**(19-24๋ฒ ์ค) **์ธ์ฝ๋์ ์ด๊ธฐ hidden state์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ํ ์๋ฅผ ๋ง๋ ๋ค. ์ธ์ฝ๋์ ์ ํจํ ํ ํฐ ์์น๋ง์ ๋ง์คํนํ๊ธฐ ์ํ mask๋ ์์ฑํ๋ค.
**(27๋ฒ ์ค) **์ธ์ฝ๋๋ฅผ ๊ฑฐ์ณ ์ธ์ฝ๋์ ๋ง์ง๋ง layer์ hidden state๋ค๊ณผ, decoder๋ก ๋๊ฒจ์ค ๋ง์ง๋ง hidden state๋ฅผ ์ ์ฅํ๋ค.
(28๋ฒ ์ค) ์๋ฐฉํฅ ์ธ์ฝ๋์ ๋ง์ง๋ง hidden state๋ ์ด๋ฏ๋ก ์ฒซ๋ฒ์งธ ์ฐจ์์ ์ธ ๋ฒ์งธ ์ฐจ์์ผ๋ก concatํด์ ์ ์ฐจ์์ผ๋ก ํตํฉํด ์ค๋ค. ์ด๋ฅผ ๋์ฝ๋์ ์ฒซ ๋ฒ์งธ hidden state๋ก ๋๊ธด๋ค.
(32๋ฒ ์ค) ๋์ฝ๋์ ์ฒซ ์ ๋ ฅ์ ๋ฌธ์ฅ์ ์์์ ๋ํ๋ด์ผ ํ๋ฏ๋ก ํญ์ <s>์ด๋ค.
(34๋ฒ ์ค) target ๋ฌธ์ฅ์ ์ต๋ ๊ธธ์ด๊น์ง timestep์ ๋ฐ๋ณตํ๋ค.
(35-37๋ฒ ์ค) ๋์ฝ๋์ ์ ๋ ฅ ํ ์ถ๋ ฅ์ ๊ฐ์ ธ์จ๋ค. ์ถ๋ ฅ๋ hidden state๋ ๋ค์ timestep์ผ๋ก ๋๊ธฐ๊ธฐ ์ํด h_dec์ ๋ค์ ์ ์ฅํ๋ค. ์ถ๋ ฅ์ ์ ์ฅํ๊ณ ์ต๋ ํ๋ฅ ์ ๊ฐ์ง๋ ๋จ์ด์ index๋ฅผ argmax์ ์ ์ฅํ๋ค.
**(39-43๋ฒ ์ค) **๊ต์ฌ ๊ฐ์(Teacher Forcing)์ ํ๋ฅ ์ ์ผ๋ก ์ ์ฉํ๊ธฐ ์ํด ์์ฑํ 0~1 ๋๋ค ์์ ๋ฐ๋ผ ์งํํ๋ค. ๋ง์ฝ ๊ต์ฌ ๊ฐ์๋ฅผ ํ ๊ฒฝ์ฐ, ๋ค์ ๋์ฝ๋ ์ ๋ ฅ์ผ๋ก ์ ๋ต ๋จ์ด๋ฅผ ๋ค์ ์ ๋ ฅ์ผ๋ก ๋๊ธฐ๊ณ , ์๋ ๊ฒฝ์ฐ ํ์ฌ ์ถ๋ ฅ์ ๋ค์ ์ ๋ ฅ์ผ๋ก ๋๊ธด๋ค.
Last updated
Was this helpful?