Simple Chatbot 만들기 질문입니다.
288
작성한 질문수 3
안녕하세요,
'Simple Chatbot 만들기' 관련하여 진행하다가 문의드립니다.
새롭게 최신 학습용 zip 파일을 다운받아서, 콜랩에서 해당 실습 파일 올리고,
바로 전체 셀 실행 테스트 해도,
질문에 대한 답변이, 계속 같은 답변으로만 나오고 있는 증상입니다.
sentencepiece 같은 모듈 설치시, 시간이 지나, 버전 차이로 인한 문제일까요?
이상입니다.


답변 1
0
좋은 질문 감사합니다.
저도 같은 현상이 나오네요. 아마도 뭔지 몰라도 version 차이로 제가 교재를 만들 때와 다르게 결과가 나오는 것 같습니다. 그러나 이 교재의 목적은 language model 이 어떤 원리로 작동하는지를 보여주는 것이고 key point는 chatbot 은 생각이 없고 단순히 가장 큰 확률의 단어를 나열하는 것 뿐이라는 것을 이해하는 것이고 이 원리가 Chat-GPT 같은 첨단 모델에도 그대로 적용되기 때문에 초거대 언어 모델의 "환각 현상"이 발생하는 것 입니다.
이 문제는 Greedy Decoding을 사용했기 때문에 이런 현상이 발생합니다. Greedy Decoding에서는 각 시점에서 가장 확률이 높은 단어를 선택하므로 매번 동일한 출력을 얻게 됩니다.
더 다양한 답변을 얻기 위해 Stochastic Sampling 또는 Beam Search와 같은 기법을 사용할 수 있습니다. 아래 코드는 Stochastic Sampling을 사용해 수정한 것 입니다.
Stochastic Sampling에서는 출력 확률 분포에서 단어를 샘플링하여 다양한 답변을 생성합니다. 이 방법은 각 단계에서 동일한 확률 분포를 가진 다른 단어를 선택할 수 있으므로 다양한 답변을 얻을 수 있습니다.
수정 내용을 github 에 반영하였습니다. 감사합니다.
def decode_sequence(input_seq, temperature=1.0):
# 입력된 질문을 encoder 에 입력하여 state vector 생성
states_value = encoder_model.predict(input_seq)
# size 1 짜리 빈 target sequence 생성
target_seq = np.zeros((1, 1))
# target sequence 의 첫번째 character 를 <s> 로 assign -> 1
target_seq[0, 0] = 1
eos = 2 #</s>
# 답변 생성 시작
output_ids = []
for in range(maxlen_A):
output_tokens, h, c = decoder_model.predict([target_seq] + states_value)
# 확률 분포에 따라 단어 샘플링
output_probs = output_tokens[0, 0, :]
idx = np.random.choice(len(output_probs), p=output_probs)
if eos == idx: # End sentence of EOS
break
if idx > 0: # idx 0 은 zero padding 이므로 skip
output_ids.append(int(idx))
# 생성된 word 를 decoder 의 다음 input 으로 사용
target_seq[0, 0] = idx
# Update states
states_value = [h, c]
return output_ids
트랜스포머 FeedForward 관련 질문
0
71
2
파라미터갯수에대한질문(030_IMDB_movie_reviews)
0
61
1
Transformer 번역기 분석 - Part1 따라치기 질문
0
70
2
Encoder-Decoder 질문 드립니다.
0
73
2
model 코드 부분을 따라하다가 전 값이 이상해서요
0
83
1
서적 추천
0
77
1
NLP와 LLM의 차이점
0
558
2
encoder-decoder model 질문입니다.
1
74
1
구글번역기에 대해서 궁금한점이 있습니다.
0
124
2
로드맵에대해서...
0
121
2
Bag of Word (BOW)와TF-IDF시 대명사인 I의행방
0
97
2
강의 교재 최신화 요청
0
145
4
self-attention에서 Wq, Wk, Wv weight matrix 학습과정 질문드립니다.
0
190
3
코랩 환경 설정할 때 질문이 있습니다.
0
248
1
transformer 훈련 마친 모델 공유 가능할까요?
0
217
2
130_Transformer.ipynb transformer.summary() 에러
0
183
2
강사님 궁금한게 있어 문의 드립니다.
0
129
1
강사님 Tensorflow 실습코드 중 궁금한 점이 있습니다.
0
125
1
패딩과 관련한 질문 드립니다.
0
172
1
Encoder Decoder 부터 Simple Chatbot까지 이상답변
0
219
1
seq2seq 모델
0
327
1
강의 내용중 질문있습니다.
0
198
1
Transformer 번역기 부분에 대해 질문 있습니다.
0
213
1
320_Custom_Sentiment_Analysis_navermovie.ipynb 실행 시 오류 납니다.
0
316
2





