작성
·
343
0
예를들어 skip-gram(window size 2) 에서
I love king of Korea
이라는 문장을 워드임베딩 하게 되면,
'king', 'I love', 'of Korea' 5개의 단어 중 3차원(I love, king, of Korea) 의 벡터(ex. <0.3, 0.5, 0.1>) 가 되는건가요?
차원은 어떻게 결정하는 것이고, 워드 임베딩 학습은 어떤식으로 진행되는지 예시를 설명해주실 수 있을까요?
미리 감사합니다!
답변 1
1
Skip-gram 모델은 각 단어를 벡터로 변환하는 Word2Vec 방법의 한 가지입니다. "I love king of Korea"라는 문장에서, "king"이라는 단어를 중심으로 양옆 2개의 단어를 예측하려는 모델이 Skip-gram입니다.
단어 임베딩의 차원 수는 사용자가 선택하는 하이퍼파라미터입니다. 예를 들어, 100차원으로 설정하면 각 단어는 100차원 벡터로 표현됩니다. 이 차원 수는 단어의 의미를 잡아내는 '특징(feature)'의 수를 결정하는 것과 같습니다. 더 많은 차원을 가질수록 더 많은 정보를 담을 수 있지만, 모델이 복잡해지고 계산 비용이 증가하므로 적절한 차원 수를 선택하는 것이 중요합니다.
다시 요약하면 'I love', 'of Korea' 은 지도 학습이 성립되도록 하는 역할을 하며 임베딩은 단어별로 만들어지는데 각 단어의 벡터 차원을 어떻게 정할지는 단어 임베딩을 만드는 사람이 필요에 따라 정하면 됩니다.
좋은 질문 감사합니다.
Word2Vec에서 "input vector"는 각 단어가 가지는 임베딩 벡터를 말합니다. 이 벡터는 원-핫 인코딩된 단어를 Word2Vec 모델의 입력층(input layer)과 은닉층(hidden layer) 사이에 있는 가중치 행렬과 곱하여 얻어집니다.
Word2Vec 학습 과정에서는 각 단어에 대응되는 원-핫 인코딩 벡터를 입력층에 넣고, 이를 은닉층의 가중치 행렬과 곱합니다. 이렇게 얻은 결과가 바로 해당 단어의 input vector로, 그 차원수는 은닉층의 뉴런 수와 같습니다.
Word2Vec에서 "output vector"는 각 단어에 대응되는 출력 층의 가중치 벡터를 의미합니다.
Word2Vec의 학습 과정에서, 입력 단어 주변의 단어들 (즉, 컨텍스트)을 예측하려고 합니다. 이를 위해 모델은 두 개의 가중치 행렬을 학습하게 됩니다. 하나는 입력 층에서 은닉 층으로 가는 가중치 행렬이고 (이것이 input vector를 만드는 데 사용됩니다), 다른 하나는 은닉 층에서 출력 층으로 가는 가중치 행렬입니다. 후자가 바로 각 단어에 대한 "output vector"를 만드는 데 사용됩니다.
그런데 실제 사용할 때는 input vector와 output vector 중에서 보통 input vector만을 사용합니다. 이는 input vector가 이미 충분한 의미적 정보를 잘 담고 있고, output vector는 주로 모델의 예측 목적에 집중된 정보를 담고 있기 때문입니다.
Encoder-Decoder 구조나 Transformer와 같은 모델에서는 모델의 입력으로 Embedding layer를 선언하여 embedding vector를 학습시켜 사용합니다. 만드는 방법은 word2vec 과 다르지만 단어의 의미 정보를 담는 원리는 동일합니다.
좋은 질문 감사합니다.
감사합니다. 추가적으로 질문 드립니다.
https://ronxin.github.io/wevi/ 에서
결과를 보니, Weight Matrices 가 Input vector, Output vector 두개가 나오는데, 둘다 word embedding vector라고 보면 되나요? 추후 Encoder-Decoder 등에 input으로 embedding vector가 들어가는걸로 알고있는데, 어떤 vector가 대표성을 띄는건가요?
항상 weight matrices가 2개있어야 예측이 가능한게 아닌지요??