Notice
Recent Posts
Recent Comments
Link
«   2025/10   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

언어 전공자의 NLP 로그

Chatbot의 장기 기억력을 높이는 방법 본문

논문 읽기

Chatbot의 장기 기억력을 높이는 방법

JohnnyNLP 2023. 8. 28. 11:39

Beyond Goldfish Memory: Long-Term Open-Domain Conversation

  • 이전 대화를 요약하고 불러올 수 있는 기법을 도입했더니 SOTA를 기록한 표준 인코더-디코더 구조보다 뛰어난 성능을 보였다.
  • SOTA 모델이라 할지라도 (당시 Meena, BlenderBot) 128 토큰 수 제한으로 장기 기억 능력이 부족
  • Multi-Session Chat (MSC) -> 5 세션에 걸친 사람과 사람 사이 대화로, 14번의 발화로 구성되며, 세션마다 며칠/몇 시간 (1-7시간 혹은 1-7일)의 텀이 주어진다. 세션이 진행됨에 따라 화자들은 앞선 세션에서 다뤘던 내용들을 공유하며 대화를 이어간다.
  • 이전 대화 내역을 raw한 형태로 저장하는 방식에는 2가지 단점이 있다.
    • 맥락 정보가 주어지지 않는다.
    • 응답 생성 과정에서 이전 내역을 읽고, 회수하고, 합치는 작업이 모델에 과한 부담을 준다.
  • 따라서 연관 정보만 요약하고 이를 저장함으로써 문제를 해결한다. 이는 두 단계로 이루어진다.
    • 인코더-디코더 요약기가 대화 내역을 인풋으로 받으면, 연관된 정보만을 직전 대화 턴에서 뽑아내고, 새로운 정보가 없다면 'no-summary' 추출한다. 생성된 요약 정보는 장기 기억에 추가된다.
    • 이제 생성기는 대화 맥락과 장기 기억에 접근할 수 있는 기억 증강이 이루어진 상태로 다음 응답을 생성한다.
  • 요약을 위한 인코더/디코더 기반의 모델을 학습해야 한다.
  • 위에서 언급한 MSC에 요약 기능을 접목시켰더니 perplexity가 향상되었다.

 

Prompted LLMs as Chatbot Modules for Long Open-domain Conversation

  • 프롬프트 엔지니어링을 거친 생성 모델에 최근 대화 내역과 메모리 프로세서에서 제공한 기억을 함께 제공하여 open-domain 상황에서 대화의 일관성을 높인다.
  • Few-shot 기반 summarizer로 이전 대화 내용을 요약하여 메모리 풀에 넣는 과정이 계속해서 반복되면서 챗봇의 기억을 형성한다.

 

MemoryGPT is like ChatGPT with long-term memory

:https://the-decoder.com/memorygpt-is-like-chatgpt-with-long-term-memory/

  • 사람의 단기 기억을 장기 기억으로 전환하는 해마가 챗봇에도 있어야 한다.
  • 원한다면 이전 대화 내용을 '영구적으로' 기억할 수 있는 MemoryGPT 구조.
  • MemoryGPT가 언제든지 참조할 수 있는 vector 형태의 데이터베이스로 이전 대화 내용을 저장한다.
  • 고찰 : 만약 사용자별로 이러한 장기 기억 vector를 생성할 수 있다면 1) 경량화 방법 고민 2) 이러한 정보가 저장될 수 있는 데이터 구조 고민 필요

 

ChatGPT의 한계점

  • Session 바깥의 내용을 기억하지 못하고, 같은 session이라도 시간이 일정 부분 흐르면 맥락을 잃어버린다.
  • 대화 상황이라면 유저가 이전에 했던 내용을 또다시 설명해야 하는 상황이 발생하여 대화의 흐름을 크게 저하시킬 것.
  • 일기장 작성 기능 (요약 기능)을 장기 기억 인풋으로 활용할 수 있는 방안을 고민해야 할 것.
  • 3.5 Turbo 기준 4096 tokens 제한 안에 최대한 많은 정보를 기억으로 받으면서, 동시에 이전 대화 내용을 기억할 수 있는 기능을 구현해야 한다.

 

해결책?

- 기본적으로 한글은 한 글자가 2-3 토큰을 차지하는 반면, 영어는 거의 한 단어가 한 토큰을 차지한다. 단어 대비 비교하면 차이가 기하급수적으로 크기 때문에, 사용자 인터페이스에 영향을 미치지 않는 부분은 모두 영어로 작업해준다. (프롬팅, 요약 기능 등)

- 기본 챗봇 모델을 GPT 4를 사용할 경우, 파인 튜닝을 할 수 없다는 단점이 있지만, 프롬프트 엔지니어링으로도 충분히 원하는 결과를 이끌어낼 수 있다. 게다가 GPT 4는 토큰 수 제한이 8192개이기 때문에 비교적 긴 대화도 소화할 수 있다.

- 추가로 매 세션의 대화 내용을 영어로 요약해주는 요약 모델을 사용하여 장기 기억을 구현하는 동시에 토큰 수를 아낄 수 있다.