서울대 조요한 교수님 Conversational AI 강의 2강 정리
1. Dialogue system의 높은 주목도 & 넓은 적용력
2. Dialogue system의 종류 두 가지: open domain, task-oriented
3. 요즘은 open domain이랑 task-oriented 합치는 연구 활발히 진행
1. Dialogue System Structure 7단계
1) Voice Activity Detection
= device directed detection -> 기계한테 말한 건지 아닌지 확인 (매우 중요)
왜 중요? -> privacy, response relevance 문제 때문에
해결하기 위해 -> 몇몇 대화 장치는 카메라도 함께 사용
* signal processing
2) Automatic Speech Recognition
(1) Start/end-pointing: 기계한테 말한 내용만 잘라내기
(2) Speaker Diarization: 화자별로 발화문 분리
(3) Speaker Identification: 발화문의 주인이 누구인지 찾기
(4) Speech Recognition: 오디오를 텍스트로 변환
3) Natural Language Understanding (NLU)
- 텍스트에서 Intent 파악
Intent, slot, value 추출
Intent = 유저의 의도 (e.g., book_train) -> 각 의도에 api가 매핑됨
slot = 파라미터 (e.g., departure)
value = 인자 (e.g., Seoul)
4) Dialogue State Tracking
- 지금까지 유저가 기계에게 전달한 정보 총 통합 (보통 table 형태로)
* entity resolution: 유저가 말한 것과 시스템에 저장되어 있는 단어 형태가 다를 때 매칭 시켜주기
5) Dialogue Policy
- state를 이용해서 기계가 어떤 행동 (system act) 을 할지 결정 (e.g., 질문, api 호출, etc.)
- 정보가 부족하다면 유저에게 질문을 통해 요청
6) Natural Language Generation
- 질문 생성
- system act를 텍스트로 바꿔주기
(1) template-based
(2) machine learning-based
7) Text-To-Speech
2. Dialogue System Structure 종류별 문제점
1) End-to-End System (e.g., ChatGPT)
- 블랙박스 시스템
(1) 에러가 어디서 발생했는지 찾기 어려움
(2) specialized task 처리 불가능
(3) training resources가 엄청 많이 필요
2) Modular framwework
(1) error propagate (앞에서 문제 생기면 뒤 싹 다 망함)
(2) 한 모듈 업데이트하려면 전체 업데이트 해야 함
(3) 전문가 인력이 많이 필요함
(4) manual annotation -> 높은 비용
[질문]
** dialogue system의 모듈 구조를 객체지향 프로그래밍과 같은 형태로 이해함. 그런데 Module 구조인데 왜 한 모듈 업데이트하려면 전체를 업데이트해야 하지? 그러면 모듈 구조라 볼 수 없지 않나...? -> end-to-end system의 문제점 아닌가?
** error propagate도 end-to-end의 문제점 아닌가?
3. Challenges in Dialogue Research
1) Not enough data -> data augmentation (e.g., LLM 이용해서)
2) Grounding in the world model -> dialogue Grounding (실제 세상의 정보와 연결)
3) Dialogue evaluation (e.g., 유저의 만족도)
4) big variance across different dialogue domains -> Domain adaptation
5) tracking dialogue history -> long-term conversation (과거 내용 기억), contextual query rewriting
* world model = 세상의 정보
4. Structure of Human conversation
Utterances = 발화문
Turn = 한 유저가 말을 시작해서 끝날 때까지
1) Turn-Taking
-> end-pointing 매우 중요
*barging = agent가 말하고 있을 때 유저가 끼어드는 거
-> 처리가 쉽지 않다
2) Dialogue Acts (+ Speech Acts)
- conversation의 가장 작은 단위 카테고리
(1) Asking
(2) Answering
*task-orient dialogue systems에서의 dialogue acts로는
(1) inform: 유저가 자기 정보 알려주기
(2) request: 유저가 정보 요청
(3) confirm: agent가 유저에게 다시 물어보며 요청 사항 확인
(4) accept/deny
*dialogue acts의 중요성
(1) 사람들은 같은 질문을 여러 형태로 할 수 있다 -> 핵심 정보만 추출하기
(2) communication theory 발전
e.g., 선생님의 질문 비중은 이러했고, 학생의 대답 비중은 이러했더니 학습결과가 이렇게 나왔다더라
-> 선생님은 학생에게 이런이런 정도의 비중으로 질문해야 한다.
* DAMSL (dialog act markup in Several Layers)
(1) communication status (e.g., uninterpretable, abandoned, self-talk
(2) information level
a. task: task 자체를 직접 진행시키는 utterances
b. task management: problem solving 과정을 같이 discuss하는 utterances
c. communication management: Conversational phrases that maintain contact, perception (e.g., Uh-huh, Let me see, Oops, Sorry?)
d. Other-level
(3) Forward-looking fuction
a. Statement
b. info-request
c. influencing-addressee-future-action: 청자에게 행동 제안
d. committing-speaker-future-action: 행동 약속
e. conventional: opening closing 멘트
(4) Backward-looking function
현재 utterance가 과거 대화에 미치는 영향
a. agreement
b. understanding
c. answer
d. information-relation
e.g., SWBD-DAMSL : 실제 사용자들의 통화 기록 corpus를 태깅함
*Ambiguity in Dialogue Acts
3) Grounding
= 대화 참여자들끼리 common ground를 만들기 위해서 싱크를 맞추는 것 (너가 생각하는 걸 나도 생각하고 있다를 확인시키는 과정)
(1) continued attention: 계속 들어주기(암묵적 동의)
(2) display: 앵무새 화법
(3) acknowledgement: 리액션
(4) relevant next contribution: "and, what day in May did you want to travel?" "and, ~~"
(5) Demonstration: rephrasing
* 공감대를 만들기 위해 매우 중요
* 사용자들의 만족도에 큰 영향을 주더라
4) Conversation Structure
5) Implicature
숨은 의미를 얼마나 잘 파악할 수 있느냐가 관건
* Grice's Maxims theory
아래 요소들에 따라 implicature의 해석 방식이 달라짐
(1) relevance: 주제에 관련된 이야기를 할 것이라고 가정하고 해석
(2) quantity: 정보를 얼마나 제공하는지에 따라 해석 달라짐
(3) quality: 사실만을 이야기한다고 가정
(4) manner: 간단하고 명료하게 핵심만 이야기한다고 가정