티스토리 뷰
NLP (Natural Language Processing)
Distributed Representation / Dense Vector
기내식은수박바 2019. 3. 28. 17:24반응형
One-Hot Encoding / Vector (원-핫 인코딩 / 벡터) ?
- 어휘 집합 (Vocabulary) 내 단어를 표현하는 가장 간단한 방법이다.
- 어휘 집합 (Vocabulary) ? : 중복된 단어가 없는 서로 다른 단어들의 집합이다.
왜 사용할까 ?
- 상당히 직관적이며, 간단하다.
- 컴퓨터나 기계는 보통 문자보다는 숫자를 더 잘 처리하기 때문에, 문자를 숫자 형태로 바꾸기 위해 사용한다.
설명
- 표현하고 싶은 단어의 인덱스 값을 1, 이외에 나머지 값들은 모두 0으로 설정한다.
- 원-핫 인코딩을 통해 나온 벡터를 원-핫 벡터 (One-Hot Vector) 라고 하며, 이 벡터의 차원은 어휘 집합의 크기와 동일하다.
- ex) "강아지", "고양이", "사자", "호랑이", "돼지" 라는 단어들로 구성된 어휘 집합 (5개) 이 있다고 해보자.
- 어휘 집합에 있는 단어들을 원-핫 벡터로 표현하면 아래와 같이 5차원이 될 것이다.
Sparse Representation / Vector (희소 표현 / 벡터) ?
One-Hot Encoding의 문제점
- 그런데 만약 어휘 집합의 크기가 1천 개, 1만 개라면 어떻게 될까?
- 벡터의 차원 수도 1천, 1만이 될 것이며, 계산 복잡성, 메모리 부족 등 비효율적인 여러 문제들을 야기하게 될 것이다.
- 이렇게 만들어진 벡터를 희소 벡터 (Sparse Vector) 라고 하며, 해당 단어 인덱스의 값만 1이고, 나머지 9999, 99999 값은 모두 0으로 구성된다 (Sparse 하다고 표현한다).
- 현실에 있는 단어들의 수는 수만 개 또는 그 이상이 존재할 것이고, 이 단어들을 모두 벡터로 표현하면 차원수는 굉장히 커질 것이다.
- 문제점은 하나 더 있는데, 두 벡터의 내적 (Inner Product) 값이 항상 '0' 이라는 것이다.
- 이는 두 벡터가 항상 직교 (Orthogonal) 한다는 것이다.
- 즉, 두 벡터가 항상 독립적 (Independent) 이라는 것을 의미하지만, 실제로는 어떤 두 단어 사이에 전혀 관련성이 없지 않다.
- 위 예시 단어 중 강아지, 고양이만 봐도 동물이라는 카테고리로 보면 어느 정도 유의성을 가지는 것으로 볼 수 있다.
- 위 예시 외에도 유의어, 반의어 같이 단어들 끼리 의미적으로 특정한 관계를 맺고 있기 때문이다.
Distributed Representation / Dense Vector (분산 표현 / 밀집 벡터) ?
도입
- 분산 표현은 원-핫 벡터의 문제점인 고차원과 내적 값이 항상 '0'인 부분을 해결하기 위한 방법이다.
- 먼저, Sparse Vector의 요소 값은 0 또는 1인 이진 (Binary) 값을 가지며, Dense Vector의 요소 값은 연속형의 실수 값을 가진다.
- 즉, 분산 표현은 Sparse한 벡터 (이진 값) 를 Dense한 벡터 (연속형의 실수 값) 로 변환하여 표현하는 것이다.
설명
- 위 그림의 왼쪽을 보면 9개의 그림이 있다 (해 3개, 달 3개, 구름 3개).
- 이를 원-핫 인코딩을 거쳐 표현하면 9차원 벡터 9개가 나올 것이다.
- 그런데, 9개 그림에서는 2가지 속성 (색깔, 모양) 이 존재한다.
- 여기서 분산 표현 (Distributed Representation) 의 개념은 2가지 속성 (2차원 벡터) 을 가지고 하나의 모양 (객체, Object) 을 표현할 수 있다는 것이다.
- 즉, 9차원이던 벡터 (Sparse Vector) 가 2차원 벡터 (Dense Vector) 로 변환된다.
- 이 2차원 벡터는 실수값을 가지므로 아래와 같이 공간상에서 벡터 간 거리나 유사도를 구할 수 있다.
- 의미가 유사한 단어는 가깝게, 반대의 경우는 멀게 배치가 될 것이다.
- 수치적으로 나타낸다면, 아래와 같을 것이다.
- 아래의 수치는 정확한 값이 아닌 예시를 보여주기 위해 임의로 집어 넣은 값이다.
Reference
반응형
'NLP (Natural Language Processing)' 카테고리의 다른 글
NPLM (Neural Probabilistic Language Model) (2) | 2020.01.18 |
---|---|
LSTM (Long Short Term Memory) (0) | 2019.11.15 |
RNN (Recurrent Neural Network) (0) | 2019.11.15 |
댓글