나의 전공 노트

파이썬 / 희소 표현과 분산 표현

JoyDo 2022. 10. 27. 22:49
728x90

이전 글: 파이썬 / 임베딩(embedding) / 단어 임베딩: 원-핫 인코딩

 

파이썬 / 임베딩(embedding) / 단어 임베딩: 원-핫 인코딩

임베딩이란? 컴퓨터는 자연어를 직접적으로 처리할 수 없다. 컴퓨터는 수치 연산만 가능하기 때문에 자연어를 숫자나 벡터 형태로 변환할 필요가 있다. 이런 일련의 과정을 자연어 처리 분야에

daldalkorean.tistory.com

 

희소 표현(sparse representation)과 분산 표현(distributed representation)

원-핫 인코딩은 표현하고자 하는 단어의 인덱스 요소만 1이고 나머지 요소는 모두 0으로 표현되는 희소 벡터(또는 희소 행렬)이다. 이처럼 단어가 희소 벡터로 표현되는 방식을 희소 표현이라고 부른다. 희소 표현은 각가의 차원이 독립적인 정보를 지니고 있어 사람이 이해하기에 직관적인 장점이 있지만 단어 사전의 크기가 커질수록 메모리 낭비와 계산 복잡도가 커지는 단점도 있다. 또한 단어 간의 연관성이 전혀 없어 의미를 담을 수 없다.

희소 표현 방식

자연어 처리를 잘하기 위해서는 기본 토큰이 되는 단어의 의미와 주변 단어 간의 관계가 단어 임베딩에 표현되어야 한다. 하지만 희소 표현의 경우 그러지 못하다. 이를 해결하기 위해 각 단어간의 유사성을 잘 표현하면서도 벡터 공간을 절약할 수 있는 방법을 고안했는데, 이를 분산 표현이라고 한다. 분산 표현은 한 단어의 정보가 특정 차원에 표현되지 않고 여러 차원에 분산되어 표현된다 하여 붙여진 이름이다. 즉, 하나의 차원에 다양한 정보를 가지고 있다. 

분산 표현 방식

분산 표현 방식을 사용하면 단어 임베딩 벡터가 더 이상 희소하지 않다. 신경망에서는 분산 표현을 학습하는 과정에서 임베딩 벡터의 모든 차원에 의미 있는 데이터를 고르게 밀집시킨다. 이 때문에 희소 표현과 반대로 데이터 손실을 최소화하면서 벡터 차원이 압축되는 효과가 생긴다. 분산 표현 방식은 우리가 원하는 차원에 데이터를 최대한 밀집시킬 수 있어 밀집 표현(dense representation)이라 부르기도 하며, 밀집 표현으로 만들어진 벡터를 밀집 벡터(dense vector)라 한다.

희소 표현 방식에 비해 분산 표현 방식은 두 가지 장점을 가진다. 첫 번째는 임베딩 벡터의 차원을 데이터 손실을 최소화하면서 압축할 수 있다. 희소 표현 방식은 단어를 표현하는 데 너무 많은 차원이 필요하다. 단어 사전이 커질수록 비효율적일 수밖에 없는데다가 희소 벡터이기 때문에 대부분의 값이 0이 된다. 입력 데이터의 차원이 너무 높아지면 신경망 모델의 학습이 어려워지는 차원의 저주(curse of dimensionality) 문제가 발생한다. 보통 몇 천, 몇 만 차원의 크기가 필요했던 희소 표현 방식에 비해 분산 표현 방식을 사용할 경우 100~200차원 정도만 사용해도 많은 단어를 표현할 수 있다. 두 번째 장점은 임베딩 벡터에는 단어의 의미, 주변 단어 간의 관계 등 많은 정보가 내포되어 있어 일반화 능력이 뛰어나다. '남자'와 '남성'이라는 단어가 있다고 했을 때 희소 표현 방식에서는 그저 단 하나의 요솟값에 불과하다. ' 남자'와 '남성'의 관계가 전혀 표현되어 있지 않다. 하지만 분산 표현 방식은 다르다. 벡터 공간 상에서 유사한 의미를 갖는 단어들은 비슷한 위치에 분포되어 있기 때문에 '남자'와 '남성'의 단어 위치는 매우 가깝다. 이런 두 단어 간의 거리를 계산할 수 있으면 컴퓨터는 '남자'와 '남성' 두 단어를 같은 의미로 해석할 수 있다.

분산 표현 방식의 벡터 공간

 

희소 표현(sparse representation) 분산 표현(distributed representation)
- 원-핫 인코딩은 표현하고자 하는 단어의 인덱스 요소만 1이고 나머지 요소는 모두 0으로 표현되는 희소 벡터(또는 희소 행력)임
- 단어가 희소 벡터로 표현되는 방식을 희소 표현이라고 부름
- 장점: 각각의 차원이 독립적인 정보를 지니고 있어 사람이 이해하기에 직관적임
- 단점: 단어 사전의 크기가 커질수록 메모리 낭비와 계산 복잡도가 커짐. 단어 간의 연관성이 전혀 없어 의미를 담을 수 없음.
- 자연어 처리를 잘하기 위해서는 기본 토큰이 되는 단어의 의미와 주변 단어 간의 관계가 단어 임베딩에 표현되어야 함
- 희소 표현의 경우 그러지 못함. 이를 해결하기 위해 각 단어 간의 유사성을 잘 표현하면서도 벡터 공간을 절약할 수 있는 방법이 분산 표현임
- 분산 표현은 한 단어의 정보가 특정 차원에 표현되지 않고 여러 차원에 분산되어 표현된다고 하여 붙여진 이름임. 하나의 차원에 다양한 정보를 가지고 있음.
- 신경망에서 분산 표현을 학습하는 과정에서 임베딩 벡터의 모든 차원에 의미 있는 데이터를 고르게 밀집시킴. 희소 표현과 반대로 데이터 손실을 최소화하면서 벡터 차원이 압축되는 효과가 생김

 

참고
조경래(2020), 처음 배우는 딥러닝 로봇, 한빛미디어(주), 119-121.
728x90