기존의 머신러닝은 격리된(isolated) 단일 작업 학습의 방식이다. 하지만 이 방법은 적용시에 새롭거나 예상치 못한 것이 없고, 고립된 학습이다보니 지식 축적이나 이전이 불가능하다. 또한 배포 후에 모델이 수정되지 않아 학습이나 적응을 하지 못한다. 따라서 모델을 배포한 이후 학습을 수행하거나 모델 적용 중에 학습을 수행하여 이러한 문제들을 해결할 수 있다.
특히 챗봇의 경우 인간과 직접 상호작용을 하기 때문에 채팅 중에 새로운 지식과 언어 표현들을 학습하여야한다. 따라서 챗봇은 엔지니어의 오프라인 학습에만 의존해서는 안된다.
순서가 있는 작업 을 점진적으로 학습하여 새로운 작업인 을 배우는 것이 목표이다. 하지만 결과에 치명적일 정도의 망각이 없어야하며, 지식 이전을 활용한다. 이때 각 작업 과 학습 데이터 은 사용자로부터 부여 받았다고 가정한다.
[Liu. Learning on the Job:Online Lifelog and Continual Learning.AAAI-2020]
위 그림은 배포 후 Continual learning을 통한 학습을 하는 과정을 그림으로 나타낸 것이다. 그림에서의 주황색 선으로 표시되어있다. 여기서 확인할 수 있듯이, 배포 후 사용자, 환경과 상호작용을 어플리케이션에서 수행하고 여기서 얻어진 정보를 task manager, 학습데이터, KB에 전달하여 continual learning을 진행한다.
continual learning엔 몇가지 특징이 있다.
대화 중에 새로운 지식을 학습함으로써,
1. 기초 언어 표현 학습
2. 사실 지식 학습
3. 대화 능력 학습
을 할 수 있다는 장점이 있다.
Siri, Alexa와 같은 NLI(Natural Language Interfaces) assistant들을 Task-oriented chatbots이라한다. 이들은 사용자가 기본 응용 프로그램에서 실행할 일부 작업에 mapping할 NL(Natural Language)명령을 실행할 수 있다.
기존엔 이러한 챗봇들을 end-to-end 딥러닝 모델을 학습하거나 semantic parsing -> logical forms -> 수행할수있는 동작으로 번역하는 방식으로 구축하였다. 하지만 NL2NL(Natrural Language to Natural Language) 매칭 방식에 기반한 CML(Command Matching and Learning)을 통해 API 기반 어플리케이션에 자동적으로 NLI를 생성할 수 있다.
개발자는 시드명령 집합 만 작성하여 새로운 NLI를 생성하거나 기존 NLI에 새로운 기술을 추가할 수 있다. CML이 사용자로부터 새로운 시드 명령 집합을 지속적으로 학습하게 할 수 있는 대화형 학습 매커니즘이다.
CML은 다음의 3가지 요소들로 구성되어있다.
SC(Seed Command) specification
개발자가 그들 API 각각에 대한 SC 집합을 지정할 수 있도록 한다.
단어 단위로 NL 명령어 관리
ex) AddBlock(X1), Remove(X1), Move(X1, X2)
Command grounding module(CGM)
명령 C를 적절한 SC에 접지
(1) Rephraser, Tagger
: 사용자 명령어 C가 주어졌을때, R은 C를 다시 표현하고, 다시 표현된 C의 각 단어나 구에
argument가 아닌 O나 action SC의 가능한 argument 타입 중 하나로 태그를 지정한다
(2) SC Matcher(M)
: 다시 표현되고 태그가 지정된 명령어 C와 SC의 집합 T가 주어지면 Matcher M은 T의 각 요소
t에 대해 얼마나 일치하는지에 대한 점수 f(t, C)를 계산하고 최상위 점수를 반환한다.
이 작업은 비지도 매칭 모델을 사용한다.
["Working of CGM on a user command for Blocks-World", NeuCAIR @ ICLR-2021, May7, 2021]
대화 중에 새로운 지식을 지속적으로 배우고 추론할 수 있다.
대화 중 학습은
지식 학습은
사용자가 Wh-question을 질문할때 CILK는 미궁으로 남아있는 쿼리에 답변이나 거절을 하고, 답변하는데 도움이 되는 몇가지 지식들을 학습하거나 습득한다.
쿼리는 KB에 알려진 Closed-world query와 KB에 알려지지 않은 Open-world query로 구분된다.