โก Word2Vec: 2026๋ ์๋ ์ด์๋จ๋ ๊ฒฝ๋ ์๋ฒ ๋ฉ ์ ๋ต
1. ์๋ก : ์ ์์ง๋ Word2Vec์ธ๊ฐ?
2013๋
๊ตฌ๊ธ์ด ๊ณต๊ฐํ Word2Vec์ ๋จ์ํ ๊ธฐ์ ์ด ์๋๋๋ค. ํ
์คํธ๋ฅผ ๊ณ ์ฐจ์ ์ค์ ๋ฒกํฐ๋ก ๋ณํํ์ฌ Word-wise Similarity๋ฅผ ์ํ์ ์ผ๋ก ์ฆ๋ช
ํด ๋ธ ์ญ์ฌ์ ์ธ ์ฌ๊ฑด์
๋๋ค.
BERT๋ GPT ๊ฐ์ ๊ฑฐ๋ ๋ชจ๋ธ(LLM)์ด ์ฃผ๋ฅ์ธ 2025๋ ์๋ Word2Vec์ ์ฌ๋ผ์ง์ง ์์์ต๋๋ค. ์คํ๋ ค Edge Device(๋ชจ๋ฐ์ผ, IoT)์์์ ๊ฒฝ๋ํ ์ถ๋ก ๊ณผ ์ถ์ฒ ์์คํ ์ Item2Vec ํํ๋ก ์งํํ์ฌ ์ค๋ฌด์ ์ต์ ์ (Frontline)์ ์งํค๊ณ ์์ต๋๋ค.
2. ์ํคํ ์ฒ: CBOW vs Skip-gram
A. CBOW (Continuous Bag-of-Words)
์ฃผ๋ณ ๋จ์ด(Context)๋ก ์ค์ฌ ๋จ์ด(Target)๋ฅผ ์์ธกํฉ๋๋ค. ํ์ต ์๋๊ฐ ๋น ๋ฅด๊ณ ๋น๋ฒํ๊ฒ ๋ฑ์ฅํ๋ ๋จ์ด์ ํํ๋ ฅ์ด ์ฐ์ํฉ๋๋ค.
B. Skip-gram
์ค์ฌ ๋จ์ด๋ก ์ฃผ๋ณ ๋จ์ด๋ฅผ ์์ธกํฉ๋๋ค. ๋ฐ์ดํฐ๊ฐ ์ ๊ฑฐ๋ ํฌ๊ทํ ๋จ์ด(Rare Words)๊ฐ ๋ง์ ๊ฒฝ์ฐ CBOW๋ณด๋ค ์ฑ๋ฅ์ด ๋ฐ์ด๋ฉ๋๋ค.
3. ๊ตฌํ: Gensim ์ฝ๋ ์ค๋ํซ
๊ฐ์ฅ ํจ์จ์ ์ธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ Gensim์ ํ์ฉํ ํ๋ก๋์
๋ ๋ฒจ ์ฝ๋์
๋๋ค.
from gensim.models import Word2Vec # ์ ์ฒ๋ฆฌ๋ ๋ฐ์ดํฐ์ (Tokenized Corpus) sentences = [["cat", "say", "meow"], ["dog", "say", "woof"]] # Model Initialization & Training model = Word2Vec( sentences, vector_size=100, # ์๋ฒ ๋ฉ ์ฐจ์ (๋ณดํต 100~300) window=5, # ๋ฌธ๋งฅ ์๋์ฐ ํฌ๊ธฐ min_count=1, # ์ต์ ๋ฑ์ฅ ๋น๋ sg=1, # 1: Skip-gram, 0: CBOW workers=4 # CPU ์ฝ์ด ์ ) # Inference vector = model.wv["cat"] sims = model.wv.most_similar("cat", topn=10)
4. ์ค๋ฌด: ํ์ดํผํ๋ผ๋ฏธํฐ ํ๋ ๊ฐ์ด๋
| Parameter | CBOW ์ถ์ฒ๊ฐ | Skip-gram ์ถ์ฒ๊ฐ |
|---|---|---|
| vector_size | 100 ~ 200 | 200 ~ 300 |
| window | 5 ~ 8 | 2 ~ 5 |
| epochs | 5 ~ 10 | 10 ~ 20 |
๐ก Tech Leader's Insight
"Hybrid ์ ๋ต์ด ๋ต์ ๋๋ค."
์ฒ์๋ถํฐ ๋ฌด๊ฑฐ์ด BERT ๋ชจ๋ธ์ ๋๋ฆฌ์ง ๋ง์ธ์. ์ค๋ฌด์์๋ Word2Vec์ผ๋ก ๋น ๋ฅด๊ฒ ๋ฒ ์ด์ค๋ผ์ธ(Baseline)์ ๊ตฌ์ถํ๊ณ , FastText๋ก OOV(Out of Vocabulary) ๋ฌธ์ ๋ฅผ ๋ณด์ํ ๋ค, ์ฑ๋ฅ์ด ๋ ํ์ํ ๋ ํธ๋์คํฌ๋จธ ๋ชจ๋ธ๋ก ๋์ด๊ฐ๋ ๊ฒ์ด ๋น์ฉ ํจ์จ์ ์
๋๋ค. ํนํ Negative Sampling ์์น๋ฅผ 15 ์ด์์ผ๋ก ๋์ด๋ฉด ๋๋ฉ์ธ ํนํ ์ฉ์ด ํ์ต์ ๋งค์ฐ ํจ๊ณผ์ ์
๋๋ค.