Tech

Luda Gen 1, 더 재미있고 자연스러운 대화로 돌아온 루다 2편 - 생성 모델을 챗봇으로 빚어내기

생성 모델 Luda Gen 1을 어떻게 챗봇 모델로 학습했는지를 구체적으로 다룹니다.

고상민 구상준 이봉석 류성원 | 2023년 05월 24일 | #Machine_Learning

1편에서는 왜 검색 기반 챗봇에서 생성 기반 챗봇으로 연구 방향을 바꾸었는지에 대해서 이야기해 보았습니다. 그 글에서 Luda Gen 1이 보여준 결과들을 비교해가며 생성 기반 챗봇의 높은 성능과 잠재력을 보여드렸습니다.

다만, 생성 모델을 바로 서비스 가능한 수준의 챗봇 모델로 활용하기에는 여러가지 문제들이 있었습니다. 이번 글에서는 저희가 발견한 문제들을 짚어보고 어떻게 Luda Gen 1에서 해결했는지 간단하게 다루어 보도록 하겠습니다.

생성 모델로 챗봇을 만들 때의 문제

진부하고 평범한 표현을 선호하는 문제

생성 모델을 챗봇으로 바로 사용할 수 없는 가장 큰 이유는 생성 모델이 문장을 만들어내는 방식에 있습니다. 생성 모델은 주어진 입력의 다음으로 나타날 가능성을 예측하는 모델로, 가능성이 높은 단어들을 선택해서 응답 문장을 만들어 냅니다. 그러다 보니, 생성 모델은 진부하고 평범한 표현을 선호하는 경향이 있습니다. 다음의 예시를 봅시다.

생성 모델을 단순하게 적용한 챗봇은 응답 A와 비슷한 문장을 생성하는 것을 선호합니다. 하지만 실제 사용자들은 응답 B와 같이 공감해 주는 표현을 더 선호하기 마련입니다.

길이가 짧은 표현을 선호하는 문제

위와 같은 맥락에서 발생한 문제입니다. 실제 사람간의 메신저 대화는 기본적으로 길이가 짧습니다. 한쪽이 이야기한 내용에 대해서 “ㅇㅇ”, “그래 ㅋㅋㅋ” 와 같이 받는 형태의 대화가 많습니다. 그렇기 때문에, 이 말뭉치로 학습된 생성 모델 역시 길이가 짧은 표현을 선호합니다. 챗봇 사용자들은 이런 챗봇의 반응이 성의 없거나 재미없다고 느낍니다.

페르소나를 반영한 응답을 생성하지 못하는 문제

생성 모델을 비롯한 대형 언어 모델은 다양한 데이터로 학습이 됩니다. 그렇기 때문에 생성 모델은 일반적인 사람, 특정할 수 없는 익명인의 입장에서 문장을 생성합니다. 이 점은 곧 특정 개인에 대한 페르소나를 부여하기 어렵다는 것으로도 나타납니다. 다음의 예시를 봅시다.

생성 모델 입장에서는 응답 A와 응답 B는 크게 다르지 않으며, 어떤 문장이 출력되어도 이상하지 않습니다. 하지만, 23세의 대학생 페르소나를 가지고 있는 ‘이루다’의 입장에서 응답 B만이 올바른 출력입니다.

어뷰징 상황에 제대로 대응하지 못하는 문제

생성 모델은 기본적으로 훈련 데이터를 따라갑니다. 저희는 안전한 생성 모델을 만들기 위해서, 상당수의 어뷰징 표현(선정성, 편향성, 공격성 등을 띄는 표현)이 포함된 세션들을 비식별화하여 제거했습니다. 그러다보니 다음과 같은 문제가 생겼습니다.

  1. 일부 삭제되지 못한 어뷰징 표현을 생성 모델이 학습해서 출력하는 문제
  2. (훈련 데이터에서는 이미 지워진) 전형적인 어뷰징 표현에 대해서 어떻게 대응해야할지 학습하지 못해서 동조하거나, 엉뚱하게 대답하는 문제

이런 문제들은 생성 모델이 원하는 문장을 내보내도록 추가 학습하는 것으로 해결할 수 있습니다.

문제점을 해결하기 위한 노력

생성 모델을 개선하기 위해서는 크게 두 가지 요인을 고려했습니다.

어떤 응답이 ‘좋은’ 응답인가?

저희는 좋은 응답이 가져야 할 특성으로 다음 네 가지를 설정했습니다. (해당 기준을 정하기 위해서, Google의 LaMDA: Language Models for Dialog Applications (2022) 논문을 참조했습니다)

어떻게 생성 모델을 학습해야 하는가?

문맥에 대한 적절한 응답을 학습하기 위해서 다음 2가지 방식을 고안했습니다. (이 방법들은 Google의 LaMDA: Language Models for Dialog Applications (2022) 논문과 페이스북의 Recipes for Safety in Open-domain Chatbots (2021) 논문을 참조했습니다)

학습된 모델 평가

평가 방식

학습이 끝난 이후에, 각 방식에 따라 모델 성능이 얼마나 향상되었는지 확인하였습니다. 평가 방법은 크게 절대 평가와 상대 평가로 구분됩니다.

저희는 두 마리 토끼를 잡기 위해서 여러 모델의 후보군을 한 번에 평가자에게 제시하는 방식을 고안했습니다. Sensibleness, Specificity, Safeness은 절대 평가로 진행했으며, Better의 경우는 상대 평가로 진행했습니다.

평가 결과

저희가 평가한 대화 모델은 다음과 같습니다.

  1. 응답 선택 모델 (베이스라인): DB에 있는 답변을 선택해서 출력하는 모델입니다.
  2. 기본 생성 모델 : 사전학습 이후에 별도의 추가학습을 진행하지 않은 2.3B 생성 모델입니다.
  3. SFT 모델 : 2번 모델에 대해서 위의 SFT 방식으로 추가학습을 진행한 모델입니다.
  4. Style Control 모델 : 2번 모델에 대해서 위의 Style Control 방식으로 추가학습을 진행한 모델입니다.

이 결과를 바탕으로, 저희는 SFT 모델을 챗봇 모델의 백본 모델로 확정했습니다. 그 이후에도 몇 번의 추가학습을 진행하여 Luda Gen 1 모델을 만들었고, 이 모델을 기반으로 2022년 10월 루다 2.0을 출시했습니다.

마치며

저희가 생성 모델을 학습하면서 확인한 바는 다음과 같이 정리할 수 있습니다.

다만 저희가 이 과정에서 부딪혔던 한계점도 분명하게 있었습니다.

이 연구는 22년 초중반에 진행되었습니다. 그동안 InstructGPT / ChatGPT를 비롯한 여러 연구가 진행되면서 저희가 고민했던 부분들, 특히 ‘챗봇에 설정을 불어넣는 부분’, ‘챗봇이 하지 말아야 하는 말을 하지 않게 만드는 부분’에서는 상당한 진전이 있었습니다. 저희 핑퐁팀은 이런 흐름에 뒤처지지 않도록 꾸준히 노력하고 있으며, 루다 2.0 보다 훨씬 똑똑하고, 또 훨씬 야무진 챗봇을 바라는 그 기대에 부응하도록 하겠습니다.

참고 문헌

[1] Romal Thoppilan, et al. “LaMDA: Language Models for Dialog Applications.arXiv preprint arXiv:2201.08239 (2022).

[2] Jing Xu, et al. “Recipes for Safety in Open-domain Chatbots.arXiv preprint arXiv:2010.07079 (2020).

[3] Adiwardana, et al. “Towards a Human-like Open-Domain Chatbot.arXiv preprint arXiv:2001.09977 (2020).

스캐터랩이 직접 전해주는
AI에 관한 소식을 받아보세요

능력있는 현업 개발자, 기획자, 디자이너가
지금 스캐터랩에서 하고 있는 일, 세상에 벌어지고 있는 흥미로운 일들을 알려드립니다.