Ver3.0 ๐ฏ CBOW vs Skip-gram: ๋จ์ด ์๋ฒ ๋ฉ ํ์ต ๋ฐฉ๋ฒ

๐ฏ CBOW vs Skip-gram: ๋จ์ด ์๋ฒ ๋ฉ ํ์ต ๋ฐฉ๋ฒ
๐ ๋จ์ด ์๋ฒ ๋ฉ, ์ ํ์ํ ๊น?
์๋
! ์ค๋์ ์์ฐ์ด์ฒ๋ฆฌ(NLP)์ ํต์ฌ ๊ธฐ์ ์ธ ๋จ์ด ์๋ฒ ๋ฉ์ ๋ํด ์ด์ผ๊ธฐํด๋ณผ๊ฒ. ์ปดํจํฐ๋ ์ฌ์ค ์ฐ๋ฆฌ๊ฐ ์ฐ๋ ๋ง์ ์ดํดํ์ง ๋ชปํด. "์ฌ๊ณผ"๋ผ๋ ๋จ์ด๋ฅผ ๋ด๋ ๊ทธ๋ฅ ๋ฌธ์์ ๋์ด์ผ ๋ฟ์ด์ง.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋จ์ด๋ฅผ ์ซ์ ๋ฒกํฐ๋ก ๋ณํํด์ผ ํด. ๋ง์น ๋ฒ์ญ๊ธฐ์ฒ๋ผ ๋ง์ด์ผ! ์ด๋ ๊ฒ ๋จ์ด๋ฅผ ์ซ์ ๊ณต๊ฐ์ ๋ฐฐ์นํ๋ ๊ฑธ "์๋ฒ ๋ฉ(Embedding)"์ด๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ์ด ๊ณผ์ ์์ ๊ฐ์ฅ ์ ๋ช
ํ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ๋ฐ๋ก CBOW์ Skip-gram์ด์ผ. ๐
๐ Word2Vec์ ํ์
2013๋
, ๊ตฌ๊ธ์ ํ ๋ง์ค ๋ฏธ์ฝ๋กํ(Tomas Mikolov) ์ฐ๊ตฌํ์ด ํ๋ช
์ ์ธ ๋
ผ๋ฌธ์ ๋ฐํํ์ด. ๋ฐ๋ก Word2Vec์ด๋ผ๋ ์ด๋ฆ์ ๋จ์ด ์๋ฒ ๋ฉ ๊ธฐ์ ์ด์์ง! ๐
์ด์ ๊น์ง๋ ๋จ์ด๋ฅผ ์-ํซ ์ธ์ฝ๋ฉ(One-hot Encoding)์ผ๋ก ํํํ์ด. ์๋ฅผ ๋ค์ด ์ฌ์ ์ 10,000๊ฐ์ ๋จ์ด๊ฐ ์๋ค๋ฉด, ๊ฐ ๋จ์ด๋ฅผ 10,000์ฐจ์์ ๋ฒกํฐ๋ก ํํํ๋ ๊ฑฐ์ผ. "์ฌ๊ณผ"๋ [0,0,1,0,0,...,0] ์ด๋ฐ ์์ผ๋ก ๋ง์ด์ผ. ์์ฒญ ๋นํจ์จ์ ์ด์ง? ๐
Word2Vec์ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ด. ๋จ์ด๋ฅผ ํจ์ฌ ์์ ์ฐจ์(๋ณดํต 100~300์ฐจ์)์ ๋ฐ์ง ๋ฒกํฐ(Dense Vector)๋ก ํํํ๋ฉด์๋, ๋จ์ด์ ์๋ฏธ๊น์ง ๋ด์๋ผ ์ ์๊ฒ ๋ ๊ฑฐ์ง!
๊ทธ๋ฆฌ๊ณ Word2Vec์๋ ๋ ๊ฐ์ง ํต์ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์์ด. ๋ฐ๋ก ์ค๋์ ์ฃผ์ธ๊ณต์ธ CBOW์ Skip-gram์ด์ผ! ์ด ๋์ ๊ฐ์ ๋ชฉํ๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ์ ๊ทผ ๋ฐฉ์์ด ์ ๋ฐ๋์ผ. ๋ง์น ์ฐ์ ์ค๋ฅด๋๋ฐ ๋์ชฝ์์ ์ค๋ฅด๋ ์์ชฝ์์ ์ค๋ฅด๋์ ์ฐจ์ด๋๊น? ๐๏ธ
๐ฏ CBOW (Continuous Bag of Words)
CBOW๋ "์ฐ์์ ์ธ ๋จ์ด ๊ฐ๋ฐฉ"์ด๋ผ๋ ๋ป์ด์ผ. ์ด๋ฆ์ด ์ข ํน์ดํ์ง? ๐
CBOW์ ํต์ฌ ์์ด๋์ด๋ ์ด๊ฑฐ์ผ: ์ฃผ๋ณ ๋จ์ด๋ค์ ๋ณด๊ณ ์ค๊ฐ์ ์๋ ๋จ์ด๋ฅผ ์์ธกํ๋ ๊ฒ. ๋ง์น ๋น์นธ ์ฑ์ฐ๊ธฐ ๋ฌธ์ ๋ฅผ ํธ๋ ๊ฒ์ฒ๋ผ!
์๋ฅผ ๋ค์ด๋ณผ๊ฒ. "๋๋ ___ ์ ์ข์ํ๋ค"๋ผ๋ ๋ฌธ์ฅ์ด ์๋ค๊ณ ํด๋ณด์. "๋๋"๊ณผ "์", "์ข์ํ๋ค"๋ผ๋ ์ฃผ๋ณ ๋จ์ด(Context Words)๋ฅผ ๋ณด๊ณ , ์ค๊ฐ์ ๋น์นธ์ ๋ค์ด๊ฐ ๋จ์ด(Target Word)๊ฐ ๋ญ๊น ๋ง์ถ๋ ๊ฑฐ์ผ.
2. ์ด ๋จ์ด๋ค์ ๋ฒกํฐ๋ฅผ ํ๊ท ๋ด์
3. ์ค์ฌ ๋จ์ด๋ฅผ ์์ธกํ๋ ๋ฐฉ์์ผ๋ก ํ์ตํด
์ข ๋ ๊ตฌ์ฒด์ ์ผ๋ก ๋ค์ด๊ฐ๋ณผ๊น? CBOW๋ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํด. ์
๋ ฅ์ธต(Input Layer), ์๋์ธต(Hidden Layer), ์ถ๋ ฅ์ธต(Output Layer) ์ด๋ ๊ฒ 3๊ฐ์ ์ธต์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ด.
์
๋ ฅ์ธต: ์ฃผ๋ณ ๋จ์ด๋ค์ ์-ํซ ๋ฒกํฐ๊ฐ ๋ค์ด๊ฐ
์๋์ธต: ์
๋ ฅ ๋ฒกํฐ๋ค์ ํ๊ท ๋ด์ ํ๋์ ๋ฒกํฐ๋ก ๋ง๋ค์ด (์ด๊ฒ ๋ฐ๋ก ์๋ฒ ๋ฉ ๋ฒกํฐ!)
์ถ๋ ฅ์ธต: ์ค์ฌ ๋จ์ด์ผ ํ๋ฅ ์ ๊ณ์ฐํด
ํ์ต ๊ณผ์ ์์ ์ค์ ์ค์ฌ ๋จ์ด์ ์์ธกํ ๋จ์ด์ ์ฐจ์ด๋ฅผ ์ค์ด๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ์ค์น๋ฅผ ์
๋ฐ์ดํธํ๋ ๊ฑฐ์ง. ์ด ๊ณผ์ ์ ์์ฒ, ์๋ง ๋ฒ ๋ฐ๋ณตํ๋ฉด์ ์ ์ ์ ํํ ๋จ์ด ๋ฒกํฐ๋ฅผ ๋ง๋ค์ด๋ด!
| ๊ตฌ์ฑ ์์ | ์ญํ | ํน์ง |
|---|---|---|
| ์ ๋ ฅ์ธต | ์ฃผ๋ณ ๋จ์ด ์ ๋ ฅ | ์๋์ฐ ํฌ๊ธฐ๋งํผ์ ๋ฌธ๋งฅ ๋จ์ด |
| ์๋์ธต | ๋ฒกํฐ ํ๊ท ํ | ์๋ฒ ๋ฉ ์ฐจ์ ํฌ๊ธฐ |
| ์ถ๋ ฅ์ธต | ์ค์ฌ ๋จ์ด ์์ธก | ์ํํธ๋งฅ์ค๋ก ํ๋ฅ ๊ณ์ฐ |
CBOW์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ์๋์ผ! ์ฌ๋ฌ ๊ฐ์ ๋ฌธ๋งฅ ๋จ์ด๋ฅผ ํ ๋ฒ์ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ํ์ต์ด ๋น ๋ฅด๊ฑฐ๋ . ํนํ ๋ฐ์ดํฐ์
์ด ํด ๋ ํจ์จ์ ์ด์ผ. ๐จ
๋ ํ๋์ ์ฅ์ ์ ์์ ์ฑ์ด์ผ. ์ฌ๋ฌ ๋ฌธ๋งฅ ๋จ์ด์ ์ ๋ณด๋ฅผ ํ๊ท ๋ด๊ธฐ ๋๋ฌธ์, ๋
ธ์ด์ฆ์ ๊ฐํ๊ณ ์ผ๋ฐํ ์ฑ๋ฅ์ด ์ข์. ๋ง์น ์ฌ๋ฌ ์ฌ๋์ ์๊ฒฌ์ ์ข
ํฉํด์ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๊ฒ์ฒ๋ผ ๋ง์ด์ผ!
โก Skip-gram
์, ์ด์ Skip-gram์ ์์๋ณผ ์ฐจ๋ก์ผ! Skip-gram์ CBOW์ ์ ํํ ๋ฐ๋๋ก ์๋ํด. ์ค์ฌ ๋จ์ด๋ฅผ ๋ณด๊ณ ์ฃผ๋ณ ๋จ์ด๋ค์ ์์ธกํ๋ ๊ฑฐ์ง! ๐ฒ
๊ฐ์ ์์๋ก ์ค๋ช
ํด๋ณผ๊ฒ. "๋๋ ์ฌ๊ณผ๋ฅผ ์ข์ํ๋ค"๋ผ๋ ๋ฌธ์ฅ์์, "์ฌ๊ณผ"๋ผ๋ ์ค์ฌ ๋จ์ด๊ฐ ์ฃผ์ด์ก์ ๋ "๋๋", "์", "์ข์ํ๋ค" ๊ฐ์ ์ฃผ๋ณ ๋จ์ด๋ค์ด ๋์ฌ ํ๋ฅ ์ ๊ณ์ฐํ๋ ๊ฑฐ์ผ.
์ ์ด๋ฐ ๋ฐฉ์์ ์ธ๊น? ์๊ฐํด๋ณด๋ฉด ์ฌ๋ฏธ์์ด. ํ๋์ ๋จ์ด๊ฐ ์ฌ๋ฌ ๋ฌธ๋งฅ์์ ์ด๋ป๊ฒ ์ฌ์ฉ๋๋์ง ํ์ตํ๋ ๊ฑฐ๊ฑฐ๋ . ์ด๊ฒ ๋ฐ๋ก Skip-gram์ ๊ฐ์ ์ด์ผ!
2. ์ด ๋จ์ด์ ์๋ฒ ๋ฉ ๋ฒกํฐ๋ฅผ ๊ตฌํ๊ณ
3. ์ฃผ๋ณ์ ๋ํ๋ ๋จ์ด๋ค์ ๊ฐ๊ฐ ์์ธกํ๋ ๋ฐฉ์์ผ๋ก ํ์ตํด
Skip-gram์ ์ ๊ฒฝ๋ง ๊ตฌ์กฐ๋ 3์ธต์ผ๋ก ๋์ด ์์ด. ํ์ง๋ง CBOW์๋ ์
์ถ๋ ฅ์ด ๋ฐ๋์ผ!
์
๋ ฅ์ธต: ์ค์ฌ ๋จ์ด์ ์-ํซ ๋ฒกํฐ
์๋์ธต: ์ค์ฌ ๋จ์ด์ ์๋ฒ ๋ฉ ๋ฒกํฐ
์ถ๋ ฅ์ธต: ๊ฐ ์ฃผ๋ณ ๋จ์ด์ผ ํ๋ฅ ์ ๊ณ์ฐ
์ฌ๊ธฐ์ ์ค์ํ ๊ฑด, Skip-gram์ ํ๋์ ์ค์ฌ ๋จ์ด๋ก ์ฌ๋ฌ ๊ฐ์ ์ฃผ๋ณ ๋จ์ด๋ฅผ ์์ธกํ๋ค๋ ๊ฑฐ์ผ. ์๋ฅผ ๋ค์ด ์๋์ฐ ํฌ๊ธฐ๊ฐ 2๋ผ๋ฉด, ์ค์ฌ ๋จ์ด ํ๋๋ก ์๋ค 2๊ฐ์ฉ ์ด 4๊ฐ์ ๋จ์ด๋ฅผ ์์ธกํ๋ ๊ฑฐ์ง. ์ด๊ฒ ๋ฐ๋ก "skip"์ด๋ผ๋ ์ด๋ฆ์ด ๋ถ์ ์ด์ ์ผ! ๐ฆ
Skip-gram์ ๊ฐ์ฅ ํฐ ์ฅ์ ์ ํฌ์ํ ๋จ์ด์ ๊ฐํ๋ค๋ ๊ฑฐ์ผ. ์์ฃผ ๋ฑ์ฅํ์ง ์๋ ๋จ์ด๋ผ๋, ๊ทธ ๋จ์ด๊ฐ ์ค์ฌ ๋จ์ด๋ก ๋ํ๋ ๋๋ง๋ค ์ฌ๋ฌ ๋ฒ ํ์ต ๊ธฐํ๋ฅผ ๊ฐ๊ฒ ๋๊ฑฐ๋ . CBOW๋ ํฌ์ํ ๋จ์ด๊ฐ ๋ฌธ๋งฅ์ ํฌํจ๋์ด๋ ํ๊ท ์ ๋ฌปํ๋ฒ๋ฆด ์ ์๋๋ฐ, Skip-gram์ ๊ทธ ๋จ์ด๊ฐ ์ฃผ์ธ๊ณต์ด ๋๋ ์๊ฐ์ ๋์น์ง ์์!
๋ ๋ค๋ฅธ ์ฅ์ ์ ๋จ์ด ๊ฐ ๊ด๊ณ๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ํ์ตํ๋ค๋ ๊ฑฐ์ผ. ๊ฐ ๋ฌธ๋งฅ ๋จ์ด๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ์์ธกํ๊ธฐ ๋๋ฌธ์, ๋จ์ด ์(word pair) ๊ฐ์ ๊ด๊ณ๋ฅผ ๋ ์ ํํ๊ฒ ํฌ์ฐฉํ ์ ์์ด. ์ด๋ฐ ์ด์ ๋ก ์์ ๋ฐ์ดํฐ์
์์๋ Skip-gram์ด ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์!
์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ์ฌ์ฉ์ ๋ฆฌ๋ทฐ๋ ๊ฒ์์ด ๋ถ์์ ํ ๋, ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ถํ๋ค๋ฉด CBOW๋ก ๋น ๋ฅด๊ฒ ํ์ตํ๊ณ , ํน์ ์ ๋ฌธ ์ฉ์ด๋ ํฌ์ ๋จ์ด๊ฐ ์ค์ํ๋ค๋ฉด Skip-gram์ ์ ํํ๋ ๊ฒ ์ข์!
โ๏ธ CBOW vs Skip-gram: ์ง์ ๋น๊ต
์, ์ด์ ๋ ๋ฐฉ๋ฒ์ ์ง์ ๋น๊ตํด๋ณผ๊น? ๊ฐ๊ฐ์ ํน์ง์ ํ๋ก ์ ๋ฆฌํด๋ดค์ด! ๐
| ๋น๊ต ํญ๋ชฉ | CBOW | Skip-gram |
|---|---|---|
| ์ ๋ ฅ | ์ฃผ๋ณ ๋จ์ด๋ค (๋ฌธ๋งฅ) | ์ค์ฌ ๋จ์ด |
| ์ถ๋ ฅ | ์ค์ฌ ๋จ์ด | ์ฃผ๋ณ ๋จ์ด๋ค |
| ํ์ต ์๋ | ๋น ๋ฆ โกโกโก | ๋๋ฆผ โก |
| ํฌ์ ๋จ์ด ์ฒ๋ฆฌ | ์ฝํจ | ๊ฐํจ ๐ช |
| ๋๊ท๋ชจ ๋ฐ์ดํฐ | ์ ๋ฆฌ โ | ๋ถ๋ฆฌ |
| ์๊ท๋ชจ ๋ฐ์ดํฐ | ๋ถ๋ฆฌ | ์ ๋ฆฌ โ |
| ์ ํ๋ | ์ผ๋ฐ์ ์ผ๋ก ๋ฎ์ | ์ผ๋ฐ์ ์ผ๋ก ๋์ ๐ฏ |
| ๋ฉ๋ชจ๋ฆฌ ํจ์จ | ๋์ | ๋ฎ์ |
๐ CBOW๊ฐ ์ ๋ฆฌํ ๊ฒฝ์ฐ
โข ๋๊ท๋ชจ ๋ฐ์ดํฐ์
(์๋ฐฑ๋ง ๊ฐ ์ด์์ ๋ฌธ์)
โข ๋น ๋ฅธ ํ์ต์ด ํ์ํ ๋
โข ์ผ๋ฐ์ ์ธ ๋จ์ด๋ค์ด ์ฃผ๋ฅผ ์ด๋ฃฐ ๋
โข ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ด ์์ ๋
โข ์์ ์ ์ธ ์ฑ๋ฅ์ด ์ค์ํ ๋
๐ฏ Skip-gram์ด ์ ๋ฆฌํ ๊ฒฝ์ฐ
โข ์๊ท๋ชจ ๋ฐ์ดํฐ์
โข ํฌ์ํ ๋จ์ด๊ฐ ์ค์ํ ๋
โข ์ ๋ฌธ ์ฉ์ด๋ ๊ณ ์ ๋ช
์ฌ๊ฐ ๋ง์ ๋
โข ๋์ ์ ํ๋๊ฐ ํ์ํ ๋
โข ๋จ์ด ๊ฐ ์ธ๋ฐํ ๊ด๊ณ๊ฐ ์ค์ํ ๋
์ค์ ๋ก ์ฐ๊ตฌ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๋ฉด, Skip-gram์ด ๋๋ถ๋ถ์ ๋ฒค์น๋งํฌ์์ CBOW๋ณด๋ค ์ฝ๊ฐ ๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ฌ. ํนํ ๋จ์ด ์ ์ฌ๋(Word Similarity) ํ์คํฌ๋ ๋จ์ด ์ ์ถ(Word Analogy) ํ์คํฌ์์ ๊ทธ๋! ๐
ํ์ง๋ง CBOW๋ ์ถฉ๋ถํ ์ข์ ์ฑ๋ฅ์ ๋ด๋ฉด์ ํจ์ฌ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์, ์ค๋ฌด์์๋ ์ํฉ์ ๋ฐ๋ผ ์ ํํ๋ฉด ๋ผ. ์๋ฅผ ๋ค์ด ๋ด์ค ๊ธฐ์ฌ ์๋ฐฑ๋ง ๊ฑด์ ์ฒ๋ฆฌํด์ผ ํ๋ค๋ฉด CBOW๊ฐ ํ๋ช
ํ ์ ํ์ด๊ณ , ์ํ ๋
ผ๋ฌธ์ฒ๋ผ ์ ๋ฌธ ์ฉ์ด๊ฐ ๋ง์ ์๊ท๋ชจ ๋ฐ์ดํฐ๋ผ๋ฉด Skip-gram์ด ๋ ๋์ ๊ฑฐ์ผ!
๐ง ๊ธฐ์ ์ ์ธ๋ถ์ฌํญ
์ข ๋ ๊น์ด ๋ค์ด๊ฐ๋ณผ๊น? ๊ธฐ์ ์ ์ธ ๋ถ๋ถ์ ์ดํดํ๋ฉด ๋ ๋ฐฉ๋ฒ์ ์ฐจ์ด๊ฐ ๋ ๋ช ํํด์ ธ! ๐ค
์๋์ฐ ํฌ๊ธฐ (Window Size)
์๋์ฐ ํฌ๊ธฐ๋ ์ค์ฌ ๋จ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์๋ค๋ก ๋ช ๊ฐ์ ๋จ์ด๋ฅผ ๋ณผ ๊ฒ์ธ์ง ๊ฒฐ์ ํ๋ ํ๋ผ๋ฏธํฐ์ผ. ์๋ฅผ ๋ค์ด ์๋์ฐ ํฌ๊ธฐ๊ฐ 2๋ผ๋ฉด, ์ค์ฌ ๋จ์ด ๊ธฐ์ค์ผ๋ก ์ 2๊ฐ, ๋ค 2๊ฐ ์ด 4๊ฐ์ ๋จ์ด๋ฅผ ๋ฌธ๋งฅ์ผ๋ก ์ฌ์ฉํ๋ ๊ฑฐ์ง.
์๋์ฐ ํฌ๊ธฐ = 2์ผ ๋:
"๋๋ [์ค๋] ์ฌ๊ณผ๋ฅผ [๋จน์๋ค] ๋ง์์๋ค"
์ฌ๊ธฐ์ "์ฌ๊ณผ๋ฅผ"์ด ์ค์ฌ ๋จ์ด๋ผ๋ฉด, "๋๋", "์ค๋", "๋จน์๋ค", "๋ง์์๋ค"๊ฐ ๋ฌธ๋งฅ ๋จ์ด๊ฐ ๋ผ. ์๋์ฐ ํฌ๊ธฐ๊ฐ ํด์๋ก ๋ ๋์ ๋ฌธ๋งฅ์ ๊ณ ๋ คํ์ง๋ง, ๊ณ์ฐ๋๋ ๋์ด๋!
โข ํฐ ์๋์ฐ (5-10): ์๋ฏธ๋ก ์ ์ ์ฌ์ฑ, ์ฃผ์ ๊ด๋ จ์ฑ ํ์ต
โข ์ผ๋ฐ์ ์ผ๋ก 5 ์ ๋๊ฐ ์ข์ ์์์ !
๋ค๊ฑฐํฐ๋ธ ์ํ๋ง (Negative Sampling)
์๋ Word2Vec์ ๋ชจ๋ ๋จ์ด์ ๋ํด ํ๋ฅ ์ ๊ณ์ฐํด์ผ ํด. ์ฌ์ ์ 10๋ง ๊ฐ์ ๋จ์ด๊ฐ ์๋ค๋ฉด, ๋งค๋ฒ 10๋ง ๊ฐ์ ํ๋ฅ ์ ๊ณ์ฐํ๋ ๊ฑฐ์ง. ์ด๊ฑด ๋๋ฌด ๋นํจ์จ์ ์ด์ผ! ๐ฐ
๊ทธ๋์ ๋ฑ์ฅํ ๊ฒ ๋ค๊ฑฐํฐ๋ธ ์ํ๋ง์ด์ผ. ์ ๋ต ๋จ์ด 1๊ฐ์ ์ค๋ต ๋จ์ด ๋ช ๊ฐ(๋ณดํต 5-20๊ฐ)๋ง ์ ํํด์ ํ์ตํ๋ ๊ฑฐ์ผ. ์ด๋ ๊ฒ ํ๋ฉด ๊ณ์ฐ๋์ด ์์ฒญ๋๊ฒ ์ค์ด๋ค์ด!
์๋ฅผ ๋ค์ด๋ณผ๊ฒ:
์ ๋ต: "์ฌ๊ณผ" (๊ธ์ ์ํ)
์ค๋ต: "์๋์ฐจ", "์ปดํจํฐ", "ํ๋", "๋ฐ๋ค", "์์
" (๋ถ์ ์ํ)
โ ์ด 6๊ฐ๋ง ๊ฐ์ง๊ณ ํ์ต!
๋ค๊ฑฐํฐ๋ธ ์ํ์ ๋๋คํ๊ฒ ์ ํํ๋๋ฐ, ๋จ์ด์ ๋น๋๋ฅผ ๊ณ ๋ คํด์ ์ ํํด. ์์ฃผ ๋์ค๋ ๋จ์ด์ผ์๋ก ๋ถ์ ์ํ๋ก ์ ํ๋ ํ๋ฅ ์ด ๋์์ง๋ ๊ฑฐ์ง. ์ด๊ฒ ํ์ต ํจ์จ์ ํฌ๊ฒ ๋์ฌ์ค!
์๋ธ์ํ๋ง (Subsampling)
"์", "๋", "์ด", "๊ฐ" ๊ฐ์ ์กฐ์ฌ๋ "the", "a" ๊ฐ์ ๊ด์ฌ๋ ๋๋ฌด ์์ฃผ ๋ํ๋์ ํ์ต์ ๋ฐฉํด๊ฐ ๋ ์ ์์ด. ์ด๋ฐ ๊ณ ๋น๋ ๋จ์ด๋ค์ ํ๋ฅ ์ ์ผ๋ก ์ ๊ฑฐํ๋ ๊ฒ ์๋ธ์ํ๋ง์ด์ผ! ๐ฒ
๊ฐ ๋จ์ด๋ฅผ ์ ์งํ ํ๋ฅ ์ ์ด๋ ๊ฒ ๊ณ์ฐํด:
P(w) = 1 - sqrt(t / f(w))
w: ๋จ์ด
f(w): ๋จ์ด์ ๋น๋
t: ์๊ณ๊ฐ (๋ณดํต 10^-5)
์ด๋ ๊ฒ ํ๋ฉด "์ฌ๊ณผ"์ฒ๋ผ ์๋ฏธ ์๋ ๋จ์ด๋ ๋๋ถ๋ถ ์ ์ง๋๊ณ , "์", "๋" ๊ฐ์ ๋จ์ด๋ ๋ง์ด ์ ๊ฑฐ๋ผ. ๊ฒฐ๊ณผ์ ์ผ๋ก ํ์ต ์๋๋ ๋นจ๋ผ์ง๊ณ ํ์ง๋ ์ข์์ ธ!
๐ป ์ค์ ๊ตฌํ ์์
์ด๋ก ๋ง ์๋ฉด ๋ญํด, ์ค์ ๋ก ์จ๋ด์ผ์ง! Python์ Gensim ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๋ง ์ฝ๊ฒ ๊ตฌํํ ์ ์์ด. ๐
CBOW ๊ตฌํ
from gensim.models import Word2Vec
# ๋ฌธ์ฅ ๋ฐ์ดํฐ ์ค๋น
sentences = [
['๋๋', '์ฌ๊ณผ๋ฅผ', '์ข์ํ๋ค'],
['์ฌ๊ณผ๋', '๋ง์๋', '๊ณผ์ผ์ด๋ค'],
['๋๋', '๊ณผ์ผ์', '๋จน๋๋ค'],
['๋ฐ๋๋๋', '์ข์', '๊ณผ์ผ์ด๋ค']
]
# CBOW ๋ชจ๋ธ ํ์ต
model_cbow = Word2Vec(
sentences,
vector_size=100, # ์๋ฒ ๋ฉ ์ฐจ์
window=5, # ์๋์ฐ ํฌ๊ธฐ
min_count=1, # ์ต์ ๋น๋
sg=0, # 0=CBOW, 1=Skip-gram
workers=4, # ๋ณ๋ ฌ ์ฒ๋ฆฌ
epochs=100 # ํ์ต ๋ฐ๋ณต ํ์
)
# ์ ์ฌ ๋จ์ด ์ฐพ๊ธฐ
similar_words = model_cbow.wv.most_similar('์ฌ๊ณผ', topn=3)
print(similar_words)
Skip-gram ๊ตฌํ
from gensim.models import Word2Vec
# Skip-gram ๋ชจ๋ธ ํ์ต
model_skipgram = Word2Vec(
sentences,
vector_size=100,
window=5,
min_count=1,
sg=1, # Skip-gram ์ฌ์ฉ!
workers=4,
epochs=100,
negative=5 # ๋ค๊ฑฐํฐ๋ธ ์ํ ๊ฐ์
)
# ๋จ์ด ๋ฒกํฐ ํ์ธ
vector = model_skipgram.wv['์ฌ๊ณผ']
print(f"์ฌ๊ณผ ๋ฒกํฐ ์ฐจ์: {len(vector)}")
# ๋จ์ด ๊ฐ ์ ์ฌ๋ ๊ณ์ฐ
similarity = model_skipgram.wv.similarity('์ฌ๊ณผ', '๊ณผ์ผ')
print(f"์ ์ฌ๋: {similarity}")
๋ณด๋ค์ํผ sg ํ๋ผ๋ฏธํฐ ํ๋๋ง ๋ฐ๊พธ๋ฉด CBOW์ Skip-gram์ ์ ํํ ์ ์์ด! ์ ๋ง ๊ฐ๋จํ์ง? ๐
์ค์ ํ๋ก์ ํธ์์๋ ํจ์ฌ ํฐ ๋ฐ์ดํฐ์
์ ์ฌ์ฉํ๊ฒ ๋ ๊ฑฐ์ผ. ์ํคํผ๋์ ์ ์ฒด ๋ฌธ์๋, ๋ด์ค ๊ธฐ์ฌ ์๋ฐฑ๋ง ๊ฑด ๊ฐ์ ๊ฑฐ ๋ง์ด์ผ. ๊ทธ๋ด ๋๋ ํ์ต ์๊ฐ์ด ๋ช ์๊ฐ์์ ๋ฉฐ์น ๊น์ง ๊ฑธ๋ฆด ์๋ ์์ด!
์ฌ๋ฅ๋ท์์ ์์ฐ์ด์ฒ๋ฆฌ๋ ๋จธ์ ๋ฌ๋ ๊ด๋ จ ์ฌ๋ฅ์ ๊ณต์ ํ๊ฑฐ๋ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ฉด, ์ด๋ฐ ๊ธฐ์ด ๊ฐ๋ ์ ํ์คํ ์ดํดํ๋ ๊ฒ ์ค์ํด! ์ค์ ํ๋ก์ ํธ ๊ฒฝํ์ด ์๋ ์ ๋ฌธ๊ฐ์๊ฒ ๋ฐฐ์ฐ๋ฉด ํจ์ฌ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ ์ ์์ง.
๐ ์ค์ ํ์ฉ ์ฌ๋ก
์ด๋ก ์ ์ถฉ๋ถํ ๋ดค์ผ๋, ์ด์ ์ค์ ๋ก ์ด๋์ ์ฐ์ด๋์ง ์์๋ณผ๊น? Word2Vec์ ์ ๋ง ๋ค์ํ ๊ณณ์์ ํ์ฉ๋๊ณ ์์ด! ๐
1. ๊ฒ์ ์์ง ์ต์ ํ
๊ตฌ๊ธ์ด๋ ๋ค์ด๋ฒ ๊ฐ์ ๊ฒ์ ์์ง์ ์ฌ์ฉ์์ ๊ฒ์์ด๋ฅผ ์ดํดํ๊ธฐ ์ํด ๋จ์ด ์๋ฒ ๋ฉ์ ์ฌ์ฉํด. "๋ง์ง"์ ๊ฒ์ํ๋ฉด "๋ ์คํ ๋", "์์์ ", "์๋น" ๊ฐ์ ์ ์ฌ ๋จ์ด๋ ํจ๊ป ๊ณ ๋ คํ๋ ๊ฑฐ์ง!
CBOW๋ ์ผ๋ฐ์ ์ธ ๊ฒ์์ด ์ฒ๋ฆฌ์, Skip-gram์ ์ ๋ฌธ ์ฉ์ด๋ ๊ณ ์ ๋ช
์ฌ ๊ฒ์์ ๋ ํจ๊ณผ์ ์ด์ผ. ์๋ฅผ ๋ค์ด "๊ฐ๋จ์ญ ๋ง์ง"์ฒ๋ผ ์ง๋ช
๊ณผ ์ผ๋ฐ ๋ช
์ฌ๊ฐ ์์ธ ์ฟผ๋ฆฌ๋ CBOW๋ก, "๋ฏธ์๋ญ ๊ฐ์ด๋ ์ถ์ฒ ๋ ์คํ ๋"์ฒ๋ผ ์ ๋ฌธ์ ์ธ ์ฟผ๋ฆฌ๋ Skip-gram์ผ๋ก ์ฒ๋ฆฌํ๋ฉด ์ข์!
2. ์ถ์ฒ ์์คํ
๋ทํ๋ฆญ์ค๋ ์ ํ๋ธ์ ์ถ์ฒ ์๊ณ ๋ฆฌ์ฆ๋ ๋น์ทํ ์๋ฆฌ๋ฅผ ์ฌ์ฉํด. ์ฌ์ฉ์๊ฐ ๋ณธ ์ํ๋ ์์์ ๋จ์ด์ฒ๋ผ ์ทจ๊ธํ๊ณ , ๊ทธ ํจํด์ ํ์ตํ๋ ๊ฑฐ์ผ! ๐บ
"์ก์
์ํ"๋ฅผ ์์ฃผ ๋ณด๋ ์ฌ๋์๊ฒ๋ ๋น์ทํ ์ฅ๋ฅด์ ์ํ๋ฅผ ์ถ์ฒํ๋ ์์ด์ง. ์ด๋ Skip-gram์ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์์ ๋
ํนํ ์ทจํฅ(ํฌ์ํ ํจํด)๋ ์ ์ก์๋ผ ์ ์์ด!
3. ๊ฐ์ฑ ๋ถ์
์ ํ ๋ฆฌ๋ทฐ๋ SNS ๋๊ธ์ ๊ฐ์ ์ ๋ถ์ํ ๋๋ ๋จ์ด ์๋ฒ ๋ฉ์ด ํ์์ผ. "์ข๋ค", "ํ๋ฅญํ๋ค", "์ต๊ณ ๋ค" ๊ฐ์ ๊ธ์ ๋จ์ด๋ค์ด ๋ฒกํฐ ๊ณต๊ฐ์์ ๊ฐ๊น์ด ๋ชจ์ด๊ณ , "๋์๋ค", "์ค๋ง", "์ต์
" ๊ฐ์ ๋ถ์ ๋จ์ด๋ค๋ ํจ๊ป ๋ชจ์ด๊ฑฐ๋ ! ๐๐ข
CBOW๋ ์ผ๋ฐ์ ์ธ ๊ฐ์ฑ ๋จ์ด๋ฅผ, Skip-gram์ ํน์ ์ ํ์ด๋ ๋ธ๋๋์ ๋ํ ๋ฏธ๋ฌํ ๊ฐ์ ํํ์ ์ ํฌ์ฐฉํด!
4. ๊ธฐ๊ณ ๋ฒ์ญ
๊ตฌ๊ธ ๋ฒ์ญ์ด๋ ํํ๊ณ ๊ฐ์ ๋ฒ์ญ ์๋น์ค๋ ๋จ์ด ์๋ฒ ๋ฉ์ ๊ธฐ๋ฐ์ผ๋ก ํด. ํ๊ตญ์ด "์ฌ๊ณผ"์ ์์ด "apple"์ด ๊ฐ์ ์๋ฏธ ๊ณต๊ฐ์ ๋งคํ๋๋๋ก ํ์ตํ๋ ๊ฑฐ์ง! ๐
์ต๊ทผ์๋ Word2Vec๋ณด๋ค ๋ ๋ฐ์ ๋ BERT, GPT ๊ฐ์ ๋ชจ๋ธ์ ์ฐ์ง๋ง, ๊ทธ ๊ธฐ์ด๋ ์ฌ์ ํ Word2Vec์ ์์ด๋์ด์์ ์ถ๋ฐํ์ด!
5. ๋ฌธ์ ๋ถ๋ฅ
๋ด์ค ๊ธฐ์ฌ๋ฅผ ์๋์ผ๋ก ์นดํ
๊ณ ๋ฆฌ๋ณ๋ก ๋ถ๋ฅํ๊ฑฐ๋, ์คํธ ๋ฉ์ผ์ ๊ฑธ๋ฌ๋ด๋ ๊ฒ๋ ๋จ์ด ์๋ฒ ๋ฉ์ ํ์ฉ ์ฌ๋ก์ผ. ๋ฌธ์ ๋ด ๋จ์ด๋ค์ ๋ฒกํฐ๋ฅผ ํ๊ท ๋ด์ ๋ฌธ์ ์ ์ฒด๋ฅผ ํ๋์ ๋ฒกํฐ๋ก ํํํ๊ณ , ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ถ๋ฅํ๋ ๊ฑฐ์ง! ๐ฐ
๋๋์ ๋ด์ค ๊ธฐ์ฌ๋ฅผ ์ฒ๋ฆฌํ ๋๋ CBOW๊ฐ, ๋ฒ๋ฅ ๋ฌธ์๋ ์ํ ๋
ผ๋ฌธ์ฒ๋ผ ์ ๋ฌธ ์ฉ์ด๊ฐ ์ค์ํ ๊ฒฝ์ฐ๋ Skip-gram์ด ๋ ์ ํฉํด!
โ ๏ธ ํ๊ณ์ ๊ฐ์ ๋ฐฉํฅ
CBOW์ Skip-gram์ ์ ๋ง ํ์ ์ ์ด์์ง๋ง, ์๋ฒฝํ์ง ์์. ๋ช ๊ฐ์ง ํ๊ณ์ ์ด ์๊ฑฐ๋ ! ๐ค
1. ๋ฌธ๋งฅ์ ๊ณ ๋ คํ์ง ๋ชปํจ
Word2Vec์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๋ ๋จ์ด ํ๋๋น ๋ฒกํฐ ํ๋๋ผ๋ ๊ฑฐ์ผ. "์ฌ๊ณผ"๋ผ๋ ๋จ์ด๊ฐ "๊ณผ์ผ ์ฌ๊ณผ"๋ฅผ ์๋ฏธํ๋์ง "์ฌ๊ณผํ๋ค"๋ฅผ ์๋ฏธํ๋์ง ๊ตฌ๋ถํ์ง ๋ชปํด!
์๋ฅผ ๋ค์ด๋ณผ๊ฒ:
โข "๋๋ ์ฌ๊ณผ๋ฅผ ๋จน์๋ค" โ ๊ณผ์ผ
โข "๋๋ ์น๊ตฌ์๊ฒ ์ฌ๊ณผํ๋ค" โ ์ฌ์ฃ
์ด ๋ "์ฌ๊ณผ"๋ ์์ ํ ๋ค๋ฅธ ์๋ฏธ์ธ๋ฐ, Word2Vec์ ๊ฐ์ ๋ฒกํฐ๋ก ํํํด๋ฒ๋ ค. ์ด๊ฑธ ํด๊ฒฐํ๊ธฐ ์ํด ELMo, BERT ๊ฐ์ ๋ฌธ๋งฅ ๊ธฐ๋ฐ ์๋ฒ ๋ฉ์ด ๋ฑ์ฅํ์ด!
2. OOV (Out-of-Vocabulary) ๋ฌธ์
ํ์ต ๋ฐ์ดํฐ์ ์๋ ์๋ก์ด ๋จ์ด๊ฐ ๋ํ๋๋ฉด? Word2Vec์ ์ฒ๋ฆฌํ ์ ์์ด! ๐ฐ
์๋ฅผ ๋ค์ด "์ฑGPT"๋ผ๋ ๋จ์ด๋ ์ต๊ทผ์ ์๊ธด ๊ฑฐ๋ผ์, ์๋ ๋ฐ์ดํฐ๋ก ํ์ตํ ๋ชจ๋ธ์ ์ด ๋จ์ด๋ฅผ ๋ชจ๋ฅผ ๊ฑฐ์ผ. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด FastText ๊ฐ์ ์๋ธ์๋(subword) ๊ธฐ๋ฐ ๋ชจ๋ธ์ด ๊ฐ๋ฐ๋์ด!
3. ๊ณ์ฐ ๋ณต์ก๋
ํนํ Skip-gram์ ํ๋์ ์ค์ฌ ๋จ์ด๋ก ์ฌ๋ฌ ์ฃผ๋ณ ๋จ์ด๋ฅผ ์์ธกํ๊ธฐ ๋๋ฌธ์, ๊ณ์ฐ๋์ด ๋ง์. ๋ค๊ฑฐํฐ๋ธ ์ํ๋ง์ผ๋ก ๋ง์ด ๊ฐ์ ๋์ง๋ง, ์ฌ์ ํ ๋๊ท๋ชจ ๋ฐ์ดํฐ์์๋ ๋ถ๋ด์ด ๋ผ.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๊ณ์ธต์ ์ํํธ๋งฅ์ค(Hierarchical Softmax)๋ ๋ ํจ์จ์ ์ธ ์ํ๋ง ๋ฐฉ๋ฒ๋ค์ด ์ฐ๊ตฌ๋๊ณ ์์ด!
๐ ํ์ต ๊ฐ์ด๋์ ํ
์, ์ด์ ์ง์ Word2Vec์ ๊ณต๋ถํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น? ์ค์ ํ์ ์๋ ค์ค๊ฒ! ๐ช
1. ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๊ฐ ํต์ฌ
์ข์ ์๋ฒ ๋ฉ์ ๋ง๋ค๋ ค๋ฉด ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๊ฐ ์ ๋ง ์ค์ํด! ๋ค์ ๋จ๊ณ๋ค์ ๊ผญ ๊ฑฐ์ณ์ผ ํด:
ํ ํฐํ(Tokenization): ๋ฌธ์ฅ์ ๋จ์ด๋ก ์ชผ๊ฐ๊ธฐ
์ ๊ทํ(Normalization): ๋์๋ฌธ์ ํต์ผ, ํน์๋ฌธ์ ์ ๊ฑฐ
๋ถ์ฉ์ด ์ ๊ฑฐ(Stopword Removal): "์", "๋", "์ด", "๊ฐ" ๊ฐ์ ์๋ฏธ ์๋ ๋จ์ด ์ ๊ฑฐ
์ด๊ฐ ์ถ์ถ(Stemming) / ํ์ ์ด ์ถ์ถ(Lemmatization): ๋จ์ด๋ฅผ ๊ธฐ๋ณธํ์ผ๋ก ๋ณํ
ํ๊ตญ์ด๋ ํนํ ํํ์ ๋ถ์์ด ์ค์ํด! KoNLPy ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด ์ข์.
from konlpy.tag import Okt
okt = Okt()
text = "๋๋ ์ฌ๊ณผ๋ฅผ ์ ๋ง ์ข์ํ๋ค"
tokens = okt.morphs(text)
print(tokens)
# ['๋', '๋', '์ฌ๊ณผ', '๋ฅผ', '์ ๋ง', '์ข์ํ๋ค']
2. ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋
๋ชจ๋ธ ์ฑ๋ฅ์ ์ข์ฐํ๋ ์ฃผ์ ํ๋ผ๋ฏธํฐ๋ค์ด์ผ:
vector_size: ์๋ฒ ๋ฉ ์ฐจ์ (100-300์ด ์ผ๋ฐ์ )
window: ์๋์ฐ ํฌ๊ธฐ (3-10 ์ฌ์ด์์ ์คํ)
min_count: ์ต์ ๋น๋ (๋๋ฌด ๋ฎ์ผ๋ฉด ๋
ธ์ด์ฆ, ๋๋ฌด ๋์ผ๋ฉด ์ ๋ณด ์์ค)
sg: 0=CBOW, 1=Skip-gram
negative: ๋ค๊ฑฐํฐ๋ธ ์ํ ๊ฐ์ (5-20)
epochs: ํ์ต ๋ฐ๋ณต ํ์ (10-100)
์ ๋ต์ ์์ด! ๋ฐ์ดํฐ์ ํ์คํฌ์ ๋ฐ๋ผ ์ต์ ๊ฐ์ด ๋ค๋ฅด๋๊น ์ฌ๋ฌ ์กฐํฉ์ ์คํํด๋ด์ผ ํด. ๐
3. ํ๊ฐ ๋ฐฉ๋ฒ
์๋ฒ ๋ฉ์ด ์ ํ์ต๋๋์ง ์ด๋ป๊ฒ ์ ์ ์์๊น? ๋ช ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ด:
๋จ์ด ์ ์ฌ๋ ํ
์คํธ: ๋น์ทํ ์๋ฏธ์ ๋จ์ด๋ค์ด ๊ฐ๊น์ด์ง ํ์ธ
๋จ์ด ์ ์ถ ํ
์คํธ: "์ - ๋จ์ + ์ฌ์ = ์ฌ์" ๊ฐ์ ๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ๋์ง
๋ค์ด์คํธ๋ฆผ ํ์คํฌ: ์ค์ ์์ฉ ๋ฌธ์ (๋ถ๋ฅ, ๊ฐ์ฑ๋ถ์ ๋ฑ)์์์ ์ฑ๋ฅ
๊ฐ์ฅ ํ์คํ ๊ฑด ์ค์ ๋ฌธ์ ์ ์ ์ฉํด๋ณด๋ ๊ฑฐ์ผ!
โข Gensim ๊ณต์ ๋ฌธ์: ์ค์ ์์ ๊ฐ ํ๋ถํด
โข CS224N (Stanford NLP ๊ฐ์): ์ด๋ก ์ ๋ฐฐ๊ฒฝ์ ๊น์ด ์๊ฒ ๋ค๋ค
โข ์ค์ต ํ๋ก์ ํธ: ์ง์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ์์ ์๋ฒ ๋ฉ์ ๋ง๋ค์ด๋ณด๋ ๊ฒ ์ต๊ณ !
๐ฌ ์ต์ ์ฐ๊ตฌ ๋ํฅ
Word2Vec ์ดํ๋ก ์์ฐ์ด์ฒ๋ฆฌ ๋ถ์ผ๋ ์์ฒญ๋๊ฒ ๋ฐ์ ํ์ด! ์ต์ ํธ๋ ๋๋ฅผ ๊ฐ๋จํ ์๊ฐํ ๊ฒ. ๐
1. ๋ฌธ๋งฅ ๊ธฐ๋ฐ ์๋ฒ ๋ฉ
ELMo (2018): ๊ฐ์ ๋จ์ด๋ผ๋ ๋ฌธ๋งฅ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ฒกํฐ๋ฅผ ์์ฑํด. ์๋ฐฉํฅ LSTM์ ์ฌ์ฉํ์ง!
BERT (2018): ํธ๋์คํฌ๋จธ ๊ธฐ๋ฐ์ผ๋ก, ๋ฌธ์ฅ ์ ์ฒด์ ๋ฌธ๋งฅ์ ๋์์ ๊ณ ๋ คํด. ํ์ฌ ๊ฐ์ฅ ๋๋ฆฌ ์ฐ์ด๋ ๋ชจ๋ธ ์ค ํ๋์ผ!
GPT ์๋ฆฌ์ฆ: ์์ฑ ํ์คํฌ์ ํนํ๋ ๋ชจ๋ธ. ChatGPT์ ๊ธฐ๋ฐ์ด ๋๋ ๊ธฐ์ ์ด์ง!
์ด ๋ชจ๋ธ๋ค์ Word2Vec๋ณด๋ค ํจ์ฌ ๊ฐ๋ ฅํ์ง๋ง, ๊ณ์ฐ ๋น์ฉ๋ ํจ์ฌ ๋์. ์ํฉ์ ๋ง๊ฒ ์ ํํ๋ ๊ฒ ์ค์ํด!
2. ๋ค๊ตญ์ด ์๋ฒ ๋ฉ
์ฌ๋ฌ ์ธ์ด๋ฅผ ํ๋์ ๋ฒกํฐ ๊ณต๊ฐ์ ๋งคํํ๋ ์ฐ๊ตฌ๋ ํ๋ฐํด. ํ๊ตญ์ด "์ฌ๊ณผ"์ ์์ด "apple"์ด ๊ฐ์ ์์น์ ์ค๋๋ก ํ์ตํ๋ ๊ฑฐ์ง!
mBERT: ๋ค๊ตญ์ด BERT
XLM-R: 100๊ฐ ์ธ์ด ์ง์
LaBSE: ๋ฌธ์ฅ ๋จ์ ๋ค๊ตญ์ด ์๋ฒ ๋ฉ
์ด๋ฐ ๊ธฐ์ ๋๋ถ์ ๊ธฐ๊ณ ๋ฒ์ญ์ด๋ ๋ค๊ตญ์ด ๊ฒ์์ด ํจ์ฌ ์ข์์ก์ด!
3. ๋๋ฉ์ธ ํนํ ์๋ฒ ๋ฉ
์ผ๋ฐ ํ
์คํธ๋ก ํ์ตํ ์๋ฒ ๋ฉ์ ์ ๋ฌธ ๋ถ์ผ์์ ์ฑ๋ฅ์ด ๋จ์ด์ง ์ ์์ด. ๊ทธ๋์ ํน์ ๋๋ฉ์ธ์ ํนํ๋ ์๋ฒ ๋ฉ์ ๋ง๋๋ ์ฐ๊ตฌ๊ฐ ๋ง์!
BioBERT: ์ํ/์๋ช
๊ณผํ ๋ถ์ผ
SciBERT: ๊ณผํ ๋
ผ๋ฌธ
FinBERT: ๊ธ์ต ๋ถ์ผ
LegalBERT: ๋ฒ๋ฅ ๋ฌธ์
์์ ์ ๋ถ์ผ์ ๋ง๋ ์๋ฒ ๋ฉ์ ์ ํํ๊ฑฐ๋, ์ง์ ํ์ตํ๋ ๊ฒ ์ค์ํด!
๐ผ ์ค๋ฌด ์ ์ฉ ์ ๊ณ ๋ ค์ฌํญ
์ด๋ก ์ ์ค๋ฌด์ ์ ์ฉํ ๋๋ ์ฌ๋ฌ ๊ฐ์ง๋ฅผ ๊ณ ๋ คํด์ผ ํด. ์ค์ ๊ฒฝํ์ ๋ฐํ์ผ๋ก ํ์ ๊ณต์ ํ ๊ฒ! ๐ฏ
1. ๋ฐ์ดํฐ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์ ํ
์๊ท๋ชจ (1๋ง ๋ฌธ์ ๋ฏธ๋ง):
โข Skip-gram ์ถ์ฒ
โข ๋์ epochs (100-200)
โข ์์ vector_size (50-100)
โข ๋๋ ์ฌ์ ํ์ต๋ ๋ชจ๋ธ ์ฌ์ฉ ๊ณ ๋ ค
์ค๊ท๋ชจ (1๋ง-100๋ง ๋ฌธ์):
โข CBOW ๋๋ Skip-gram ๋ ๋ค ๊ฐ๋ฅ
โข ์คํ์ ํตํด ์ ํ
โข vector_size 100-200
โข epochs 50-100
๋๊ท๋ชจ (100๋ง ๋ฌธ์ ์ด์):
โข CBOW ์ถ์ฒ (์๋ ๋๋ฌธ)
โข vector_size 200-300
โข epochs 10-50
โข ๋ถ์ฐ ํ์ต ๊ณ ๋ ค
2. ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
๋๊ท๋ชจ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฌธ์ ๊ฐ ๋ ์ ์์ด. ๋ช ๊ฐ์ง ํด๊ฒฐ์ฑ
์ด ์์ด:
๋ฐฐ์น ํ์ต: ๋ฐ์ดํฐ๋ฅผ ๋๋ ์ ํ์ต
์ดํ ํฌ๊ธฐ ์ ํ: min_count๋ฅผ ๋์ฌ์ ํฌ์ ๋จ์ด ์ ๊ฑฐ
์ฐจ์ ์ถ์: vector_size๋ฅผ ์ค์ด๊ธฐ
๋ฉ๋ชจ๋ฆฌ ๋งคํ: ๋์คํฌ๋ฅผ ํ์ฉํ ํ์ต
Gensim์ ์ด๋ฐ ๊ธฐ๋ฅ๋ค์ ์ ์ง์ํ๋๊น ๋ฌธ์๋ฅผ ์ฐธ๊ณ ํด๋ด!
3. ๋ชจ๋ธ ์ ๋ฐ์ดํธ ์ ๋ต
์ค๋ฌด์์๋ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ๊ณ์ ๋ค์ด์. ๋ชจ๋ธ์ ์ด๋ป๊ฒ ์
๋ฐ์ดํธํ ๊น?
์ ์ฒด ์ฌํ์ต: ๊ฐ์ฅ ์ ํํ์ง๋ง ์๊ฐ์ด ์ค๋ ๊ฑธ๋ ค
์ฆ๋ถ ํ์ต: ๊ธฐ์กด ๋ชจ๋ธ์ ์ ๋ฐ์ดํฐ๋ง ์ถ๊ฐ ํ์ต (Gensim ์ง์)
์ฃผ๊ธฐ์ ์
๋ฐ์ดํธ: ์ผ์ฃผ์ผ, ํ ๋ฌ ๋จ์๋ก ์ฌํ์ต
A/B ํ
์คํ
: ์ ๋ชจ๋ธ๊ณผ ๊ธฐ์กด ๋ชจ๋ธ ์ฑ๋ฅ ๋น๊ต
๋ณดํต์ ์ฆ๋ถ ํ์ต์ผ๋ก ์์ํด์, ์ฑ๋ฅ์ด ๋จ์ด์ง๋ฉด ์ ์ฒด ์ฌํ์ต์ ํ๋ ์ ๋ต์ ์จ!
๐ฏ ํ๋ก์ ํธ ์์ด๋์ด
์ง์ ํด๋ณผ ์ ์๋ ์ฌ๋ฏธ์๋ ํ๋ก์ ํธ ์์ด๋์ด๋ฅผ ๋ช ๊ฐ์ง ์๊ฐํ ๊ฒ! ์ค์ต์ด ์ต๊ณ ์ ํ์ต ๋ฐฉ๋ฒ์ด๊ฑฐ๋ . ๐
1. ๋๋ง์ ๋จ์ด ์ ์ฌ๋ ๊ฒ์๊ธฐ
์ํคํผ๋์ ํ๊ตญ์ด ๋คํ๋ฅผ ๋ค์ด๋ฐ์์ Word2Vec์ ํ์ต์์ผ๋ด. ๊ทธ๋ฆฌ๊ณ ์น ์ธํฐํ์ด์ค๋ฅผ ๋ง๋ค์ด์ ๋จ์ด๋ฅผ ์
๋ ฅํ๋ฉด ์ ์ฌํ ๋จ์ด๋ค์ ๋ณด์ฌ์ฃผ๋ ์๋น์ค๋ฅผ ๋ง๋๋ ๊ฑฐ์ผ!
๋์ด๋: ์ด๊ธ
๊ธฐ์ ์คํ: Python, Gensim, Flask/Streamlit
ํ์ต ํฌ์ธํธ: ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ, ๋ชจ๋ธ ํ์ต, ์น ๋ฐฐํฌ
2. ์ํ ๋ฆฌ๋ทฐ ๊ฐ์ฑ ๋ถ์๊ธฐ
๋ค์ด๋ฒ ์ํ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ์
์ผ๋ก Word2Vec์ ํ์ตํ๊ณ , ๊ธ์ /๋ถ์ ์ ๋ถ๋ฅํ๋ ๋ชจ๋ธ์ ๋ง๋ค์ด๋ด. Skip-gram๊ณผ CBOW์ ์ฑ๋ฅ์ ๋น๊ตํด๋ณด๋ ๊ฒ๋ ์ข์!
๋์ด๋: ์ค๊ธ
๊ธฐ์ ์คํ: Python, Gensim, Scikit-learn
ํ์ต ํฌ์ธํธ: ์๋ฒ ๋ฉ ํ์ฉ, ๋ถ๋ฅ ๋ชจ๋ธ, ์ฑ๋ฅ ํ๊ฐ
3. ๋ด์ค ๊ธฐ์ฌ ์๋ ๋ถ๋ฅ๊ธฐ
๋ด์ค ๊ธฐ์ฌ๋ฅผ ์ ์น, ๊ฒฝ์ , ์ฌํ, ๋ฌธํ ๋ฑ์ผ๋ก ์๋ ๋ถ๋ฅํ๋ ์์คํ
์ ๋ง๋ค์ด๋ด. ๋ฌธ์ ์๋ฒ ๋ฉ์ ๋ง๋ค๊ณ ํด๋ฌ์คํฐ๋งํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์ธ ์ ์์ด!
๋์ด๋: ์ค๊ธ
๊ธฐ์ ์คํ: Python, Gensim, KoNLPy, Scikit-learn
ํ์ต ํฌ์ธํธ: ๋ฌธ์ ์๋ฒ ๋ฉ, ํด๋ฌ์คํฐ๋ง, ์๊ฐํ
4. ์ํ ์ถ์ฒ ์์คํ
์ด์ปค๋จธ์ค ์ํ ์ค๋ช
์ ์๋ฒ ๋ฉํด์, ๋น์ทํ ์ํ์ ์ถ์ฒํ๋ ์์คํ
์ ๋ง๋ค์ด๋ด. ์ค์ ์๋น์ค์ ๊ฐ๊น์ด ํ๋ก์ ํธ์ผ!
๋์ด๋: ๊ณ ๊ธ
๊ธฐ์ ์คํ: Python, Gensim, FastAPI, Docker
ํ์ต ํฌ์ธํธ: ์ค์๊ฐ ์ถ์ฒ, API ๊ฐ๋ฐ, ๋ฐฐํฌ
์ฒ์์๋ ์์ ๋ฐ์ดํฐ์ ์ผ๋ก ์์ํด์ ๋น ๋ฅด๊ฒ ํ๋กํ ํ์ ์ ๋ง๋ค์ด๋ด. ๊ทธ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ๋๋ฆฌ๊ณ ๋ชจ๋ธ์ ๊ฐ์ ํ๋ ์์ผ๋ก ์ ์ง์ ์ผ๋ก ๋ฐ์ ์ํค๋ ๊ฒ ์ข์. ์๋ฒฝ์ ์ถ๊ตฌํ๋ค๊ฐ ์์๋ ๋ชปํ๋ ๊ฒ๋ณด๋ค, ์ผ๋จ ๋ง๋ค์ด๋ณด๋ ๊ฒ ์ค์ํด!
๐ค ์ปค๋ฎค๋ํฐ์ ๋ฆฌ์์ค
ํผ์ ๊ณต๋ถํ๊ธฐ ํ๋ค ๋๋ ์ปค๋ฎค๋ํฐ์ ๋์์ ๋ฐ์๋ด! ์ข์ ๋ฆฌ์์ค๋ค์ ์๊ฐํ ๊ฒ. ๐
์จ๋ผ์ธ ์ปค๋ฎค๋ํฐ
GitHub: Word2Vec ๊ด๋ จ ์คํ์์ค ํ๋ก์ ํธ๊ฐ ๋ง์
Stack Overflow: ๊ธฐ์ ์ ์ง๋ฌธ์ ๋ํ ๋ต๋ณ
Reddit (r/MachineLearning): ์ต์ ์ฐ๊ตฌ ๋ํฅ ๊ณต์
ํ๊ตญ์ด ์ปค๋ฎค๋ํฐ: ํ
์ํ๋ก์ฐ ์ฝ๋ฆฌ์, PyTorch ํ๊ตญ ์ฌ์ฉ์ ๋ชจ์
์ง๋ฌธํ ๋๋ ๊ตฌ์ฒด์ ์ผ๋ก! "Word2Vec์ด ์ ๋ผ์"๋ณด๋ค๋ "CBOW๋ก ํ์ต ์ค์ธ๋ฐ loss๊ฐ ๊ฐ์ํ์ง ์์์. ์ฝ๋๋ ์ด๋ ์ต๋๋ค..."์ฒ๋ผ ์์ธํ๊ฒ ๋ฌผ์ด๋ด์ผ ์ข์ ๋ต๋ณ์ ๋ฐ์ ์ ์์ด!
์ ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
Gensim: Word2Vec์ ํ์ค ๊ตฌํ์ฒด
FastText: Facebook์ ์๋ธ์๋ ๊ธฐ๋ฐ ์๋ฒ ๋ฉ
Hugging Face Transformers: BERT ๋ฑ ์ต์ ๋ชจ๋ธ
spaCy: ์ฐ์
์ฉ NLP ๋ผ์ด๋ธ๋ฌ๋ฆฌ
KoNLPy: ํ๊ตญ์ด ํํ์ ๋ถ์
๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ณต์ ๋ฌธ์๋ฅผ ๊ผญ ์ฝ์ด๋ด. ์์ ์ฝ๋๊ฐ ์ ๋ง ์ ๋์ด ์๊ฑฐ๋ !
ํ์ต ์๋ฃ
๋
ผ๋ฌธ: arXiv์์ ์ต์ ์ฐ๊ตฌ ๋
ผ๋ฌธ ๊ฒ์
๊ฐ์: Coursera, edX์ NLP ๊ฐ์
๋ธ๋ก๊ทธ: Jay Alammar, Sebastian Ruder์ ๋ธ๋ก๊ทธ ์ถ์ฒ
์ ํ๋ธ: StatQuest, 3Blue1Brown์ ์ค๋ช
์์
์ฑ
: "Speech and Language Processing" (Jurafsky & Martin)
์์ด๊ฐ ๋ถ๋ด์ค๋ฝ๋ค๋ฉด ํ๊ตญ์ด ์๋ฃ๋ ๋ง์! ๋ค์ด๋ฒ D2, ์นด์นด์ค ๊ธฐ์ ๋ธ๋ก๊ทธ์ ์ข์ ๊ธ๋ค์ด ๋ง์.
๐ฌ ๋ง๋ฌด๋ฆฌํ๋ฉฐ
์, ์ฌ๊ธฐ๊น์ง CBOW์ Skip-gram์ ๋ํด ๊น์ด ์๊ฒ ์์๋ดค์ด! ์ ๋ฆฌํ์๋ฉด: ๐
CBOW๋ ์ฃผ๋ณ ๋จ์ด๋ก ์ค์ฌ ๋จ์ด๋ฅผ ์์ธกํ๋ ๋ฐฉ์์ผ๋ก, ๋น ๋ฅด๊ณ ํจ์จ์ ์ด์ผ. ๋๊ท๋ชจ ๋ฐ์ดํฐ์
์ ์ ํฉํ๊ณ , ์ผ๋ฐ์ ์ธ ๋จ์ด ํ์ต์ ๊ฐํด!
Skip-gram์ ์ค์ฌ ๋จ์ด๋ก ์ฃผ๋ณ ๋จ์ด๋ค์ ์์ธกํ๋ ๋ฐฉ์์ผ๋ก, ์ ํํ๊ณ ์ธ๋ฐํด. ํฌ์ํ ๋จ์ด๋ ์ ๋ฌธ ์ฉ์ด ํ์ต์ ๊ฐํ๊ณ , ์์ ๋ฐ์ดํฐ์
์์๋ ์ข์ ์ฑ๋ฅ์ ๋ณด์ฌ!
๋ ๋ค ์ฅ๋จ์ ์ด ์์ผ๋, ์ํฉ์ ๋ง๊ฒ ์ ํํ๋ฉด ๋ผ. ๋ฐ์ดํฐ๊ฐ ๋ง๊ณ ๋น ๋ฅธ ํ์ต์ด ํ์ํ๋ฉด CBOW, ์ ํ๋๊ฐ ์ค์ํ๊ณ ํน์ํ ๋จ์ด๊ฐ ๋ง์ผ๋ฉด Skip-gram! ๐ก
1. ์ง์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ธฐ (์ด๋ก ๋ง ์๋ ๊ฒ๊ณผ ์ค์ ๋ก ๊ตฌํํ๋ ๊ฑด ์์ ํ ๋ฌ๋ผ!)
2. ์์ ํ๋ก์ ํธ๋ก ์์ํ๊ธฐ (์๋ฒฝํ์ง ์์๋ ๊ด์ฐฎ์)
3. ์ปค๋ฎค๋ํฐ์ ์ฐธ์ฌํ๊ธฐ (์ง๋ฌธํ๊ณ ๋ต๋ณํ๋ฉด์ ์ฑ์ฅํด)
4. ์ต์ ๊ธฐ์ ๋ ๊ณต๋ถํ๊ธฐ (BERT, GPT ๋ฑ์ผ๋ก ํ์ฅ)
5. ์ค๋ฌด ๊ฒฝํ ์๊ธฐ (์บ๊ธ ๋ํ, ์คํ์์ค ๊ธฐ์ฌ ๋ฑ)
์์ฐ์ด์ฒ๋ฆฌ๋ ์ ๋ง ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๋ ๋ถ์ผ์ผ. Word2Vec์ 2013๋
๊ธฐ์ ์ด์ง๋ง, ์ฌ์ ํ ๋ง์ ๊ณณ์์ ์ฐ์ด๊ณ ์๊ณ , ์ต์ ๊ธฐ์ ์ ๊ธฐ์ด๊ฐ ๋๊ณ ์์ด. ๊ธฐ์ด๋ฅผ ํํํ ํ๋ฉด ์๋ก์ด ๊ธฐ์ ๋ ์ฝ๊ฒ ์ดํดํ ์ ์์ด! ๐
ํน์ ๋ ๊น์ด ๋ฐฐ์ฐ๊ณ ์ถ๊ฑฐ๋, ํ๋ก์ ํธ์ ์ ์ฉํ๋ค๊ฐ ๋งํ๋ ๋ถ๋ถ์ด ์๋ค๋ฉด, ์ฌ๋ฅ๋ท ๊ฐ์ ํ๋ซํผ์์ ์ ๋ฌธ๊ฐ์ ๋์์ ๋ฐ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ด์ผ. ๊ฒฝํ ์๋ ์ฌ๋์๊ฒ ๋ฐฐ์ฐ๋ฉด ์ํ์ฐฉ์ค๋ฅผ ์ค์ด๊ณ ํจ์ฌ ๋น ๋ฅด๊ฒ ์ฑ์ฅํ ์ ์๊ฑฐ๋ ! ๐
์, ์ด์ ์ง์ ์ฝ๋๋ฅผ ์์ฑํด๋ณผ ์๊ฐ์ด์ผ! ์ด๋ก ์ ์ถฉ๋ถํ ๋ฐฐ์ ์ผ๋, ์ค์ ์ผ๋ก ๊ฐ๋ณด์! ํ์ดํ
! ๐ช๐
๐ Word2Vec์ผ๋ก ์์ฐ์ด์ฒ๋ฆฌ์ ์ธ๊ณ์ ์
๋ฌธํ์ธ์!
CBOW์ Skip-gram, ์ด์ ๋น์ ๋ ์ ๋ฌธ๊ฐ๊ฐ ๋ ์ ์์ต๋๋ค! ๐ช
๊ด๋ จ ํค์๋
๋๊ธ ์์ฑ
์ด ๊ธ์ ๋ํ ์ฌ๋ฌ๋ถ์ ์๊ฐ์ ๋ค๋ ค์ฃผ์ธ์
๋ก๊ทธ์ธ์ด ํ์ํฉ๋๋ค
๋๊ธ์ ์์ฑํ๋ ค๋ฉด ๋จผ์ ๋ก๊ทธ์ธํด์ฃผ์ธ์.
๋๊ธ 0
์ง์์ธ์ ์ฒ - ์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
์ง์ ์ฌ์ฐ๊ถ ๋ณดํธ ๊ณ ์ง
- ์ ์๊ถ ๋ฐ ์์ ๊ถ: ๋ณธ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ๋ ์ AI ๊ธฐ์ ๋ก ์์ฑ๋์์ผ๋ฉฐ, ๋ํ๋ฏผ๊ตญ ์ ์๊ถ๋ฒ ๋ฐ ๊ตญ์ ์ ์๊ถ ํ์ฝ์ ์ํด ๋ณดํธ๋ฉ๋๋ค.
- AI ์์ฑ ์ปจํ ์ธ ์ ๋ฒ์ ์ง์: ๋ณธ AI ์์ฑ ์ปจํ ์ธ ๋ ์ฌ๋ฅ๋ท์ ์ง์ ์ฐฝ์๋ฌผ๋ก ์ธ์ ๋๋ฉฐ, ๊ด๋ จ ๋ฒ๊ท์ ๋ฐ๋ผ ์ ์๊ถ ๋ณดํธ๋ฅผ ๋ฐ์ต๋๋ค.
- ์ฌ์ฉ ์ ํ: ์ฌ๋ฅ๋ท์ ๋ช ์์ ์๋ฉด ๋์ ์์ด ๋ณธ ์ปจํ ์ธ ๋ฅผ ๋ณต์ , ์์ , ๋ฐฐํฌ, ๋๋ ์์ ์ ์ผ๋ก ํ์ฉํ๋ ํ์๋ ์๊ฒฉํ ๊ธ์ง๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ง ๊ธ์ง: ๋ณธ ์ปจํ ์ธ ์ ๋ํ ๋ฌด๋จ ์คํฌ๋ํ, ํฌ๋กค๋ง, ๋ฐ ์๋ํ๋ ๋ฐ์ดํฐ ์์ง์ ๋ฒ์ ์ ์ฌ์ ๋์์ด ๋ฉ๋๋ค.
- AI ํ์ต ์ ํ: ์ฌ๋ฅ๋ท์ AI ์์ฑ ์ปจํ ์ธ ๋ฅผ ํ AI ๋ชจ๋ธ ํ์ต์ ๋ฌด๋จ ์ฌ์ฉํ๋ ํ์๋ ๊ธ์ง๋๋ฉฐ, ์ด๋ ์ง์ ์ฌ์ฐ๊ถ ์นจํด๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
์์ง ๋๊ธ์ด ์์ต๋๋ค.