강의

멘토링

커뮤니티

Inflearn Community Q&A

jcy40236396's profile image
jcy40236396

asked

Natural Language Processing (NLP) with Deep Learning (From Basics to ChatGPT/Generative Models)

Practice - Building a Simple Chatbot

encoder-decoder model 질문입니다.

Written on

·

54

1

안녕하세요 교수님.
챗봇 부분 공부하다가 질문이 생겨서 남깁니다.

기존 teacher forcing 학습 방식을 위해 encoder와 decoder를 포함한 모델을 따로 만들고, 이후에 decoder 모델을 다시 만든 다는 것으로 이해했습니다.

하지만, 맨 마지막 모델인 decoder에서 output에 decoder context vector도(h, c) 같이 포함되는지 궁금합니다. (왜 Dense layer를 통과한 output과 context vector를 합치는지 이해가 잘 안갑니다.)

감사합니다.

 

decoder_input_h = Input(shape=(LATENT_DIMS, ), name='DECODER_INPUT_H') # hidden
decoder_input_c = Input(shape=(LATENT_DIMS, ), name='DECODER_INPUT_C') # cell
decoder_input_s = Input(shape=(1, ), name='DECODER_INPUT_S') # single

# context_vector(encoding에서 나온 값)
context_vector = [decoder_input_h, decoder_input_c]

x = decoder_embedding_layer(decoder_input_s)

x, h, c = decoder_lstm_layer(x, initial_state=context_vector)

decoder_output = decoder_dense_layer(x)

decoder_context_vector = [h, c]

final_decoder_model = Model(inputs=[decoder_input_s, context_vector], outputs=[decoder_output, decoder_context_vector])

final_decoder_model.summary()
딥러닝tensorflowNLP

Answer 1

1

YoungJea Oh님의 프로필 이미지
YoungJea Oh
Instructor

decoder의 출력에 context vector (h, c)를 포함하는 이유는,
추론 단계에서 다음 시점의 LSTM 상태로 전달하기 위해서입니다.

Dense layer는 예측 토큰을 생성하는 데 사용되고, (h, c)는 다음 시점의 decoder 상태 유지를 위한 것이므로 두 출력을 "합치는" 게 아니라 목적이 달라서 함께 출력하는 것입니다.

왜냐하면 LSTM 은 장, 단기 기억 장소 두가지를 초기값으로 필요로 하기 때문입니다.

좋은 질문 감사합니다.

jcy4023님의 프로필 이미지
jcy4023
Questioner

감사합니다.

 

jcy40236396's profile image
jcy40236396

asked

Ask a question