Tensorflow 2 NLP(자연어처리)/사전학습 모델

[5-3] 시퀀스-투-시퀀스(Sequence-to-Sequence)란?

Suhd 2021. 11. 13. 12:36

Transformer(트랜스포머)의 Attention(어텐션)을 이해하기 위해서 알아야 하는 구조이다.

seq2seq 모델은 함수와 같은 역할을 한다.

입력이 들어오면 출력이 나오고

, 우리는 주어진 입력에 대해 우리가 원하는 출력이 되도록 교사학습(Supervied-learning)을 하면 된다.

함수 내 구조는 어떻게 되어있을까?

1. 임베딩된 각 단어 'I' , 'am', 'hungry' 를 LSTM(RNN,GRU)에 각각 입력으로 넣어준다.

입력 LSTM 층 '인코더' 라고 한다.

2. 인코더 LSTM 셀의 마지막 시점의 은닉 상태 출력 LSTM 층 '디코더'에 넘겨 주는데

그 넘겨주는 벡터를 'context vector' 라고 한다. (앞의 문장 정보(문맥)를 담았다)

3. 디코더에서 순서에 따른 교사학습(supervised learning)을 시킨다. 물론 출력 활성함수는 softmax이다.

각 softmax의 출력 벡터(3차원) 중 가장 높은 원소의 값이 해당 단어에 해당하는 on-hot 벡터와 같도록 학습시키면 될 것이다.

하지만, 이 방법의 문제점은 무엇일까?

1. Vanishing Gradient 발생 (GD를 쓸 것이므로)

2. 한 문장을 하나의 context vector로 만드는 과정에 정보손실이 일어난다.

그래서 이 문제점을 해결하기 위해 'Attention Mechanism'이 생겼고, 이는 'Transformer'의 기반을 이룬다.