Q. Response를 generation으로 주는 것이 아니라 input을 generation output으로 주는 것이 훨씬 결과가 좋다고 말씀하심. 이게 무슨 의미이고, 어떤 말씀일까?
A. Input을 Generation output으로 -> 사용자의 질문에 답하면서도 추가 질문이나 대화 방향을 제시
-> 대화가 자연스러우며, 사용자의 의도나 필요 더 깊이 파악 가능
+ 추가 설명 (Dialogue system은 turn을 계속하여 돌리게 되는데, turn을 돌릴 때마다 성능이 향상될 수 있다. Response을 Generation output으로 돌리는 게 더 좋을 수 있지 않나? => Dialogue system은 계속적인 interaction이 있어야 하기 때문에 추가적인 질문을 하는 것이 더 좋을 수 있다 말씀하심. 이로 보면 input generation ouput으로 주는 것이 추가적 질문을 하는 것을 의미한다는 것을 알 수 있다.)
Rule-based ChatBot : ELIZA project
: 발화를 따라하거나, 가장 General한 대답을 Return (예시 : 아 정말요? 그래요? = 의미 없는 대답)
Corpus and Corpora
: 말뭉치 그리고 corpus의 복수형 corpora
Corpus-based Chatbot
: 데이터 기반으로 Rule define의 필요가 없다. 대신 데이터가 굉장히 많이 필요한데 몇천 수준이 아닌 몇십, 백만 수준의 데이터가 필요하다.
Dialouge를 Chatbot에게 넣는 것 뿐 아니라 Wikipedia같은 knowledge base를 함께 넣어줌
Reponse의 퀄리티가 좋아짐
-> 이는 RAG라고 불리며, 외부 지식과 LLM을 연결하여 성능과 사실 관계 파악 등을 높일 수 있음.
Dialogue 내에서 Confidental한 정보를 Masking 한다. 이는 Response를 재사용의 목적이다.
Representative corpus-based chatbots에는 두 가지 종류가 있음.
1. Information Retrieval based Chatbot
2. Machine learned seqeunce transduction Chatbot이 있다.
이중 1번은 많은 Dialogue에서 데이터를 갖고와서 그대로 Generate한다.
Context understanding은 Chatbot의 궁극적인 목표이다.
초기의 encoder, decoder -> RNN 두 개 구조 => 여기에는 LSTM과 같은 모델과는 다르게 메모리를 사용하지 않는 구조이기 때문에 Context History를 기억하기에 좋지 않다. (Corpus Based Chatbot의 한계)
예문
Q. What's the weather like in New York?
A. It's sunny in New York today
이런 식의 Dialogue가 저장되어 있음. 이런 식의 pair 쌍이 저장되어있다 가정하고 Vector representation한 후 Consine simiarlity를 통하여 가장 비슷한 맥락을 가진 Dialogue를 찾음
ChatGpt, DeepSeek 등의 모델은 Decoder only model이다.
Encoder, Decoder chatbot의 경우 Dialogue Managing Algorithm으로 많이 쓰임
Frame-based Dialogue System (최종 Goal => slot filling)
Slot 여러 개 모아둔 것이 Frame
slot을 잘 define 하는 것은 중요
slot의 값을 채우게 끔 챗봇이 질문을 계속함 (slot filling)
특정 Slot이 필요하다 판단 시 Question함
-> User가 올바르게 답변할 시 답변을 채워넣음
(=> 이때 생길 수 있는 문제 1. 질문이 계속되어야 함 2. 질문의 내용이 겹칠 수 있음)
Multiple Frames
ex) Siri나 빅스비의 경우 알람, 전화 등의 여러 종류의 도메인의 행동을 할 수 있어야 함 -> 각 도메인을 알아야 하고 구분할 수 있어야 함
각 slot이 달라지기 때문에 multiple frame -> 처음에는 rule based로 시도함.
Semantic grammars
Rule을 정의해둔 format을 이야기 함
-> 이후
CFG (Context Free Grammar) parsing하게 됨 -> 이것을 통하여 무언가로 결정하고 시행하며 이 정보를 획득하는 것이 action을 취하기 전의 final goal이 됨.
ASR(Automated Speech Recognition)
이것이 추가 component로 들어갈 수 있음
Natural Language Generation의 최종 action은 Response Generate
지금까지의 한계점 : Dialogue history를 tracking 하거나 policy가 존재하지 않아서 advanced mechanism이 없음
(Text-based) Dialogue state Architecture
: Frame based Chatbot의 advance 버전
1. Natural Language understanding (slot filling을 위함)
1.1 Domain Classification / Intent Determination / Slot Filling 이렇게 3가지가 Basic한 기본 모델
2. Dialogue State Tracker (previous Dialogue act : None -> 첫 입력이기 때문에)
3. Dialogue Policy (Next Dialogue Act : Get_Ready-By : 행위를 이야기 함)
4. Natural Language generation
해당 과정(아키텍처)에 Spoken Dialogue가 포함될 경우 처음 음성이 input으로 들어가며 발음기호가 들어감. 첫 시작을 텍스트로 하거나, 텍스트에 해당하는 발음기호로 시작하는가의 차이가 존재함.
Slot Filling은 Text generation으로 발전하지 않음
-> Sequence tagging 과정 이후 Classification task로 발전함
BIO tagging은 Conditional Random Field 알고리즘을 통하여 분류함 (CRF : 해당 파트는 교수님이 따로 설명해주시진 않아서 따로 궁금할 경우에 찾아보기) -> B-DES(Destination) I-DES(Destination) 이런 식으로 B다음에 I가 나오게 끔 조건부 확률을 계속하여 알려줌
그렇다면 상업적인 상황에서의 Slot Filling은 어떻게?
-> Bootstrapping 방식을 이용함
1. Rule base로 시작
2. Neural netowrk 데이터 모아서 학습에 사용
2.1 잘 작동하지 않는 것으로 일단 prediction
2.2 prediction 결과물을 통해서 neural network update
여기서의 train data -> model -> output에서 output을 다시 input에 넣는 것을 Bootstrapping이라 함.
-> 하지만 문제점은 performance가 당연히 떨어질 수 밖에 없음 그렇다면 이를 어떻게 잘 해결할까?
-> 이 부분이 교수님의 연구분야라고 하심.(semi supervisd learning + llm) -> Data의 너무 많은 noise를 잘 처리하여 활용하는 것이
Dialogue state Tracker : History 전부 저장 가능
Dialogue Policy : Text generate를 위하여 dialogue act를 정한다 (어떠한 action을 취하는 것이 맞을까 정해줌)
Dialogue Acts : 다음 step 정하는 길라잡이의 역할 (Speech acts와 Grounding(사전지식)을 한꺼번에 담고 있는 개념) => tag set 이라 함
Speech Acts : User가 원하는 정보가 뭔지 파악할 수 있게 함
Dialogue의 종류 (tag set), 그 종류를 Domain 별로 Define 해둬야 함 (결론)
Language Modeling 이란, 이전에 받았던 Context 중점으로 Generation을 한다.
Dialogue Management by Dialogue Manager(Finite state automata로 만듬)
| [자연어처리] 2주차 복습 (0) | 2025.04.02 |
|---|---|
| [자연어 처리] 4주차 (교수님께 질문 드렸던 내용) (0) | 2025.03.28 |
| [자연어처리][NLP] 1주차 강의 #3 Frame-based chatbot (0) | 2025.03.07 |
| [자연어처리][NLP] 1주차 강의 #2 corpus based chatbot (0) | 2025.03.07 |
| [자연어처리][NLP] 1주차 강의 #1 (OT) (1) | 2025.03.07 |