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

Seongc좋은ᅵᅵheol Kim님의 프로필 이미지

작성한 질문수

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

실습 - Transformer 번역기 분석 - Part3

강사님 궁금한게 있어 문의 드립니다.

작성

·

31

0

강사님 seq2seq 모델의 경우 학습할 때와 추론할 때 서로 다른 모델을 정의하여 사용하였습니다. 하지만 트랜스포머는 그렇지 않고 추론할 때도 같은 모델을 사용하고 있습니다.

두 개의 모델 모두 교사강요학습을 사용하고 있고 인코더/디코더 구조를 가지고 있는데 왜 두개가 이렇게 차이가 있는 것인지요?

답변 1

0

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

이 차이는 두 모델의 기본 설계와 동작 방식에서 비롯됩니다.

Seq2Seq 모델의 학습단계 디코더 입력 : 인코더의 입력 + 디코더의 입력

model_teacher_forcing = Model([encoder_inputs_, decoder_inputs_], decoder_outputs)

Seq2Seq 모델의 추론용 디코더 입력 : 디코더의 입력 + 디코더의 state

decoder_model = Model(

[decoder_inputs_single] + decoder_states_inputs, # 디코더 입력과 상태를 입력으로 받음

[decoder_outputs] + decoder_states ) # 디코더 출력과 상태를 출력으로 반환
입력이 달라지므로 모델을 달리 할 수 밖에 없습니다. 물론 학습한 가중치는 교사 학습에서 만들어진 가중치를 그대로 사용하므로 추론 단계의 디코더는 새로 만드는 것이 아니라 입력 구조만 변경해서 그냥 사용하는 것입니다.

트랜스포머 모델도 Seq2Seq와 마찬가지로 학습 시 디코더에 실제 타겟 시퀀스를 입력으로 사용합니다. 그러나 트랜스포머는 학습과 추론 시 같은 네트워크 구조를 사용할 수 있으므로 별도의 디코더 모델을 만들 필요가 없습니다.
결론적으로 이 것은 RNN 과 Transformer 의 구조 차이에서 오는 것이므로 더 자세한 내용은 080_language_translation_KerasAPI_teacherForcing 프로그램 소스와 130_transformer 프로그램 소스를 비교해 보시기 바랍니다. 단순히 RNN 과 Transformer 의 구조 차이 외에 더 특별한 의미가 존재하는 것은 아닙니다.
좋은 질문 감사합니다.