서론
이번 포스팅의 주제는 목표에 다가간다는 느낌보다는 재미에 가깝게 구성되었다.
재밌고 의미 있는 결과를 얻는 것이 목표임으로 자주 나오는 대화 주제를 이용하여 결과를 관찰했다.
본론
이전 포스팅에서 언급했듯이 학습에 필요한 데이터를 전처리 할때 사진, 동영상, 삭제된 게시글 등.. 을 토큰화 시켜서 입력해봤다.
실제로 생성된 결과에서도 <delete> 토큰이 있는걸 볼 수 있다.
- 실제로 아마 "응 죽어도 못해~~" 썼다 지웠거나 뭐 그런 느낌쓰 일 거다.
- 실제로 이운호 군은 "지금은 친구들이랑 노는 게 더 좋아..." 같은 느낌이었는데 실제로 그렇게 나왔다.
- 운호 재밌겠다...(?) 왜 나왔는지 모르겠다. 아직 학습이 부족한 모습이 보인다.
문제 피드백
- "왜 지금 안 된다" 아마도 "왜" 쓰고 조금 뒤에 "지금은 안 된다"의 느낌일 것이다 전처리에서 붙여줬기 때문에 말이 붙은 것 같다.
- 이런 부분은 엔터 부분도 토큰처럼 넣어줘야 하나 생각했고, 토큰처럼 넣었다가 괜히 모델이 복잡해지지 않을까 생각했다. 일단킵
- 형식 학습이 안 되는 부분이 있었다. EOS토큰임 </s>가 나오지 않고 <pad> 토큰만 반복되다 끝난다던지.
- 와 그거 재밌겠는데 <pad> <pad> <pad> <pad> <pad>... 이런 식이다.
- 기존의 kogpt를 학습하는데 쓰인 데이터와 다른 형식일 확률? 매우 높다, 심지어 카톡 채팅은 맞춤법이나 말투도 일반적이지 않으니 특성 학습하기도 쉽지 않다. 급하게 2 epoch 학습한 게 너무 적었던 것 같다.
- 5 epoch까지 한번 돌려봐야겠다.
실행
- 사진, 삭제 등의 토큰을 학습 데이터셋에서 제거했다.
- 토큰 반복에 대한 처리를 추가했다.
- 5 epoch까지 증가시켰다.
- checkpoint에서 다시 이어서 학습시키는 로직을 추가했다.
두 번째, 세 번째 학습에서는 아무래도 달라진 입력 형식에 대한 학습이 필요했다. 그렇기에 잠깐 loss가 뜨는 현상이 생겼다.
이경우에 gradient exploding을 방지하기 위해 gradient clipping을 했다. 이후 다시 loss의 감소세를 보였다.
결과
이제 형식적인 틀은 어느 정도 학습을 잘 진행하는 것 같다.
뒷부분이 반복되는 문제는 거의 없어졌다. 그리고 문맥에서 완전히 벗어나는 말도 거의 하지 않는다.
또한 소름 돋게 해당 발화자의 말버릇이나 느낌을 잘 구현해 냈다. (자주 쓰는 욕이라던지, 언급하는 내용이라던지)
아 진짜 웃기고 잘된 게 많은데 너무 개인적인 이야기들이 많이 나와 못 올려서 아쉽다.
하지만 진짜 웃긴 것들 많이 나왔다. 생각보다 정말 소름 돋게 잘 나왔다. ㅋㅋㅋㅋㄱㅋㅋㅋㅋㅋㅋㅋㅋ
피드백
작성 중
- 인물 바뀜 문제
학습데이터에 있어서 누구 하나의 대화 비율이 높으면 가끔 대화스타일이 비슷해지려는 경향이 있는것 같다.
학습시킨 인물의 수가 너무 적기 때문에 데이터 불균형에 민감한 것 같다
워낙 개연성없이 대화하는(각자 할말만 함.. ㅋㅋㅋ) 채팅방의 로그를 사용한 탓도 있어보인다.
하지만 각 인물들의 대화 스타일과 말버릇은 확실하게 남겼다.
- 질의자와 발화자 별의 갭의 문제
위 모델과 같은 경우에는 A가 질문했을때와 B가 질문했을때의 C의 대답의 갭의차이가 많이 난다는 문제가 있습니다 이는 발화 태깅을 인물로 하지않고 전에 언급했다 싶이 성격으로 바꾸면 해결될 것 이라고 생각한다. 위의 케이스같은 경우에는 A나 B각각에게 일관적으로 보이는 C의 성격을 각각 태그를 만들 면어떨까 생각해 볼 수 있을 것 같다.
이후 계획
지금까지는 find tuning 한 transformer 학습이 어떻게, 얼마나 잘 진행이 되는지를 테스트해보기 위함이었다. 그렇기에 비교적 작은 양의 데이터를 이용하여 학습을 시켰었다. 이후 모델에서도 위와 비슷한 방법으로 모델과 데이터 구성을 바꿔 성능을 확인해 볼 생각이다.
'2. Development > 한국어 오픈도메인 챗봇' 카테고리의 다른 글
[한국어 오픈도메인 챗봇] 4. Chat GPT 간단 체험 (0) | 2023.03.28 |
---|---|
[한국어 오픈도메인 챗봇] 2. 카카오톡로그 데이터셋 활용과 가공 (0) | 2021.07.31 |
[한국어 오픈도메인 챗봇] 1. 기초 지식 공부 (0) | 2021.07.30 |
[한국어 오픈도메인 챗봇] 0. 사람같은 챗봇 만들기 (0) | 2021.06.29 |