오답노트
[DL] Embedding 본문
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 벡터 데이터로 변환할 때 가중치 테이블을 사용해 변환하게 되는데, 역전파를 통해 이 가중치 테이블이 계속 업데이트 된다.
Embedding의 과정은 다음과 같이 정리할 수 있다.
- One-Hot Encoding 으로 벡터 생성
- 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 |