‘분산 표현'이라고 부름
원핫 인코딩
I : [1 0 0 0]
am : [0 1 0 0]
a : [0 0 1 0]
student : [0 0 0 1]
단점: 단어 간의 유사도를 구할 수 없음
두 벡터 간의 내적이 항상 0이 되기 때문에 단어 간의 관계를 파악할 수 없음

임베딩
원핫 인코딩의 단점을 해결
단어를 차원이 일정한 벡터로 나타냄
[0.04227, -0.0033, 0.1607, -0.0236, ...]
→ 각 요소가 연속적인 값
예) Word2Vec 등
단어를 벡터로 나타내는 임베딩 방법 중 하나
특정 단어의 양 옆 두 단어(window size = 2)의 관계를 활용
CBoW**와 Skip-gram
CBoW:주변 단어에 대한 정보를 토대로 중심 단어의 정보를 예측
“… 나 는 [ -- ] 하나 에 … “
“… 는 별 [ ---- ] 에 아름다운 …”
“… 별 하나 [ -- ] 아름다운 말 …”
“… 하나 에 [ -------- ] 말 한마디 …”
Skip-gram: 중심 단어 정보를 토대로 주변 단어의 정보를 예측
“… [ -- ] [ -- ] 별 [ ---- ] [ -- ] …”
“… [ -- ] [ -- ] 하나 [ -- ] [ -------- ] …”
“… [ -- ] [ ---- ] 에 [ -------- ] [ -- ] …”
“… [ ---- ] [ -- ] 아름다운 [ -- ] [ ------ ] …”
역전파 관점에서는 후자가 더 많은 학습이 일어나 모델 성능이 더 좋음

모델의 구조: Skip-gram

학습 데이터 디자인
Word2Vec 학습 결과
위 예시로 학습을 하면, 결과로 skip-gram 모델을 통해 10000개 단어 * 300 차원의 임베딩 벡터 생성
임베딩 벡터는 문장 간 관련도 계산 및 문서 분류 작업 등에 사용 가능
아래 그림은 신경망 내부에 있는 10000*300 가중치 행렬에 의해 10000개 단어의 300차원 벡터가 생성되는 모습을 나타냄

Word2Vec로 임베딩한 벡터 시각화
Word2Vec로 얻은 임베딩 벡터는 단어 간의 의미적/문법적 관계를 잘 나타냄
패딩 padding: 길이가 동일한 문장이나 문서들을 한 번에 묶어서 처리 가능하기 때문에 길이가 다른 각 문장이나 문서의 길이를 임의로 동일하게 맞춰주는 작업
pad_sequences: 케라스로 패딩하게 돕는 함수maxlen_pad= 400
X_train=pad_sequences(X_encoded, maxlen=maxlen_pad, padding='post')
y_train=np.array(y_train)