-
NLP 에서의 embedding size머신러닝 및 딥러닝 2021. 1. 1. 15:20
NLP에 대해서 "임베딩"이란 말을 많이 들었는데 "임베딩"이란 무엇일까?
임베딩 : NLP에서 일반적으로 사람들이 쓰는 언어를 기계가 알아들을 수 있게 수치화(벡터화) 하는 것으로 단어나 문장을 벡터 공간에 끼워넣는다(embed)는 의미를 가지고 있다.
이렇게 했을 때 장점이 어떤 것이 있을까?
1.
1.1 코사인 유사도와 같은 방법으로 가장 유사한 문장 또는 단어를 계산 하여 구할 수 있다.
1.2 t-SNE 차원 축소 기법으로 시각화가 가능하다.
2. 단어들 사이의 의미/문법적 정보를 도출 할 수 있다.
- 단어나 문장 사이의 유사도를 계산 할 수 있다.
- 코사인 유사도와 가은 방법으로 가장 유사한 문장 또는 단어를 계산 하여 구할 수 있다.
- t-SNE 차원 축소 기법으로 시각화가 가능하다.
- 단어들 사이의 의미/문법적 정보를 도출 할 수 있다.
- 벡터 간 연산으로 단어 사이 문법적 관계 도출을 할 수 있다. (ex king : man = ? : woman)
- 해당 방식의 평가 방법으로는 word analogy test rk dlTek.
- Transfer Learning
- 다른 딥러닝 모델 입력값으로 사용할 수 있다.(BERT, GPT , etc)
현재와 과거의 임베딩 비교
과거 현재 LSA(잠재 의미 분석)
1. tf - idf 등의 행렬을 특이값 분해(SVD) 등을 통하여 차원을 축소
2. corpus 통계량을 직접적으로 활용NN 기반 임베딩 기법 단어 수준 임베딩 모델
- NPLM, Word2Vec, Glove, FastText, Swivel문장 수준 임베딩 모델
- ELMo, BERT, GPT
- 단어 sequence 전체의 문맥적 의미 함축End-to-End 모델
- seqence-to-sequence 모델Pretrain& Fine Tuning
- Corpus 통해 임베딩을 만들어 의미, 문법적 맥락이 포함되게 한 뒤(pretrain), 모델 업데이트(fine-tuning)DownStream 과 Upstream 의 차이
- DownStream
- 일반적인 NLP의 task들
- ex. NER(품사 판별), Dialogue(대화생성)
- Upstream
- 임베딩을 pre-train 하는 작업
- 임베딩의 품질이 좋아야 모델 자체의 성능이 좋아짐
그렇다면 마지막으로 임베딩의 종류는 어떤 것들이 있을까?
- 행렬 분해 기반 방법
- 행렬을 쪼개는 방식 (Glove, CBOW, Swivel)
- 예측 기반 방법
- 특정 단어 예측(Word2Vec, BERT ,GPT)
- 토픽 기반 방법
- 문서가 내포하고 있는 주제를 추론 하는 방식(LDA)
임베딩 예시
위의 사진과 같이 현재 입력으로 "요즘 날씨가 ...." 와 "그러니 따듯하게 ...." 를 입력으로 넣었다.
그 다음 sentencepiece 방법으로 encoding 방식을 취했는데 이렇게 되면 해당 입력의 size 가 2,10 으로 되어 있는것을 볼 수 있다. 여기서 2는 입력으로 2개의 문장을 넣었으니까 2가 된것이고 10은 tokenize한게 각각 9개 10개 인데 pad_sequence를 통하여 입력의 길이를 10으로 맞춰주었다.
이제 이것을 embedding_size 128로 바꾼 것을 보여주고 있다. 즉 하나의 token을 128개의 벡터로 바꾼것이다.
'머신러닝 및 딥러닝' 카테고리의 다른 글
nn.Module에서 super (1) 2021.01.10 np.zeros 와 np.zeros_like 의 차이 (0) 2021.01.06 Beam Search (0) 2020.12.22 numpy의 rand와 randn의 차이 (0) 2020.08.09 시계열 데이터란? (0) 2020.08.08 - 단어나 문장 사이의 유사도를 계산 할 수 있다.