본문 바로가기

개발/NLP

NLP Load : 맨땅에 헤딩하는 NLP 공부일지 (9)

본격적으로 NLP의 길로 들어서보자~~
오늘 정리할 내용은 바로 "워드 임베딩"!
하.지.만 그 전에, 5번째 NLP Load에서 다룬 벡터화에 대해 간략하게 복습을 해보자. 레츠기릿~

Ⅰ. 벡터화(Vectorization)

앞서 정리한 것처럼 벡터화는 크게 3가지 종류로 나눌 수 있다.

  1. 벡터화에 신경망을 사용하지 않을 경우

  • 단어에 대한 벡터화 : OHE(One-Hot Encoding)
  • 문서에 대한 벡터화 : DTM(Document-Term Matrix), TF-IDF

  2. 벡터화에 신경망을 사용하는 경우

  • 단어에 대한 벡터화 : Word  Embedding (Word2Vec, GloVe, FastText, Embedding Layer)
  • 문서에 대한 벡터화 : Doc2Vec, Sent2Vec

  3. 문맥을 고려한 벡터화

  • ELMo, BERT, GPT, T5, etc... (Pre-trained Language Model 관련한 것들!)

앞서 정리한 것들 중 우리는 "벡터화에 신경망을 사용하는 경우", 그 중에서도 단어에 대한 벡터화를 2~3개 포스팅에 걸쳐 정리할 것이다.

Ⅱ. 워드 임베딩

워드 임베딩은 무엇일까요? 워드 임베딩을 한문장으로 표현하면 '단어를 벡터로 표현하는 방법'이다.
기존의 OHE를 이용한 워드 임베딩의 경우 벡터의 차원이 vocab의 크기가 되므로 불필요한 공간소요가 많다.
이것을 인공 신경망을 이용한 방식으로 바꾸게 되면 각 단어벡터 간의 유사도(의미를 반영)를 계산할 수 있고 기존에 비해 벡터의 차원수가 현저히 줄어들며 각 차원의 값이 이진값에서 실수값으로 바뀌게 된다.

Word Embedding

원-핫 인코딩으로 표현된 단어들은 단어의 의미가 반영되지 않는다. 이를 해결한 방식이 워드 임베딩이고 이를 적용할 경우 '선생님' 벡터가 '전화기'라는 벡터보다 '교사'라는 벡터와 더 가깝다는 것을 알 수 있다.

OHE와 Word Embedding의 비교

 위 표와 같은 차이점을 보인다. 워드 임베딩은 크게 2가지로 구분되는데 아래와 같다.

  • 랜덤 초기화 임베딩
    • NNLM과 마찬가지로 랜덤값을 가지고 오차를 구하는 과정에서 embedding table을 학습한다.
  • 사전 훈련된 임베딩
    • 특정한 알고리즘에 방대한 데이터를 입력으로 학습시킨 후 사용한다. 대표적으로 Word2Vec, FastText, GloVe가 있다.

우리는 '사전 훈련된 임베딩'을 알아볼 것이다! 물론 이 다음포스팅에서 더 자세하게!! 😊😊