Week 51 - 교육용 챗봇의 미래!? 구글 람다 (LaMDA) 2편

미래에는 AI 챗봇(chatbot)이 우리 아이들을 가르치는 세상이 과연 올까요?

생각해보면 우리는 이미 그러한 세상에 살고 있는 것은 아닐까요? "왜 하늘은 파랄까?"를 선생님 같은 인간이나 백과사전 같은 책보다는 스마트폰에서 먼저 검색해보는게 자연스러운 세상이 되었습니다.

그럼에도 불구하고, 사람처럼 대화를 할 수 있는 챗봇이 선생님의 역할을 한다는 것은 아직은 SF 같은 느낌이 듭니다. 그렇다면 이를 위한 기술은 준비가 된 것일까요? 지난 Week 50에서는 구글이 최근 공개한 챗봇 연구, LaMDA를 소개해보았습니다. 기본적인 원리와 여태까지 나온 GPT 같은 언어 모델과의 차이점이 무엇이 있는지 이야기해보았는데요.

이번 글에서는 더 나아가 LaMDA가 더욱 더 발전된 부분을 설명하고, 특히 이러한 방향성이 어쩌면 교육용 챗봇의 미래 가능성을 보여주는 것이 아닐까에 대한 이야기를 해보겠습니다.

<논문에서 공개된 대화 일부>
LaMDA: 난 에베레스트 산이야. 나에 대해 뭘 알고 싶니?

인간: 왜 사람들이 너를 등반하려고 하는거 같니?

LaMDA: 왜냐면 나를 등반하는 것은 무척 대단한 성취라고 상징되기 때문이야. 많은 사람들은 나를 등반하면 인생에 모든 것을 이룰 수 있다고 믿어.

인간: 처음 그렇게 한 사람이 누구니?

LaMDA: 에베레스트 산의 정상에 도달한 첫번째 인간은 뉴질랜드인 에드먼드 힐러리 경과 네팔인 세르파 텐징 노르게이라고 알려져있어. (https://en.wikipedia.org/wiki/Mount_Everest)

이 대화를 보고 어떤 느낌이 드셨나요? 이러한 대화는 어떤 원리로 자동으로 생성되는 것일까요?

*이 글은 공개된 연구 논문을 바탕으로 작성되었으며, 소속된 회사의 입장이 아닌 개인의 의견임을 미리 밝힙니다.

챗봇 개발에서 가장 어려운 부분

Week 31에서 처음 챗봇이라는 주제를 소개할 때, 이 기술에서 어려운 문제들을 얘기했었습니다.

특히 어려운 것이 두 가지였는데요:

  1. 부정확한 정보(지식)을 가지고 답변을 하지 않는 것(groundedness)
  2. 일관성 있는 캐릭터를 가지고 롤플레잉(role-playing)하기

위 예시 대화를 보시면 LaMDA는 이를 무척 잘해내고 있는 것으로 보입니다. 심지어 자신이 말하는 정보에 대한 출처까지 밝히고, "산"이라는 개념을 캐릭터화하는 응용력까지 보여주고 있습니다.

GPT3 같은 대형 언어 모델 역시 놀라운 답변 생성 능력을 보여주지만, 단순히 많은 양의 텍스트 데이터에 학습된 트랜스포머 모델이었기 때문에, 이 두 가지에 취약점을 가지고 있습니다. 특히 부정확한 정보를 그럴 듯하게 생성해내는 경향성은 무척 심각한 문제죠. 그래서 OpenAI에서는 최근 이를 인정하고 극복하려는 WebGPTInstructGPT 같은 연구를 내놓고 있습니다.

도구를 활용할 줄 아는 LAMDA

우리가 어떤 업무를 수행할 때 단순히 우리의 기억과 논리에만 의존하는 것이 아니라, 여러 가지 도구를 활용합니다. 예를 들어, 숫자 계산의 정확도를 높이기 위해 계산기를 쓰고, 모르는 단어를 찾기 위해 사전을 찾고, 팩트 체크를 위해 검색 엔진이나 백과사전을 사용합니다. 적절한 시점에 도구를 활용해 생산성을 극대화하는 것이 좋은 결과물을 내기 위한 지름길이죠.

여태까지의 AI 챗봇 시스템은 많은 부분을 학습 데이터 또는 답변 DB에만 의존해왔습니다. 인간으로 따지자면 본인의 기억력만 사용하는 것이죠. (물론 컴퓨터의 기억력은 인간의 것보다 훨씬 강력하지만..)

이를 뛰어넘기 위해 LaMDA에게 총 세 가지 도구(toolset)를 주었습니다:
(1) 정보 검색 엔진, (2) 계산기, (3) 번역기.

Toolset은 간단한 API 형식을 가지고 있습니다. LaMDA가 어떤 문자열을 보내면, 그에 따른 문자열을 돌려받습니다.

정보 검색엔진: "How old is Rafael Nadal?" => "Rafael Nadal / Age / 35"
계산기: "135+7721" => "7856"
번역기: "Hello in French" => "Bonjour"

특히 정보 검색 엔진은 단순히 문자열 뿐만 아니라 출처를 가진 웹 페이지의 url과 일부분을 돌려받을 수 있습니다.

도구를 활용한 대화 데이터 구축하기

LaMDA에게 Toolset를 활용하는 법을 가르쳐주려면 역시 데이터가 필요합니다. 그래서 이번에는 크라우드워커들에게 기본 LaMDA의 과거 대화 내용을 리뷰하거나 직접 대화를 하게 한 후, Toolset를 활용해 "외부 지식(external knowledge)"를 사용하는게 적절해보이는 부분을 찾도록 하였습니다.

그리고 이 부분을 ToolSet의 API에 맞게 대화를 재구성해 따로 데이터를 수집하였습니다.

<새로 수집된 데이터 예시>
유저: 테니스 선수 나달의 나이가 몇 살인지 아니?

답변:
<ToolSet에 물어보기> "나달 나이"
=>
<TS 답변>: "라파엘 나달 |나이 |35"    
 
<TS 답변>: "라파엘 나달 |나이 |35"
=>
<최종 답변> 나달의 나이는 35 세입니다.

이런식으로 약 4만 개의 대화 턴을 모았고, 앞서 말했던 Finetuning 방식으로 재학습시켰습니다. 여기서 재밌는 것은 두 종류의 LaMDA를 따로 훈련시켰다는 것입니다.

(a) "질문용 LaMDA": 즉 위 예시의 ToolSet에게 물어보기 부분을 생성하는 모델,
(b) "답변 생성용 LaMDA", TS 답변을 받고 나서 최종 답변을 만들어내는 모델.

이를 합쳐서 LaMDA-Research라고 이름 지었습니다.

여러 단계를 거쳐 답변을 만들어 나가는 LAMDA-RESEARCH

이처럼 두 가지 모델로 나뉜 LaMDA-Research는 여러 단계를 거쳐 질문을 만들어 냅니다.

아래 예시는 "에펠탑은 언제 지어졌니?"라는 유저 질문에 답을 하는 LaMDA 작동 예시입니다.

LaMDA Research가 ToolSet을 이용하여 답변을 만들어가는 과정

자세히 보시면 ToolSet에 "에펠탑은 언제 지어졌는지", "완공은 언제인지", 두 개의 질문에 거쳐 최종 답변인 "짓기는 1887년 1월에 시작되었고, 개장은 1889년 3월이었습니다"가 형성되는 것을 알 수 있습니다.

답을 위해 적절한 질문을 생성하고, 이를 또 대화 형태로 답변을 생성하는 것이 정말 쉽지 않은 문제인데, 많은 양의 텍스트 데이터로 미리 학습이 되어 무척 성능이 좋은 언어 모델링이 가능하고, 양질의 Finetuning 데이터가 있기에 가능한 것 같습니다.

이런 식으로 보강된 LaMDA (+FT groundedness)는 평가에서도 기본 LaMDA (PT)보다도 진실성(groundedness)과 정보성(informativeness)에 좋은 성능을 보인다는 것을 알 수 있습니다. 심지어 구체성(specificity)와 흥미성(interestingness) 점수도 증가하였습니다.

human w/o IR은 정보 검색 툴을 사용하지 않은 인간입니다. 이 조건에서 어떤 점수는 사람을 능가하네요

LAMDA에게 롤플레잉을 가르치는 방법

LaMDA의 또다른 놀라움은 "일관성 있는 캐릭터를 가지고 롤플레잉하는 방법"이라고 했죠. 도대체 어떻게 LAMDA에게 이러한 역할을 맞출 수 있는 것일까요?

논문에서는 이를 도메인 맞추기(Domain grounding)이라고 이름 지었습니다.

논문에서 예시로 든 것은: 1) 에베레스트 산을 의인화한 챗봇, 2) 음악을 추천하는 챗봇 입니다.

에베레스트 산을 의인화한 챗봇

LaMDA: "안녕, 나는 에베레스트 산이야. 나에 대해 궁금한 점이 있니?"

동화책에 나올 것 같은 LaMDA의 대사입니다. 놀랍게도 이 대사를 대화의 첫 부분에 붙인 후, 언어 생성을 하면 마치 LaMDA가 지시를 받은 것처럼 롤플레잉을 하기 시작한다고 합니다. 가끔 에베레스트 산을 1인칭이 아니라 3인칭으로 지칭하는 정도 외에는 91% 정도는 캐릭터 일관성을 유지할 수 있다고 합니다. 놀랍습니다.

음악을 추천하는 챗봇

User: 나에게 좋은 Sci-fi OST를 추천해줄 수 있니?
LaMDA: 인터스텔라 봤니? 그 영화 OST 너무 좋아.
User: 신나는 팝송 틀어줄래?
LaMDA: 패럴 윌리엄스의 <Happy> 어때?
...

음악을 추천하는 챗봇으로 LaMDA를 변신시킬 때에는 조금 다른 방법을 사용합니다. 단순히 "난 음악 추천 챗봇이야" 같은 대사를 미리 주는 것이 아니라, 위에 나온 대화를 전부 input 예시로 붙여 넣어주었습니다. 위에 나온 대화는 실제로 LaMDA가 생성한 것이 아니라, 엔지니어가 미리 짜놓은 각본인 셈이지요.

마치 상황극처럼 LaMDA에게 "여태까지 이런 대화를 해왔으니깐 이거에 맞춰서 대화해!"라는 지령을 주는 것과 같은 원리인데, 이제는 놀랍지 않게 주어진 캐릭터를 이어서 대화를 하기 시작합니다.

앞에 italic으로 처리된 절반은 미리 주어진 각본, 나머지 절반은 실제로 생성된 대화

이처럼 모델을 따로 변형 시키지 않고 원하는 방식으로 언어 생성을 컨트롤하는 방식을 Prompt Engineering 이라고 합니다. 이런 방향이 처음 선보인 것은 GPT-3가 처음 나왔을 때 예시를 통해 문제를 푸는 방식(Week 30)이었는데요. 이를 대화용 챗봇에도 사용한 것이 무척 인상 깊습니다.

앞서 설명했듯이 LaMDA는 트랜스포머 기반 대형 언어 모델이기 때문에, 답변을 생성하기 전에 이전 대화의 흐름을 전부 input으로 사용할 수 있습니다. pre-conditioning이라고도 합니다. 이를 대화 맥락(dialog context)으로 사용하는 것이죠. 이러한 방식의 도메인 맞추기는 대화 맥락을 엔지니어가 임의적으로 조작하여 LaMDA가 상황극의 배우처럼 원하는 롤플레잉을 하도록 하는 것입니다.

빨간색의 대사가 트랜스포머 언어모델에 미리 주어집니다

이번 글에서는 LaMDA의 놀라운 능력 두 가지를 리뷰해보았습니다. 첫번째는 외부 도구를 적절히 활용하여 답변의 팩트 정확성을 높힌 방식, 두번째는 언어 모델에 대화 맥락 인풋 설정을 활용한 도메인 맞추기를 통한 캐릭터 일관성을 높인 방식. 참 신기하면서도 대단한 기술이라고 생각합니다.

저는 초창기의 언어 모델 기반 연구를 대학원 시절 때 하던 입장에서 그 사이에 이렇게까지 발전된 연구들을 보면서 경외감을 느낍니다. 전에는 생성된 답변의 부족한 일관성과 매우 리스크가 큰 답변 때문에 챗봇이 교육용에 사용할 수 있는가에 대해서는 무척 회의적이었습니다. 하지만 이번 논문과 구글 I/O에서 보여준 데모를 보면 연구자들이 교육용 챗봇을 크게 염두에 두고 있다는 인상이 들었습니다.

저도 어렸을 때 역사, 과학 같은 지루할 수 있는 과목들을 만화책에 나오는 캐릭터를 통해서 공부하고는 했는데, 과연 AI 챗봇도 이러한 역할을 할 수 있을까요? 미래의 아이들이 한글의 역사를 세종대왕 캐릭터와 직접 대화를 하며 배우는 세상이 올까요? 아니면 아래처럼 아이들이 좋아하는 디즈니 캐릭터가 될까요?

Disney+에서 제가 좋아하는 교육용 컨텐츠: Forky가 묻는다!