오답노트

[DL] Embedding 본문

Python/DL

[DL] Embedding

권멋져 2023. 3. 4. 00:46

Embedding

Embedding은 sparse 벡터 데이터를 dense 벡터 데이터로 변환 하는 것을 의미한다.

sparse 벡터 데이터는 One-Hot Encoding된 데이터인데, One-Hot Encoding은 데이터 마다 인덱스를 부여하고 데이터의 유니크 개수 만큼의 차원의 벡터에 해당 인덱스에 1을 입력하는 것이다.

 

위 그림에서 red는 [1,0,0], blue는 [0,1,0], green는 [0,0,1] 으로 표현 가능하다.

 

dense 벡터 데이터는 sparse 벡터 데이터와 달리 0이 대부분 없는 데이터를 의미한다.

왼쪽 sparse, 오른쪽 dense

sparse 벡터 데이터를 dense 벡터 데이터로 변환할 때 가중치 테이블을 사용해 변환하게 되는데, 역전파를 통해 이 가중치 테이블이 계속 업데이트 된다.

Embedding의 과정은 다음과 같이 정리할 수 있다.

  1. One-Hot Encoding 으로 벡터 생성
  2. 1번에서 생성한 벡터와 가중치 테이블을 곱해 Embedding 생성

Word Embedding

Embedding은 우선 One-Hot Encoding 벡터가 필요하다. 즉 단어를 One-Hot Encoding을 통해 sparse 벡터로 만들어야 하는데, 어떤 Document의 등장하는 단어들을 사전화 하여 One-Hot Encoding을 진행한다.

 

이러면 sparse 벡터를 만들 수 있고 이를 Embedding 하여 dense 벡터를 만들 수 있다.

위 그림은 great라는 단어를 Embedding하는 과정이다.

great의 index로 lookup table이라는 가중치 테이블을 통해 Embedding 벡터를 얻어 내는 과정이다.

 

프레임워크의 Embedding Layer에서는 One-Hot Encoding을 안하는 대신 사전의 크기 즉 Input Dimmension을 입력 받아

단어의 index로 One-Hot Encoding과 같은 처리를 하게 해준다.

 

 

 

'Python > DL' 카테고리의 다른 글

[RS] Neural Collaborative Filtering 정리  (0) 2023.03.05
[NLP/RS] Negative Sampling  (0) 2023.03.03
[밑딥] 합성곱 신경망 (CNN)  (0) 2023.02.27
[밑딥] 학습 관련 기술들  (0) 2023.02.27
[밑딥] 오차역전파법  (0) 2023.02.27