RNN ~ Transformer - (2) Seq2Seq, Attention

윤준영·2025년 6월 20일

NLP

목록 보기
2/3

1. Seq2Seq

Seq2Seq (Sequence-to-Sequence)는 인코더와 디코더라는 2 개의 모듈로 구성되어 있다. 인코더는 입력 시퀀스를 압축해서 하나의 벡터로 만들고, 이를 context vector라고 부른다. 디코더는 이 context vector를 초기 hidden state로 설정해서 값을 출력하게 된다.

인코더 내부는 RNN계열 (vanilla, LSTM, GRU)로 구성되어 있다. 차이점은 RNN은 각 입력 시퀀스마다 hidden state를 통해 값을 출력했다면, Seq2Seq의 인코더는 모든 입력 시퀀스를 통해 하나의 hidden state를 산출해낸다. 여기서 이 하나의 hidden state가 context vector인 것이다.
기존의 RNN은 시퀀스가 길어질수록 앞 쪽 시점의 정보를 잘 반영하지 못했다. 하지만 Seq2Seq는 입력 시퀀스의 모든 정보를 압축해서 반영했다고 할 수 있다.
디코더는 이 context vector를 첫 번째 hidden state로 활용하여 출력값을 예측한다. RNN은 출력값과 hidden state를 출력하는데, 이 정보를 이용해서 다음 시퀀스를 예측하는데 사용한다.

2. Seq2Seq의 한계

Seq2Seq는 입력 시퀀스의 모든 정보를 고정된 크기의 context vector에 encoding을 하려다 보니 information bottleneck 문제가 발생한다.

3. Seq2Seq with Attention

Attention은 이러한 bottlenect 문제를 해결하기 위해 제안됐다.
핵심 아이디어는 각 시점마다 디코더에서 입력 시퀀스의 특정 부분에 초점을 맞출 수 있도록 인코더로 직접 연결하는 것이다.
이를 위해 디코더의 한 시점에서의 벡터 st\bold{s_t}와 인코더의 모든 시점에서의 벡터 [h1,h2,,hN][\bold{h_1, h_2}, \dots, \bold{h_N}] 간의 dot-product를 취해 attention score ete^t를 계산하고, softmax를 취해 attention distribution αt\alpha^t를 구해서 어떤 시점에 집중할 지 알아낸다. Attention distribution을 기반으로 인코더의 모든 시점에서의 벡터 [h1,h2,,hN][\bold{h_1, h_2}, \dots, \bold{h_N}]에 weighted sum을 적용하여 최종 attention output at\bold{a^t}를 얻는다.
Attention output은 attention 값이 높은 시퀀스의 정보를 주로 담는다. Attention output과 디코더의 hidden state를 concatenate 하여 일반적인 Seq2Seq처럼 처리하여 출력 시퀀스를 계산한다.

이 과정에 대한 그림과 수식은 아래와 같다.

et=[stTh1,stTh2,,stThN]e^t = [\bold{s_t}^T\bold{h_1}, \bold{s_t}^T\bold{h_2},\dots,\bold{s_t}^T\bold{h_N}]
αt=Softmax(et)\alpha^t=Softmax(e^t)
at=i=1Nαithi\bold{a^t}=\sum_{i=1}^{N}{\alpha^t_ih_i}

3.1. Why dot-product?

두 벡터 v,w\bold{v}, \bold{w}가 있다 해보자. 내적은 수식으로 다음과 같이 표현할 수 있다.

vw=vwcosθ\bold{v}\cdot\bold{w}=||\bold{v}||||\bold{w}||\cos{\theta}

여기서 θ\theta는 두 벡터 사이의 사잇각이다. 이 식을 cosθ\cos{\theta}에 대해 정리하면 다음과 같다.

cosθ=vwvw\cos{\theta}=\frac{\bold{v}\cdot\bold{w}}{||\bold{v}||||\bold{w}||}

여기서 cos\cos에 대한 특성을 생각해보면, 사잇각이 작아질수록 cosθ\cos{\theta}의 값은 1에 가까워지고, 사잇각이 커질수록 cosθ\cos{\theta}의 값은 -1에 가까워진다.

즉, 두 벡터의 내적값을 토대로 두 벡터의 유사도를 판단할 수 있게 된다.

profile
AMC AI research engineer

0개의 댓글