CHAI: A CHatbot AI for Task-Oriented Dialogue with OfflineReinforcement Learning
*CHAI: 강화학습 Q-Learning 기법을 적용하여 학습된 챗봇
1. Introduction
1) Offline Reinforcement
*CHAI는 Offline Reinforcement 방식을 사용하여 학습됨
*Online Reinforcement: agent(에이전트)와 environment(환경)가 직접적으로 상호작용을 하면서 policy(정책)를 업데이트
*Offline Reinforcement: 에이전트와 환경이 지속적으로 상호작용을 할 필요 없이, 정해진 정첵을 기반으로 상호작용을 하여 시행착오를 겪은 데이터를 미리 수집한 후, 이 데이터를 사용해 정책 업데이트
-지속적으로 에이전트와 환경이 상호작용을 할 필요가 없어 비용 및 시간 측면에서 효율적
2. 데이터셋
*<Decoupling Strategy and Generation in Negotiation Dialogues>논문에서 사용한 데이터셋 이용
-Agent, Utterance, Dialogue Act로 구성
-Agent: Buyer와 Seller로 구분
-Utterance: 특정 제품의 가격 흥정을 통해 Buyer가 제안된 가격을 수락하거나, 거절함
-Dialogue Act: 발화의 종류 구분
3. Offline Reinforcement Learning with Language Models
1) CHAI의 전체 구조
① Language Model: GPT-2를 사용하여 발화를 입력받고, 이에 적합한 응답을 샘플링한 후(해당 데이터에서 price 부분은 공백), price 데이터와 합하여 응답 문장 생성
② Q-Learning: 답변 후보들의 점수를 책정한 후, 가장 점수가 높은 응답을 반환
③ Scoring: 실제 Q-value score와 답변 후보들의 Q-value score 간의 차이를 제곱한 후, 해당 값을 최소화하는 방향으로 학습 및 제시된 가격과 결과를 기반으로 reward(보상) 책정
④ Selection: 가장 높은 score, 즉 보상을 지닌 응답을 채택하여 반환
*학습 순서 요약
① 언어 모델 학습
② 미세 조정
③ Critic 혹은 Q-function 학습
2) CHAI에 사용된 강화학습 환경 설정
*에이전트: CraigslistBargain 문제에서 seller 역할 담당하여 action(행동)을 수행
*환경: Buyer 역할 담당
*State Space(상태 공간): 발화, 제품 종류, 가격, 행동 유형
*CHAI의 목표: 가격 흥정을 통해 Buyer가 가격을 수락하도록 하는 것
*이를 위해 Q-Learning 기법을 도입하여 후보 답변에 점수를 매긴 후, 가장 높은 점수의 답변을 반환
(1) State and Action Space
*구성요소: 행동 유형(message, offer, reject, accept 중 하나), utterance, normalized price, context(광고 설명)
*가격 데이터: 별개의 토큰으로 구성되지 않으며, 발화 내 가격 자리를 placeholder 토큰으로 대체. 또한 offer 타입의 발화 반환 시 원하는 거래 가격을 전달하기 위해서만 사용
*Individual State
-Individual State s={su, stype, sprice, scontext}
-Individual Action a={au, atype, aprice}
-{su, au}: 발화, 즉 에이전트 및 환경에 의해 생성된 단어 시퀀스
-{stype, atype}: 행동 타입
-{sprice, aprice}: 가격
(2) Transition Distribution
-buyer 에이전트(환경)에 의해 생성되는 응답에 관한 분포
(3) 보상
-강화학습의 목적: Return의 기댓값을 최대화하는 정책을 찾는 것
-r: S × A -> R: 보상 함수
-γ ∈ (0,1]: 할인율(discount factor)
3) CHAI 학습 시 사용된 Q-Learning
*Return을 최대화하기 위해 후보 답변들의 순위를 매기는 데 사용
(1) Q-Learning 업데이트 방식
*주어진 데이터셋을 이용해 Language Model을 학습한 후, Q-function(Action-Value function, 행동-가치 함수)을 학습하여 점수 책정
*사전의 데이터셋으로부터 (상태, 행동, 보상, 다음 상태)로 구성된 Transition(전이)의 배치 샘플 추출 후 아래의 수정된 Bellman loss를 최소화하는 방향으로 업데이트
-Qtarget(s, a) 함수: 아래의 Bellman Operator로 계산됨
(2) Offline Reinforcement(오프라인 강화학습)의 문제점
*오프라인 강화학습의 대표 문제점: out-of-distribution actions
-Qtarget(s, a) 함수에서 행동에 대해 최대화가 어느 방식으로든 제한되지 않으면 Q-value를 잘못 예측하는 행동을 반환할 가능성 존재
*특히 대화 태스크에서는 Q-function이 데이터셋 내에 있는 답변만 학습하므로 이런 문제가 심각해짐
-> 임의의 발화에 대해 정확한 예측을 할 가능성이 없음
-> 이런 문제를 해결하고자 다음의 방식을 도입함
(3) Proposal Sampling (CHAI-prop)
*Target value Qtarget(s, a)는 N개의 응답 proposal를 생성하기 위해 언어 모델을 기반으로 하는 Proposal Distribution을 이용, 수정된 Bellman Operator 식으로 계산됨
-> 위 응답들에 대해 다음의 식을 이용해 점수를 매기고, 가장 높은 점수의 응답하도록 target Q-function(Q_bar)을 사용
-응답이 자연스럽게 나올 수 있도록 제한하는 동시에, target value를 계산할 때 out-of-distribution 입력을 방지함
-명확한 actor 없이 Proposal Distribution으로부터 샘플링 수행
-유사 사전 연구들처럼 Soft Update Rule을 이용해 Q의 가중치를 추적하기 위해, 가중치가 업데이트되는 별도의 target network (Q_bar) 사용
※Proposal Distribution
*action a={au, atype, aprice}에 대한 분포
*샘플 발화 au를 추출하기 위해 사전 학습된 언어모델(Language Model, LM) 사용
-학습을 더 효율적으로 진행하기 위해, LM을 이용해 데이터셋 내에서 하나의 상태 전이에 대해 5개의 배치 발화를 생성
-LM으로부터 5개의 발화를 다시 샘플링 후, 하나의 근사값(답변) 제출
*가격 aprice는 바로 이전에 제시된 가격의 70%~100%
*CraiglistBargain 데이터셋 작업에서 각 응답에 대한 유형을 지정해줘야 하므로, 간단한 휴리스틱 방식을 사용해 추출된 샘플 발화에 기반하여 각 메시지 유형 추정
*LM 미세 조정 시, offer, accept, reject 행동을 "offer", "accept", "reject" 발화로 대체
-LM이 이 중 아무 토큰을 생성했는지 확인한 후, 대응되는 행동 유형으로 반환 (만약 위 토큰 중 어느 것도 생성하지 않았으면 메시지 유형으로 지정)
-> LM을 이용해 발화 생성 및 행동 유형 지정 가능
(4) Conservative Q-Learning (CQL)
*out-of-distribution Q-value를 반환할 가능성을 줄이기 위해, 데이터셋에 보이지 않는 행동의 Q-value에 명시적으로 패널티를 줌
-Proposal Sampling schema로써뿐만 아니라 Q-value의 추가적인 regularizer로써 CQL 적용
*Q-Learning에 추가적인 regularizer fCQL도 추가된 변형된 CQL을 사용
*기존의 CQL과 다른 점
-기존의 CQL은 명시된 actor을 학습시키는 actor-critic 방법을 사용, 여기서는 명시된 actor 없이 학습
*이 외 target Q-function 계산 및 LM 샘플링은 Proposal Sampling 방법과 같음
4. 모델 성능
*CHAI-CQL이 좋은 성능을 보임