- 
                            
                            NLP 에서의 embedding size머신러닝 및 딥러닝 2021. 1. 1. 15:20NLP에 대해서 "임베딩"이란 말을 많이 들었는데 "임베딩"이란 무엇일까? 임베딩 : 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 
- 단어나 문장 사이의 유사도를 계산 할 수 있다.