[딥러닝 스터디] 자연어의 계산과 이해

[딥러닝 스터디] 자연어의 계산과 이해

다음의 책을 공부하며 정리한 내용입니다

2장. 언어모델이란

: 자연어의 의미를 임베딩에 어떻게 녹여낼 수 있는가? 그 비결은 자연어의 통계적 패턴 을 통째로 임베딩에 넣는 것이다.

임베딩을 만드는 세가지 철학

구분 bag of words 가정 언어 모델 분포 가정
내용 어떤 단어가 (많이) 쓰였는가 단어가 어떤 순서로 쓰였는가 어떤 단어가 같이 쓰였는가
대표 통계량 TF-IDF - PMI
대표 모델 Deep Averaging Network ELMo, GPT Word2Vec

자연어의 의미는 해당 언어 사용자들이 실제 사용하는 일상 언어에서 드러난다. 따라서 실제 사람이 사용하는 자연어의 통계적 패턴정보를 임베딩에 넣는다면 임베딩에 자연어의 의미를 함축해 넣을 수 있다.

임베딩을 만들때 쓰는 통계정보는 크게 3가지가 있다.

첫째, 문장에 어떤 단어가 (많이) 쓰였는가

둘째, 단어가 어떤 순서로 등장하는가

셋째, 어떤 단어가 같이 나타났는가


2-1. 어떤 단어가 많이 쓰였는가

  1. Bag of words 가정

    • 단어의 등장 순서에 관계없이 문서 내 단어의 등장 빈도 를 임베딩으로 쓰는 기법
    • 저자가 생각한 주제분서에서의 단어 사용 에 녹아들어있다는 가정을 바탕으로 한다.
    • 정보 검색 분야에서 많이 사용한다. 사용자 질의를 백오브워즈 임베딩으로 변환 후 코사인 유사도가 가장 높은 문서를 사용자에게 노출한다.
  2. TF - IDF

    • 문서에 단순히 많이 나타나는 단어만으로 주제를 판단하기 어려울 수 있다.(예: 한국어 문서에는 조사 ‘을/를’이 많이 등장하지만 이를 통해 주제 파악은 어려움.)
    • 이를 보안하기 위해 나타난 기법이 TF-IDF(Term Frequency-Inverse Document Frequency)
    • TF : 어떤 단어가 특정 문서에 얼마나 쓰였는지의 빈도
    • DF : 특정 단어가 나타난 문서의 수
    • IDF : log( 전체 문서의 수 / 특정 단어의 DF )
      • 값이 클수록 특이한 단어임을 의미
      • 단어가 문서의 주제와 연관있을 정도(주제 예측능력) 와 관련있다.
    • 단어의 주제 예측능력이 클수록 TF-IDF 값이 커진다.
  3. Deep Averaging Network

    • 백오브워즈 가정의 신경망 버전

2-2. 단어가 어떤 순서로 쓰였는가

  1. 언어 모델이란?
    • 언어 모델이란 딥러닝과 관계없이 이전부터 있었던 개념으로, 언어를 모델링하고자 단어 시퀀스확률을 부여 하는 모델이다.
    • 단어의 등장 순서를 무시하는 백오브 워즈와 달리 시퀀스 정보를 명시적으로 학습 한다. 따라서 백오브 워즈의 대척점에 언어모델이 있다고 할 수 있다.
    • 언어모델을 만드는 방법으로는 크게 1)통계를 이용한 방법과 2)신경망을 이용한 방법이 있다.

잘 학습된 언어모델은 어떤 문장이 더 자연스러운지, 또한 주어진 단어 시퀀스 다음에는 무엇이 오는게 자연스러운지를 알수있다.

이와 유사한 맥락에서 일각에서는 언어 모델을 문법(grammar) 이라 비유하기도 한다. 단어간의 조합이 얼마나 적절한지, 특정 문장이 얼마나 자연스러운지를 알려주는 언어모델의 역할이 마치 문법의 기능과 유사하기 때문이다.

단어가 n개 주어진 상황이라면 언어모델은 n개 단어가 동시에 나타날 확률 , 즉 P(w1, w2… wn)을 반환한다.(단어 시퀀스에의 확률 할당)

이는 다음과 같이 사용할 수 있다.

a. 기계 번역(Machine Translation):

P(나는 버스를 탔다) > P(나는 버스를 태운다)

: 언어 모델은 두 문장을 비교하여 좌측의 문장의 확률이 더 높다고 판단합니다.

b. 오타 교정(Spell Correction)

선생님이 교실로 부리나케

P(달려갔다) > P(잘려갔다)

: 언어 모델은 두 문장을 비교하여 좌측의 문장의 확률이 더 높다고 판단합니다.

c. 음성 인식(Speech Recognition)

P(나는 메롱을 먹는다) < P(나는 메론을 먹는다)

: 언어 모델은 두 문장을 비교하여 우측의 문장의 확률이 더 높다고 판단합니다.

언어 모델은 위와 같이 확률을 통해 보다 적절한 문장을 판단한다.


정리

  • 언어를 모델링하고자 단어 시퀀스에 확률을 부여하는 모델로, 잘 학습된 언어모델은 어떤 시퀀스가 자연스러운지를 판단해낸다.

  • 인간이 쓰는 자연어는 레이블이 없는 비지도 학습. 이를 지도학습과 같이 학습하도록 여러 방법을 사용

  • 문제1) 비지도학습인 자연어를 어떻게 학습할 것인가?

    : 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 한다.

  • 문제2) 각 단어시퀀스에 확률은 어떻게 할당할 것인가?

    : 카운트 기반 접근방식 사용한다.


언어모델의 종류

  1. 통계 기반 언어 모델(SLM: Statistical Language Model)

    • 통계 기반 언어모델은 말뭉치에서 해당 단어 시퀀스가 얼마나 자주 등장하는지 의 빈도를 세어서 학습한다.
    • 문장은 문맥이라는 관계 내에서 단어들이 관계를 갖고 완성해낸 시퀀스이다. 따라서 특정 문장의 확률은 각 단어들의 이전 단어가 주어졌을때 다음 단어로 등장할 확률의 곱 으로 계산된다.

즉, “나는 사과를 먹었다” 라는 문장의 확률은 다음과 같이 표현할 수 있다. (문장의 확률을 구하기 위해 다음 단어에 대한 예측 확률을 모두 곱한다.)

P(나는 사과를 먹었다) = P(나는) * P(사과를|나는) * P(먹었다|나는, 사과를)

조건부 확률은 두개의 확률 P(A), P(B)에 대해 다음의 관계를 갖는다.

P(B|A)=P(A,B)/P(A)

P(A,B)=P(A)P(B|A)

더 많은 확률에 대해 일반화하면 다음과 같이 표현할 수 있다.

P(x1,x2,x3…xn)=P(x1)P(x2|x1)P(x3|x1,x2)…P(xn|x1…xn−1)

이를 조건부 확률의 연쇄법칙(chain rule) 이라고 한다.

  • 이때 특정 시퀀스로부터 다음 단어가 나올 확률은 카운트에 기반해 계산할 수 있다.

  1. N-gram 언어모델

    • n-gram 언어모델은 통계 기반 언어모델의 일종으로 전통적 SLM과 같이 카운트에 기반한 통계적 접근을 사용한다.

      : 이전의 n-1개의 단어를 보고 n번째 단어를 예측하는 방식

    • 전통적 SLM과 달리 이전에 등장한 모든 단어가 아닌 일부 단어만 고려 하는 방법을 사용한다.

    • 즉, n-gram에서 n은 n개의 단어, 혹은 n-gram에 기반한 언어모델을 의미한다. 말뭉치(corpus) 내 단어들을 n개씩 묶어서 그 빈도를 학습했다는 의미이다.

한국어 언어 모델 예시

문장 확률
진이는 이 책을 세 번 읽었다 0.47
이 책이 진이한테 세 번 읽혔다 0.23
세 번이 진이한테 이 책을 읽혔다 0.07

: 자연스러운 한국어 문장에 높은 확률값을 부여한다.

표현 빈도
영원히 104
기억될 29
최고의 3503
명작이다 298
영원히 기억될 7
기억될 최고의 1
최고의 명작이다 23
기억될 최고의 명작이다 17
영원히 기억될 최고의 명작이다 0
  • 전통적 SLM에서는 문법적으로 전혀 문제가 없는 ‘영원히 기억될 최고의 명작이다’ 라는 문장에 0의 확률을 부여하게 된다. => 이 말뭉치에 한번도 나타난 적 없기 때문.
  • n-gram모델을 통해 이 문제를 일부 해결할 수 있다.
  • 직전 n-1개 단어의 등장확률전체 단어 시퀀스 등장 확률근사 하는 것이다!

영원히 기억될 최고의‘ 시퀀스 뒤에 명작이다 라는 단어가 올 확률을 trigram으로 근사해보면 얼마일까?

P(명작이다 | 영원히, 기억될, 최고의) (유사) P(명작이다 | 기억될, 최고의)

= Freq(기억될, 최고의, 명작이다) / Freq(명작이다)

= 17 / 298

  • 위와 같이 단어를 슬라이딩 해가면서 수식을 풀어 생각한다면 전체 문장 ‘영원히 기억될 최고의 작품이다’를 trigram으로 계산하기 위한 수식은 다음과 같다.
  • 영원히 기억될 이 등장할 확률 * 영원히 기억될 뒤에 최고의 가 등장할 확률 * 기억될 최고의 뒤에 명작이다 가 등장할 확률

[ 카운트 기반 접근방식의 본질적 한계 ]

  • 희소문제 : Sparcity Problem

    • 여전히 희소문제는 존재한다. 코퍼스 내에 단어시퀀스가 없을(카운트하지 못할) 확률은 여전히 존재.

    • n의 선택은 trade-off : n의 크기를 키우면 예측의 정확도는 높아지지만, 코퍼스에서 해당 n개의 시퀀스를 카운트할 확률은 낮아짐(희소문제 증가), 모델사이즈 커짐.

      반대로 n을 작게 선택하면 훈련 코퍼스에서 카운트는 잘 되겠지만 근사의 정확도는 현실의 확률분포와 멀어짐.

      => n은 최대 5를 넘어서는 안된다고 권장됨.

    • NNLM(Neural Net Language Model)을 통해 언어 모델 또한 단어의 유사도를 학습 할 수 있도록 설계.

      • 훈련 코퍼스에 없는 단어 시퀀스도 예측을 통해 유사한 단어 시퀀스를 참고하여 확률을 계산해낸다.
      • 워드 임베딩의 아이디어이기도 한다.
      • 단어를 continuous한 밀집벡터의 형태로 표현하여 희소문제를 해결(?)
  • long-term dependency : 정해진 개수의 전 토큰만을 보기 때문에 볼 수 있는 시퀀스의 범위가 한정됨.

    • 이는 모델의 정확도와 연관

    An adorable little boy is spreading ( ? )

    위와 같은 문장이 있을 때 정답은 insults, smile 둘 중 하나라고 해보자. 문맥상 “작고 사랑스러운 아이가 (미소)를 퍼뜨렸다” 가 적절함을 알 수 있다.

    하지만 만약 작고 사랑스러운 이라는 밑줄 친 부분을 예측에 고려하지 않는다면 엉뚱한 답 insults를 고를 수 있다.

  1. 신경망 기반 언어모델

    • 카운트 기반 접근은 그 방식상 본질적인 한계를 갖는다.
    • 이를 극복하기 위해 다양한 방법 시도되었지만(백오프, 스무딩) 본질적인 n-gram 언어모델(고정된 개수의 단어만을 입력으로 받아야한다)에 대한 취약점은 해결하지 못함.

RNNLM(Recurrent Neural Network Language Model)

예문 what will the fat cat sit on 의 RNNLM 학습/사용 과정을 보자.

1) 훈련이 끝난 모델을 사용할 경우

  • RNNLM은 예측 과정에서 이전 시점의 출력을 현재 시점의 입력으로 한다.
  • RNNLM은 what을 입력받으면, will을 예`하고 이 will은 다음 시점의 입력이 되어 the를 예측한다. 이것이 반복되어 네번째 시점의 cat은 앞서 나온 what, will, the, fat이라는 시퀀스로 인해 결정된 단어가 된다.

2) 모델을 훈련시키는 경우

  • 위의 샘플에 대해 what will the fat cat sit 시퀀스를 모델의 입력으로 넣으면, will the fat cat sit on를 예측하도록 훈련한다.
  • 이때 will, the, fat, cat, sit, on각 시점의 레이블(yt)가 된다.
  • 이러한 RNN 훈련 기법을 교사 강요(teacher forcing) 라고 한다.

교사 강요(teacher forcing) : 테스트(실제 모델 사용) 과정에서 t 시점의 출력이 t+1 시점의 입력으로 사용되는 RNN 모델을 훈련시킬 때 사용하는 훈련 기법입니다.

훈련할 때 교사 강요를 사용할 경우, 모델이 t 시점에서 예측한 값t+1 시점에 입력으로 사용하지 않고, t 시점의 레이블. 즉, 실제 알고있는 정답을 t+1 시점의 입력으로 사용합니다.

RNNLM의 학습 구조

  • 임베딩층 : et=lookup(xt)
  • 은닉층 : ht=tanh(Wxet+Whht−1+b)
  • 출력층 : yt^=softmax(Wyht+b)
  • 사용되는 손실함수 : cross-entropy
  • 학습 과정에서 학습되는 가중치 행렬 : E(임베딩 행렬), Wx, Wh, Wy

2-3. 어떤 단어가 같이 쓰였는가

분포가정

: 자연어 처리에서 분포란 특정 범위(=윈도우)내에 동시에 등장하는 단어 또는 문맥의 집합 을 가리킨다.

어떤 단어 쌍이 비슷한 문맥 환경에서 자주 등장한다면 그 의미 또한 유사할 것이라는게 분포가정의 전제이다.

즉, 자연어를 사용하는 화자들이 특정 단어를 실제 어떻게 사용하는지 관찰 함으로서 단어의 의미를 밝힐 수 있다는 의미.

댓글