정민수
5 min readJun 2, 2019

자연어처리(NLP) 3일차

19.06.02

Text Classification & Sentence Representation

How to represent sentence & token?

  • 문장은 일련의 토큰(token)으로 구성되어 있습니다. 텍스트 토큰은 주관적, 임의적(arbitrary)인 성격을 띄고 있습니다.
  • 토큰을 나누는 기준은 다양합니다.

공백(White space)

형태소(Morphs)

어절

비트숫자

  • 컴퓨터에게 단어를 숫자로 표현하기 위해서, 단어장(Vocabulary)을 만들고, 중복되지 않는 인덱스(index)로 바꿉니다.
  • 궁극적으로 모든 문장을 일련의 정수로 바꿔줍니다. 이를 인코딩(Encoding)이라고 합니다.
  • 하지만 관계없는 숫자의 나열로 인코딩하는 것은 우리가 원하는 것은 아닙니다. 여전히 주관적인 숫자들 뿐입니다.
  • 우리는 비슷한 의미의 단어는 같이 있고, 아니면 멀리 떨어져있는 관계를 만들고 싶습니다. 그렇다면 어떻게 관계를 만들어줘야 할까요?
  • 한 가지 방법으로 “One hot Encoding”이 있을 수 있습니다.

길이가 단어장의 총 길이(│V│)인 벡터에서, 단어의 index 위치에 있는 값은 1, 나머지는 0으로 구성합니다.

x=[0,0,0,⋯,0,1,0,⋯,0,0]∈{0,1}​∣V∣​​

단점 : 모든 토큰 간에 거리가 같습니다. 하지만 모든 단어의 뜻이 같지 않기 때문에 거리가 달라져야 저희가 원하는 단어간의 관계가 성립됩니다.

  • 어떻게 신경망이 토큰의 의미를 잡아낼 수 있을까요?

결론은 각 토큰을 연속 벡터 공간(Countinous vector space)에 투영하는 방법입니다. 이를 임베딩(Embeding)이라고도 합니다.

Table Look Up : 각 one hot encoding된 토큰에게 벡터를 부여하는 과정입니다. 실질적으로 one hot encoding 벡터(x)와 연속 벡터 공간(W)을 내적한 것입니다.

Table Look Up 과정을 거친 후 모든 문장 토큰은 연속적이고 높은 차원의 벡터로 변환합니다.

X=(e​1​​,e​2​​,⋯,eT​​)where et​​∈Rd​​

CBoW & RN & CNN

  1. 문장표현(Sentence representation)의 의미 : 어떤 과제를 풀기에 적합하고 숫자로 나타낸 문장의 표현입니다.

2. CBoW(Continous bag-of-words):

  • 단어장을 단어 주머니로 보게 되고, 이에 따라 단어의 순서는 무시합니다.
  • 문장에 대한 표현은 단어 벡터들을 평균시킨 벡터로 구합니다.
  • 효과가 좋기 때문에 제일 먼저 시도해봐야합니다. (Baseline 모델)
  • 공간상에서 가까우면 비슷한 의미, 아니며 멀리 떨어져 있을 것입니다.

3. Relation Network(Skip-Bigram):

  • 문장안에 있는 모든 토큰 쌍(pairs)을 보고, 각 쌍에 대해서 신경망을 만들어서 문장표현을 찾습니다.
  • 장점 : 여러 단어로 된 표현을 탐지 할 수 있습니다.
  • 단점 : 모든 단어간의 관계를 보기 때문에, 전혀 연관이 없는 단어도 보게 됩니다. (계산 복잡도 올라감)

4. Convolution Neural Network (CNN):

  • 특징:

(1) k-gram을 계층적으로 (hierachically) 보게 됩니다.

(2) Layer를 쌓을 때 마다, 점진적으로 넓은 범위를 보기 때문에, “단어>다중 단어 표현 > 구절 > 문장”순으로 보는 인간의 인식과도 알맞습니다.

(3) 1차원의 Convolution Network입니다.

  • 장점 : 좁은 지역간 단어의 관계를 볼 수 있습니다.

Self Attention & RNN

  1. RN :
  • 모든 다른 토큰의 관계를 봅니다. 모든 단어간의 관계를 봐서 효율적이지 못합니다.
  • ht​​=f(xt​​,x​1​​)+⋯+f(xt​​,xt−1​​)+f(xt​​,xt+1​​)+⋯+f(xt​​,xT​​)

2. CNN :

  • 작은 범위의 토큰의 관계를 봅니다. 따라서 더 먼 거리의 단어간의 관계가 있을 경우 탐지할 수 없거나 더 많은 convolution 층을 쌓아야합니다.
  • ht​​=f(xt​​,xtk​​)+⋯+f(xt​​,xt​​)+⋯+f(xt​​,xt+k​​)

3. 하지만 CNN 방식을 가중치가 부여된 RN의 일종으로 볼 수도 있습니다.

  • ht​​=∑​t​′​​=1​T​​I(∣t​′​​−t∣≤k)f(xt​​,xt​′​​​​) where I(S)=1 if S is True & 0 otherwise

4. 그렇다면 가중치가 0과 1이 아닌 그 사이의 값으로 계산할 수 있다면 어떨까요?

5. Self Attention

  • ht​​=∑​t​′​​=1​T​​α(xt​​,xt​′​​​​)f(xt​​,xt​′​​​​)
  • α(xt​​,xt​′​​​​)=​​​exp(β(xt​​,xt​′​​​​))​​ / ∑​t​′​​=1​T​​exp(β(xt​​,xt​′​​​​))

where β(xt​​,xt​′​​​​)=RN(xt​​,xt​′​​​​)

  • 장점 :

Long range & short range dependency 를 극복할 수 있습니다. (RN과 CNN의 단점 극복)

관계가 낮은 토큰은 억제하고 관계가 높은 토큰은 강조할 수 있습니다.

  • 단점 :

계산 복잡도가 높고 counting 같은 특정 연산이 쉽지 않습니다.

6. Recurrent Neural Network(RNN) :

  • 메모리를 가지고 있어서 현재까지 읽는 정보를 저장할 수 있습니다.
  • 문장의 정보를 시간의 순서에 따라 압축할 수 있습니다.
  • 단점:

문장이 많이 길어질 수록 고정된 메모리에 압축된 정보를 담아야 하기 때문에, 앞에서 학습한 정보를 잊습니다. 이는 곧 정보의 손실을 뜻합니다.

토큰을 순차적으로 하나씩 읽어야 하기 때문에, 훈련 할때 속도가 기타 네트워크 보다 느립니다.

  • Long Term Dependency 해결방법 :

bidirectional network를 쓰게 됩니다.

LSTM, GRU 등 RNN의 변형을 사용합니다.

정민수
정민수

No responses yet