본문 바로가기

ML & DL

[NLP] Language Model, Seq2Seq, Attention

Stanford Univ. cs224n(2019) 강의를 듣고 정리한 내용입니다.

Language Model(LM)

현재까지 주어진 문장의 다음 단어를 예측하는 모델, eg) 인터넷 검색 자동완성. 수식으로 보면 다음과 같다.

$P(x^{(t+1)} | x^{(t)}, . . , x^{(1)})$

이 조건부 확률을 marginal들의 곱으로 표현해 joint로 나타내면 아래와 같이 전체 sequence의 확률을 표현할 수 있다.

$P(x^{(1)}, .. , x^{(T)}) = \prod_{t=1}^{T}P(x^{(t)}|x^{(t-1)}, .. ,x^{(1)})$

즉, 어떤 sequence의 확률을 LM의 곱으로 표현할 수 있다. 즉 LM은 특정 sequence에 확률을 할당하므로, 이를 NLP에 적용해보면 가장 자연스러운 문장(sequence)을 찾아내는 모델이다. 딥러닝 이전에는 N-gram이 많이 쓰였고, 지금은 RNN, LSTM을 거쳐 Bert, GPT 등이 쓰인다. 

 

Seq2Seq

backpropagation of seq2seq

Seq2Seq는 RNN 구조 두 개를 각각 인코더 디코더로 만들어 붙인 모델이다. 인코더는 입력 문장의 context vector를 만들고 이를 디코더에 condition으로 넘겨준다. 디코더는 타겟을 인풋으로 latent vector와 함께 다음 step 타겟을 맞춘다. 따라서 이를 Conditional Language Model 이라고 한다. 디코더의 t-1 시점 예측값을 t 시점 입력으로 하는데, 학습과정에서 출력이 잘못되면 뒤로 줄줄이 입력에 bais가 생기므로 모델이 제대로 학습되지 않는다. 따라서 teacher forcing을 통해 t-1 시점 예측값에 관계없이 타깃 값을 t 시점 입력으로 한다.

 

Beam search decoding

backtracking beam search decoding 

Inference 과정에서는 타겟값을 몰라 학습과정처럼 teacher forcing을 사용할 수 없으므로, 디코딩 과정을 추가해 결과를 보정해준다. beam search decoding은 점수가 큰 방향으로 beam size 만큼 예측 단어 node를 확장하고 그중 best path를 backtrack 해 결과를 낸다. 점수는 다음과 같이 해당 단어의 조건부 확률을 normalize 한 값을 사용한다.

 $\frac{1}{t}\sum_{t}^{i=1}logP_{LM}(y_i|y_1,...,y_{i-1},x)$

 

Attention

seq-to-seq에서 사용되는 어텐션에 대해 정리.

attention

Attention은 이름 그대로 특정 query 벡터와 유사한(상관이 높은) 곳에 더 집중해서 입력 벡터의 가중합으로 embedding vector(위 그림 빨간색)를 만들겠다는 것.

chat bot

위 그림 디코더에서 '과'라는 아웃풋을 위해 '사'를 입력할 때, '사' 벡터와 인코더의 모든 입력 벡터를 내적 해 attention score를 구하고 softmax를 통과시켜 확률로 변환한다. 그러면 '나', '는', '사', '과', '가', '좋', '아'에 각각 확률이 할당되고 그만큼 가중합을 해서 embedding vector를 구하고 이를 '사'와 함께 디코딩에 입력 벡터로 준다. 즉 attetion은 다음 세 과정을 포함한다.

1. Attention score를 계산한다. (scalar)

2. Score에 softmax를 취해 attention distribution을 만든다.

3. 2번 분포로 각 입력에 확률을 할당한 가중합 -> attetion output(embedding vector)

Attention은 RNN 계열 모델이 인풋 length가 늘어날수록 겪는 vanishing gradient 문제를 해결하고 인풋 sequence를 원하는 크기의 벡터로 효과적으로 임베딩 한다. 또한 attention matrix를 통해 기계번역에서의 soft alignment 역할을 할 수 있다. 

Attention Matrix