<Word Embedding>
- 단어를 특정 차원으로 이루어진 공간 상의 한 점, 그 점으로 이루어진 벡터로 변환
- 'cat' and 'kitty' are similar words, so they have similar vector representations-short
distance
- 의미상으로 비슷한 단어들을 좌표 공간 상에 비슷한 위치에 mapping되도록 함으로써 단어간 의미상 유사도를 잘 반영한 벡터표현을 nlp 알고리즘에 내어주는 역할을 함
<Word2Vec>
Assumption: words in similar context will have similar meanings
The cat purrs.
The cat hunts mice.
ex) I study math
슬라이딩 윈도우를 이용하여 중심 단어와 주변 단어의 쌍을 구성하여 학습 데이터를 만듦
(I, study) (study, I) (study, math)...
- 거리가 최대한 가깝게 하는 softmax를 적용함으로써 W1, W2 학습 진행
- one hot 벡터 특성상 0이 아닌 컬럼을 뽑아오는 과정=임베딩 레이어
- 내적 연산을 벡터들 간 유사도를 나타내는 것으로 생각한다면,
입력 단어의 W1, 출력 단어의 W2간의 내적 기반한 유사도가 최대한 커지도록
다른 단어들의 W2 상 벡터들의 내적 기반한 유사도는 최대한 작도록
W1, W2 조정
<GloVe>
- 각 입력 및 출력 쌍들에 대해서 학습 데이터에서 두 단어가 한 윈도우 내에서 동시에 총 몇 번 등장했는지 사전에 계산(P ij)
입력어-출력어 내적값(Ui,Vj)가 잘 fitting될 수 있도록 함
<실습>
<Word2Vec>
1. 주어진 단어들을 word2vec 모델에 들어갈 수 있는 형태로 만듦
2. CBOW, Skip-gram 모델을 각각 구현
3. 모델을 실제로 학습해보고 결과 확인
-데이터를 확인하고 Word2Vec 형식에 맞게 전처리
- 모델 구현
self.embedding: vocab_size 크기의 one-hot vector를 특정 크기의 dim 차원으로 embedding 시키는 layer
self.linear: 변환된 embedding vector를 다시 원래 vocab_size로 바꾸는 layer
- 고차원의 벡터들을 시각화할 때, t-SNE는 학습을 통하여 차원 축소를 할 때, 가까운 벡터는 더 가깝게 먼 벡터는 더 멀게 배치함
<다국어 임베딩>
- LaBSE 모델을 사용해 문장 임베딩(Sentence Embeddings)을 획득, 한국어-영어 문장 간 유사도 산출
- Google AI에서 개발한 다국어 임베딩 모델로, LaBSE를 사용하면 모델이 지원하는 109개 언어에 대해 문장 임베딩을 획득할 수 있음
- Pre-trained LM (BERT) 사용
- Source Text와 Target Text를 모델에 별도로 입력하는 dual-encoder 형태로 구성
LaBSE 학습 (in-batch negative sampling)
LaBSE는 in-batch negative sampling을 적용하여 학습함. Batch 단위로 N개의 Source Text과 Target Text를 각각 12-Layer Transformer Embedding Network에 입력하여 (N X dim) 의 Source Embeddings와 (N X dim) 의 Target E mbeddings을 얻었을 때, Source 문장들과 Target 문장들 간의 유사도 matrix는 Source Embeddings와 Target Embeddings의 matrix multiplication을 통해 구할 수 있음
이 때 데이터로서 N개의 병렬 문장 쌍을 사용한다면, 각 문장들은 batch 내에서 1개의 true translation을, N-1개의 negative translation을 가지게 됨. 따라서, 우리는 문장 간 유사도 matrix에서 대각 성분들의 값이 높아지도록 학습하게 됨.
'부스트캠프 AI Tech' 카테고리의 다른 글
Seq2Seq (0) | 2022.10.23 |
---|---|
RNN, LSTM, GRU (0) | 2022.10.12 |
22-10-11 깃헙특강 (0) | 2022.10.11 |
Bag-of-Words, NaiveBayes Classifier (0) | 2022.10.11 |
Transformer (0) | 2022.10.09 |
댓글