0Pricing
Learn AI with Python · 강의

Word2Vec: Skip-gram과 CBOW

Word2Vec 이론, gensim 구현, 벡터 연산(king - man + woman = queen)을 다룹니다.

Word2Vec: Skip-gram과 CBOW은(는) CoddyKit의 무료 Learn AI with Python 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Learn AI with Python 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

단어에서 벡터로

머신 러닝은 숫자를 필요로 하지만 단어는 기호입니다. 단어 임베딩은 각 단어를 조밀한 벡터로 변환하여, 서로 비슷한 단어가 벡터 공간에서 가까이 놓이도록 합니다.

분포 가설

Word2Vec은 비슷한 맥락에 등장하는 단어는 비슷한 의미를 가진다는 생각에 기반합니다. 맥락을 예측하도록 학습하면서 모델은 벡터에 의미를 담아냅니다.

두 가지 구조

Word2Vec에는 두 가지 학습 방식이 있습니다.

  • CBOW는 주변 맥락에서 대상 단어를 예측합니다
  • 스킵그램은 대상 단어에서 주변 맥락을 예측합니다

CBOW와 스킵그램 비교

CBOW는 더 빠르고 자주 등장하는 단어에 잘 작동합니다. 스킵그램은 더 느리지만 희귀한 단어와 소규모 데이터 세트를 더 잘 처리합니다. 품질을 중시할 때는 스킵그램을 기본 선택으로 사용하는 경우가 많습니다.

gensim으로 학습하기

gensim 라이브러리를 사용하면 Word2Vec을 쉽게 사용할 수 있습니다. 토큰화된 sentences(단어 목록으로 이루어진 목록)를 전달하고 임베딩 구성을 설정하면 됩니다.

from gensim.models import Word2Vec

sentences = [["the", "cat", "sat"], ["the", "dog", "ran"]]
model = Word2Vec(sentences=sentences, vector_size=100, window=5, min_count=1)

주요 매개변수

주요 조절값은 다음과 같습니다.

  • vector_size 임베딩 차원(예: 100~300)
  • window 각 단어 주변의 맥락 범위
  • min_count 이 값보다 드물게 등장하는 단어 무시
from gensim.models import Word2Vec

model = Word2Vec(
    sentences,
    vector_size=200,
    window=5,
    min_count=5,
)

sg=1로 스킵그램 선택하기

sg 매개변수는 구조를 선택합니다. sg=0은 CBOW를 사용하고(기본값), sg=1은 스킵그램을 사용합니다.

from gensim.models import Word2Vec

model = Word2Vec(sentences, vector_size=100, window=5, min_count=1, sg=1)
# sg=1 -> skip-gram

단어 벡터에 접근하기

학습된 벡터는 model.wv에 저장됩니다. 단어를 인덱스로 사용하면 해당 단어의 벡터를 가져올 수 있습니다.

vec = model.wv["cat"]
print(vec.shape)   # (vector_size,)
print("dog" in model.wv)

유사한 단어 찾기

wv.most_similar는 벡터가 가장 가까운 단어를 반환하므로, 임베딩이 무엇을 학습했는지 빠르게 확인할 수 있습니다.

print(model.wv.most_similar("cat", topn=5))
# returns list of (word, similarity) pairs

단어 산술

유명한 특성은 벡터 연산이 관계를 포착한다는 것입니다. 왕 - 남자 + 여자를 계산하면 여왕에 가까운 결과가 나와, 임베딩이 유추 관계를 인코딩한다는 것을 보여 줍니다.

result = model.wv.most_similar(
    positive=["king", "woman"],
    negative=["man"],
    topn=1,
)
print(result)   # often [("queen", 0.7...)]

임베딩을 후속 작업에 사용하기

문장을 표현하려면 문장에 포함된 단어 벡터의 평균을 구한 다음, 그 결과를 임의의 분류기에 전달하세요. 사전 학습된 Word2Vec 임베딩은 데이터가 적을 때도 강력한 출발점이 됩니다.

import numpy as np

def sentence_vector(words, model):
    vecs = [model.wv[w] for w in words if w in model.wv]
    return np.mean(vecs, axis=0) if vecs else np.zeros(model.vector_size)

빠른 확인

Word2Vec 지식을 점검해 보세요.

복습

복습: Word2Vec은 맥락에서 조밀한 단어 벡터를 학습합니다. CBOW는 맥락에서 단어를 예측하고(빠름), 스킵그램(sg=1)은 단어에서 맥락을 예측합니다(희귀한 단어에 더 적합). gensim에서는 vector_size, window, min_count를 설정한 다음 wv.most_similar와 왕 - 남자 + 여자 같은 유추를 사용하세요.

자주 묻는 질문

“Word2Vec: Skip-gram과 CBOW” 강의는 무료인가요?

네 — “Word2Vec: Skip-gram과 CBOW” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Learn AI with Python 강의 전체를 잠금 해제할 수 있습니다. Learn AI with Python 강의에는 총 4개의 강의가 포함되어 있습니다.

“Word2Vec: Skip-gram과 CBOW”에서 뭘 배우나요?

Word2Vec 이론, gensim 구현, 벡터 연산(king - man + woman = queen)을 다룹니다. 브라우저에서 직접 실행하는 실습 코드로 Learn AI with Python을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Learn AI with Python을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Learn AI with Python은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.

“Word2Vec: Skip-gram과 CBOW” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Learn AI with Python 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Learn AI with Python 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Word2Vec: Skip-gram과 CBOW
  2. GloVe와 FastText 임베딩
  3. BERT를 활용한 텍스트 분류
  4. 의미 유사도와 문장 임베딩
← Learn AI with Python(으)로 돌아가기