티스토리 뷰

AI/NLP

Embedding Layer의 이해

미남잉 2022. 11. 6. 21:51
728x90

 

단어 임베딩은 차원 축소와 함께 원-핫 인코딩의 대안으로 생각할 수 있습니다.

 

텍스트 데이터를 다룰 때 신경망을 포함한 기계 학습 모델에 입력하기 전에 이를 숫자로 변환해야 합니다.

 

단순함을 위해 단어는 범주형 변수와 비교할 수 있습니다. 범주형 기능을 숫자로 변환하기 위해 원-핫 인코딩을 사용합니다. 그렇게 하기 위해 각 범주에 대해 더미 기능을 만들고 0과 1로 채웁니다. 마찬가지로 텍스트 데이터의 단어에 대해 원-핫 인코딩을 사용하는 경우 각 단어에 대해 더미 기능을 갖게 됩니다.

 

이는 10,000단어의 어휘에 대해 10,000개의 feature를 의미합니다. 이것은 단어 벡터를 위한 큰 저장 공간을 요구하고 모델 효율성을 감소시키기 때문에 실현 가능한 임베딩 접근 방식이 아닙니다.

 

임베딩 레이어를 사용하면 각 단어를 정의된 크기의 고정 길이 벡터로 변환할 수 있습니다. 결과 벡터는 0과 1 대신 실제 값을 갖는 조밀한 벡터입니다. 단어 벡터의 고정된 길이는 축소된 차원과 함께 더 나은 방식으로 단어를 표현하는 데 도움이 됩니다.

 

이러한 방식으로 임베딩 레이어는 Lookup 테이블처럼 작동합니다. 단어는 이 테이블의 키이고 조밀한 단어 벡터는 값입니다. 

 

임베딩 레이어로 변환 시키는데에는 두 가지 방법이 존재하게 되는 것입니다! 헷갈려하지 않기

 

1. 단어를 범주형 변수로 변환

2. 원핫 인코딩으로 변환

 

그 후에 lookup table처럼 만들어주고, 각  단어가 임베딩 벡터로 만들어지는 것입니다.

 

파이토치의 nn.Embedding은

 

  • Vocab size : 단어의 크기
  • embedding dim : 각 단어의 벡터 길이
  • input length : 시퀀스의 최대 길이

 

로 매개변수 입력값을 받습니다.

728x90
댓글