[가상인간연구팀 황준선]
Facebook의 Meta AI는 BlenderBot[1]이라는 대화형 인공지능 시스템을 개발하고 있다. BlenderBot2는 해당 포스트에서 다룬적이 있다. BlenderBot은 성격, 공감, 지식과 같은 대화에 필요한 다양한 기능을 통합하고, 장기 기억을 통해 문맥을 이해한 대화를 수행하기 위해 노력했다. 그리고 최근 Meta AI는 기존 시스템을 더욱 개선하고 언어모델을 OPT-175B로 교체하여 BlenderBot3(BB3) 공개[2, 3, 4]했다. 현재 데모 버전으로 미국에서만 접속 가능한 웹페이지를 배포 중이며, 사용자에게 피드백을 받고 있다. 학습 코드, 모델 파라미터, 데이터셋, 사용자 피드백 등을 모두 공개할 예정이다.
BB3의 주요 특징은 다음과 같다:
- OPT-175B를 언어모델 모듈로 사용하며, 이를 fine-tuning [10]. BlenderBot의 이전 버전의 특징을 이어받아 장기 기억과 인터넷 검색 기능이 포함됨 [11, 12].
- 사람들이 보다 더 중요하다고 생각하는 기능에 대해서 더 좋은 성능을 내기 위해 유저 피드백을 활용 [5].
- Humans-in-the-loop를 위한 알고리즘 활용 [6].
- 시스템의 부적절한 답변 생성을 막기 위한 Safty Mechanism [8].
- 시스템 배포 중 유저들의 적절한 피드백을 필터링 [7].
BB3 Architecture
BlenderBot은 언어 모델을 포함하여 여러가지 모듈로 구성되어있다. 다음 표와 그림은 BB3를 구성하는 모듈들을 정리한 것이다.
각 모듈들을 간단하게 설명하면 다음과 같다.
- Internet search decision:
- 사용자 마지막 말의 문맥을 통해 인터넷 검색 여부를 결정
- Generate internet search query:
- 대화 전체 문맥을 통해 인터넷 검색어 생성
- Internet search:
- Generate internet search query에서 생성된 검색어를 통해 인터넷 검색 후 N개의 문서 반환
- Generate knowledge response:
- 대화 전체 문맥과 검색된 문서를 통해 지식 답변 생성
- Extract relevant entity:
- 대화 전체 문맥을 통해 관련 개체 추출
- Generate a long-term memory:
- 사용자 마지막 말의 문맥을 통해 장기 기억에 저장할 요약문 생성
- Long-term memory access decision:
- 사용자 마지막 말의 문맥을 통해 장기 기억 메모리 접근 여부를 결정
- Access long-term memory:
- 대화 전체 문맥을 통해 장기 기억 저장소에서 텍스트로된 적절한 기억을 반환
- 장기 기억 메모리가 너무 크다면, 토큰 길이를 맞추는 일련의 방법 적용
- Generate dialog response:
- 대화 전체 문맥과 지식 기반 답변, 선택된 장기 기억을 기반으로 최종 답변 생성
- 지식 기반 답변과 선택된 장기 기억은 special token으로 표기
BB3는 위와 같이 모듈식 시스템이지만 각 모듈은 독립적인 구성 요소가 아니다. Figure 2에서 보이는 것 처럼, 모듈은 이전 모듈의 결과에 따라 연속적으로 호출된다.
대화 상대의 새로운 발화가 주어지면 이 시스템이 가장 먼저 하는 일은 검색 및 장기 기억 액세스가 필요한지 여부를 결정하는 것이다. 검색이 필요한 경우, 검색어가 생성되고 인터넷 검색이 호출된 다음 검색 결과들을 기반한 지식 답변이 생성된다. 그 결과는 최종 응답을 생성하기 위해 대화 문맥에 추가된다.
장기기억 접근이 필요하면 장기기억에 접근하여 기억을 선택한다. 이것 또한 최종 대화 응답을 생성하는 모듈에 대한 입력으로 대화 문맥에 추가된다.
검색이나 장기 메모리 액세스가 필요하지 않은 경우, 대화 전체에서 엔터티가 추출된다.
마지막으로 주어진 정보들을 기반으로 최종 답변을 생성하게 되고 사용자에게 출력된다.
Safety Mechanisms
생성 모델을 활용하면서 난항을 겪게 되는 부분 중 하나는 불안정한 답변 생성일 것이다. BB2에서도 비속어 생성 등을 막기 위해 Baked-in safety라는 방법론이 적용되었다. 하지만, BB3에서 Safety Mechanisms로 SaFeRDialogues(SD)가 추가로 학습되었다. 최종 답변에 대해 불안정한 답변인지 분류하고, 불안정하다면 사전 등록된 답변을 출력하며 장기 기억 메모리에 저장하지 않는 절차를 거친다. 그럼에도 해당 시스템이 부적절한 답변을 생성하는 것을 막지 못한다면, 사용자에게 피드백을 받을 수 있게 되어있다.
Deployment & Continual Learning
Continual learning은 BlenderBot 프로젝트의 궁극적인 목표와 같다. BlenderBot은 배포 공개하여, 외부 지식을 검색하고 사람들과 대화할 수 있는 대화 에이전트를 의미하여, 해당 연구 프로젝트는 외부와의 상호 작용을 통해 지능형 에이전트를 지속적으로 학습하는 것이 목표이다. 배포를 하게 되면, 사용자로부터 피드백을 받을 수 있게 되며, 수용된 피드백을 바탕으로 모델을 더 고도화할 수 있을 것이다.
Figure 6은 이진 피드백이 아닌 더 다양한 타입의 피드백을 받기 위해서 BB3에서 사용 중인 양식의 일부이다. Figure 7은 DIRECTOR[9]라는 모델을 통해 언어 모델을 고도화하는 방식을 나타내고 있다. LM Head 옆에 Classification Head를 추가하여 언어 모델의 디코딩 작업에 관여하는 방식이다. 이 DIRECTOR는 유저들의 피드백을 바탕으로 더 적절한 문장을 생성할 수 있도록 언어 모델에 영향을 준다.
Filtering Feedback
시스템 배포와 지속적인 학습을 이루기 위해 사용자로부터 피드백을 받는 일이 항상 순탄치 않을 것이다. 적극적으로 참여하는 사용자가 있는 반면, 수동적이거나 적대적이거나 심지어는 악의적으로 사용하는 사람들도 있을 것이다.
악의적 사용을 탐지하는 방법으로는 ‘예제별 검수’와 ‘사용자별 검수’로 크게 2가지가 있다. 예제별 검수는 각 대화나 발화별로 악의적 사용 여부를 체크하는 것이고, 사용자별 검수는 사용자별로 체크하는 것이다. 현재 BB3는 상습적인 악용을 막기 위해 사용자별 검수를 사용하고 있고, 벤치마킹 데이터셋에서도 예제별 검수보다 더 좋은 성능을 내고있다. 또한, 오히려 악의적인 사용자가 있었을 때 모델의 부적합한 답변 생성률이 더 줄어 들었다고 한다.
Evaluation
마지막으로, 사용자와 직접 대화하면서 평가를 진행하여 BB1부터 BB3까지 성능 비교한 표이다. BB3는 전반적으로 좋은 답변을 만들어 내지만, 특히나 지식 기반 답변 생성 부분에 대해서 많은 성능 개선이 이루어 진 것을 확인할 수 있다.
References
[1] https://parl.ai/projects/bb3/
[2] https://ai.facebook.com/blog/blenderbot-3-a-175b-parameter-publicly-available-chatbot-that-improves-its-skills-and-safety-over-time/
[3] https://github.com/facebookresearch/ParlAI
[4] BlenderBot 3: a deployed conversational agent that continually learns to responsibly engage
[5] Beyond Goldfish Memory: Long-Term Open-Domain Conversation
[6] Learning New Skills after Deployment: Improving open-domain internet-driven dialogue with human feedback
[7] Learning from data in the mixed adversarial non-adversarial case: Finding the helpers and ignoring the trolls
[8] SaFeRDialogues: Taking Feedback Gracefully after Conversational Safety Failures
[9] DIRECTOR: Generator-Classifiers For Supervised Language Modeling
[10] SeeKeR: An Open source Search-Augmented Language Model
[11] BlenderBot1
[12] BlenderBot2