문제 발생
한글 대화문을 보고 요약하는 모델을 pre training시키고 있는데 계속 데이터셋에 토큰들이 안지워져서 성능이 잘 안나오는 이슈가 있었다.
모델의 예측값(PRED)과 실제 정답값(GOLD)을 비교하는 과정에서 <pad>나 </s> 같은 특수 토큰들이 제거되지 않아 성능이 저하되는 문제가 발생했다.
대화문 데이터에는 #Person1#, #Person2#와 같은 스페셜 토큰이 포함되어 있었는데 이 토큰들은 디코딩 과정에서도 유지되어야 했다. 이를 확인하기 위해 다음과 같이 skip_special_tokens=False 설정으로 디코딩 결과를 확인했다:
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=False)
print('>>>')
print(decoded_preds[:5]) # 디코딩된 예측 결과 확인
decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=False)
이 설정에서는 <pad>나 </s> 같은 특수 토큰뿐 아니라 스페셜 토큰도 디코딩 결과에 유지되었다. 이를 통해 특수 토큰이 제대로 제거되지 않는 문제를 확인할 수 있었다.
그런데 모델 학습을 마치고 예측 결과를 확인할 때도 <pad>, </s> 같은 특수 토큰들이 계속 디코딩 결과에 남아 있어서 대체 몬가,,,,, remove token에 값 넣어줘도 안사라져서 뭐가 문제야하면서 몇시간 버렸다.
그래서 대체 뭐야뭐야,, 하다가 팀원분이 알려주셔서 겨우 찾았다.
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=True)
print('>>>')
print(decoded_preds[:5]) # 디코딩된 예측 결과 확인
decoded_labels = tokenizer.batch_decode(labels, skip_special_tokens=True)
skip_special_tokens 여기를 true로 바꿔줘야 했다.
skip_special_tokens 동작 방식
skip_special_tokens 동작 방식은 다음과 같다.
특수 토큰 제거
- 토크나이저가 이미 정의한 특수 토큰(pad_token, eos_token, bos_token)을 자동으로 제거.
- 예: <pad>, </s>, <s> 등이 디코딩된 결과에서 사라짐.
스페셜 토큰 유지
- 추가된 스페셜 토큰("#Person1#", "#SSN#" 등)은 제거되지 않고 유지.
기존에 사용한 skip_special_tokens=False는 디버깅 시 주로 사용되고(마치 내가 '스페셜 토큰이 잘 안사라졌는지 확인해볼까?' 하는 과정) 모든 토큰(특수 토큰 포함)을 확인할 때 유용하다.
예를 들어, 모델이 <pad>나 </s> 같은 토큰을 잘못 예측한 경우 이를 확인하고 수정할 수 있다.
결론
디버깅 목적일 경우
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=False)
print('디코딩된 결과:', decoded_preds[:5])
실제 훈련 및 평가 목적일 경우
decoded_preds = tokenizer.batch_decode(predictions, skip_special_tokens=True)
이부분을 캐치 못해서 몇시간을 버린,,,,,,,,,,,,,,,사람,,,,,,,,,,,,ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
'Deep Learning' 카테고리의 다른 글
문서 요약 모델 평가지표: ROUGE 1, ROUGE 2, ROUGE-L, ROUGE-S, ROUGE-W 완벽 이해하기 (1) | 2024.11.18 |
---|---|
텍스트 데이터 전처리 방법 (토큰화, 정제, 정규화, Stemming, Lemmatization 등) (2) | 2024.11.12 |
딥러닝 모델 구현에서 PyTorch의 쓰임 (2) | 2024.10.28 |
[Pytorch] tensor shape 변경에서 -1과 1 쓰임 그리고 슬라이싱 (1) | 2024.10.23 |
손실 함수, 활성화 함수, 최적화 함수 등 순서, 쓰임, 역할 (1) | 2024.10.23 |