Deep Learning/PyTorch

Embedding에 대해서 알아보자

Raphael_07 2020. 7. 27. 21:54

워드 임베딩에 대해서 알아보자.

임베딩(Embedding)이란 무엇일까?

이 단어 또한 수많은 말들로 정의될 수 있지만, 결론적으로 입력이되어지는 String 형태의 문장을 Float 형태의 벡터로 변환하는 행위를 뜻한다고 생각한다. 아래의 코드를 보면 임베딩의 역할을 직관적으로 이해할 수 있을 것이다.

만약 "I love the nature and nature."라는 문장이 있다면, 우리는 이 문장을 불필요한 부분을 전처리하고 토큰화(Tokenize)하여

[ I, love, the, nature, and, nature ]의 단어리스트로 만든뒤, 고유한 단어들에대해 각각의 정수 index를 부여한다.

여기서는 [1, 7, 3, 11, 5, 11]로 인덱스가 부여되었다고 가정한다. 이 때, embedding은 (5000, 10)의 크기로 만들어졌으며 
각 0~4999 범위의 정수에 1:1로 대응되는 크기가 10인 벡터가  생성되어 lookup Table 처럼 저장되어져있는 변수이다.

이 embedding에 정수를 대입하면 각 정수에 대응되는 벡터가 출력값으로 나타되고, 우리는 이러한 전체과정을 임베딩이라한다.