인프런 커뮤니티 질문&답변

David님의 프로필 이미지
David

작성한 질문수

딥러닝을 활용한 자연어 처리 (NLP) 과정 (기초부터 ChatGPT/생성 모델까지)

Decoder Overview

Decoder 의 Output Probablilities 계산하는 부분 RNN과 관련하여 질문드립니다.

작성

·

196

0

RNN Decoder의 경우, time step 별로 해당 input 단어에 대한 vocab 사전의 확률분포가 나오면, argmax 하거나, beam searching 하여 output을 최종 산출한다는 것으로 이해했었습니다.

강의에서 트랜스포머 Decoder의 경우도 개념은 똑같다고 하셨는데, 트랜스포머도 time step 이 있는건가요?

예를들어,

'I love you' 를 '난 널 사랑해' 로 번역할 때,

decoder에 attention계산과정 및 Feed Forward 계산과정을 거쳐 나온 최종 attetion vector (seq_len x d model 차원) 가 첫번째 단어 '난' 부터 시작해서 greedy 하게, 혹은 beam search 전략 통하여 확률분포를 구한다고 보면 될까요?

답변 1

1

YoungJea Oh님의 프로필 이미지
YoungJea Oh
지식공유자

트랜스포머 모델은 원래는 시퀀스의 전체를 한 번에 처리하는 모델이므로 기술적으로는 'time-step'이라는 개념이 없습니다. 즉, RNN처럼 순차적으로 정보를 처리하지 않고, 입력 시퀀스의 모든 단어를 동시에 처리합니다. 이는 트랜스포머 모델이 모든 입력 단어들 사이의 관계를 동시에 학습할 수 있게 하므로, 복잡한 문맥적 관계를 파악하는데 유리합니다.

그러나 이러한 방식은 트레이닝 단계에서는 잘 작동하지만, 테스트(또는 추론) 단계에서는 문제가 될 수 있습니다. 왜냐하면 테스트 단계에서는 아직 생성되지 않은 미래의 단어들을 참조할 수 없기 때문입니다. 이 문제를 해결하기 위해, 테스트 단계에서는 디코더가 이전에 생성된 단어들만 참조하도록 'auto-regressive' 방식을 사용합니다. 즉, 첫 번째 단어를 생성한 후, 이를 디코더의 입력으로 다시 사용하여 두 번째 단어를 생성하고, 이 과정을 반복합니다. 이 방식은 실제로는 'time-step'이 있는 것과 유사하게 작동합니다.

따라서 트랜스포머의 디코더에서도 RNN과 유사하게, 각 단계에서 vocab 사전에 대한 확률 분포가 출력되고, 이를 기반으로 최선의 단어(예: argmax나 beam search를 사용)를 선택합니다. 디코더는 이 단어를 다음 단계의 입력으로 사용하고, 이 과정을 시퀀스의 끝에 도달할 때까지 반복합니다. 이렇게 생성된 단어 시퀀스가 최종 번역 결과입니다.

좋은 질문 감사합니다.

David님의 프로필 이미지
David

작성한 질문수

질문하기