일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- U_stage
- 부스트캠프_AITech3기
- 백트랙킹
- 단계별문제풀이
- 이코테
- dp
- 그리디
- 파이썬 3
- 알고리즘_스터디
- ODQA
- 정렬
- Level1
- 다시보기
- dfs
- 주간회고
- 기술면접
- python3
- 프로그래머스
- 이진탐색
- 최단경로
- 부스트캠프_AITech_3기
- 그래프이론
- mrc
- 백준
- 알고리즘스터디
- Level2
- Level2_PStage
- 다이나믹프로그래밍
- 개인회고
- 구현
- Today
- Total
국문과 유목민
[NLP] Chatbot Summary 본문
Chatbot
사전적 정의) 음성이나 문자를 사용한 인간과의 대화를 통해서 특정한 작업을 수행하도록 제작된 컴퓨터 프로그램.
챗봇과 관련된 인공지능 용어나 동작원리를 아는 것은 챗봇을 더 잘 이해하고 사용하는데 도움이 될 수 있다. 챗봇을 사용함에 있어 중요한 것 중 하나는 챗봇에 대한 기대치를 적절하게 설정해야 한다는 것이다. 따라서 챗봇을 잘 이해한다면 기대치 기대치를 알맞게 설정해 원하는 목적을 위해 더 잘 사용할 수 있을 것이다.
NLP, NLU, NLG
챗봇에는 (1) 상대방의 말을 잘 이해하기 위한 NLU 기술, 그리고 (2) 적절한 답변을 생성하기 위한 NLG 기술을 포함하는 다양한 NLP 기술이 챗봇에 적절하게 통합되어야 한다.
NLP (Natural Language Processing)
NLP(자연어 처리)는 컴퓨터가 인간의 자연어를 읽고 이해할 수 있도록 돕는 AI의 한 분야이다. Language Modeling(e.g. BERT, Seq2Seq, ELMo 등) 등은 인간의 언어를 프로세싱하여 기계의 이해를 돕는다는 점에서 대표적인 NLP 연구 분야이다.
NLU (Natural Language Understanding)
NLU(자연어 이해)는 NLP의 한 분야이다. 기계가 텍스트의 실제 의미(e.g. 의도, 감정, 질의응답 등)를 이해하도록 돕는 작업을 의미한다.
NLG (Natural Language Understanding)
NLG(자연어 생성)는 NLP의 또 다른 하위 집합이다. NLG는 기계가 자연어 응답을 직접 생성하는 작업으로, 기계는 (1) 논리적인 출력을 생성한 다음, (2) 인간이 쉽게 이해할 수 있는 자연어 응답으로 변환하는 작업을 수행한다.
Chatbot Type
챗봇은 구현방법이나 사용목적에 따라 여러가지 유형으로 분류할 수 있다. 해당 Summary에서는 구현 방법에 따른 Chatbot으로 타입을 분류하고자 한다.
1. 사용 목적에 따라
- 작업 지향형 (Task-Oriented): 예약 챗봇, 사내 Q&A 챗봇 등
- 관계 지향형 (Relation-oriented): Virtual Frient (이루다)
2. 구현 방법에 따라
- Rule-based chatbot(규칙 기반)
- NLP powered chatbot(NLP기반)
Rule-based chatbot
Rule-based는 Old School 챗봇이다. Pattern Matching은 사용자의 현재 입력에 대해 가장 알맞은 답변을 찾아서 전달하는 규칙 기반의 알고리즘이다. 규칙 기반 챗봇은 답변이 일관되어야하고 변수가 허용되지 않는 '작업지향형' 도메인에서 유용하게 사용될 수 있다. 그리고 자주 나오는 질문에 대해서 사용자에게 준비된 답변을 확실하게 전달할 수 있으며, 질문-답변의 관계를 학습하는 최소한의 모델만 준비되어 있다면 쉽게 만들 수 있다는 장점이 있다.
하지만 자유대화가 필요한 pen-Domain Dialogue에서 Rule-based 챗봇을 사용하는 것은 한계가 있다. 이러한 챗봇은 패턴 일치 및 Slot filling이라는 간단한 기계 학습 기술들로 구동되기 때문에 사용자와의 이전 상호 작용을 기억하지 못한다는 단점도 존재한다. 그리고 작업 지향형 도메인일지라도 자유 대화를 할 수 있는 챗봇이 사용자의 만족감에 긍정적인 영향을 미친다는 연구도 있다. 따라서 어떤 상황에 어떤 챗봇을 사용할 지는 결국 목적과 상황에 따라 선택해야 한다.
NLP powered chatbots
NLP powered는 Next Generation방식의 챗봇이다. 이러한 챗봇들은 향상된 언어 능력을 바탕으로 자유대화를 목표로 하기 때문에 '관계지향형' 도메인에서 주로 사용되고 있다. 하지만 최근에는 앞서 설명했던 이유로 작업 지향 도메인에서도 자유 대화를 요구하는 추세라고 한다.
NLP Powered Chatbot은 여러가지 NLU/NLG module들을 결합해서 구현할 수 있다. 핵심은 사용자가 참여하는 대화에서 ①사용자의 언어를 알맞게 이해하고(Understanding), ②적절한 응답을 생성(generation) 혹은 검색(retrieval)하는 것이다. 이 때, ③대화 흐름을 추적하고 관리하는 Dialogue Management, Dialogue Policy 같은 기술이 사용될 수 있으며, 풍부한 답변을 생성하거나 모르는 지식에 대처하기 위해 ④외부 지식(External Knowledge)를 통합하기도 한다.
위처럼 다양한 모듈을 사용하면 정교한 대화 흐름 기획 및 적용이 가능하다. 하지만 모듈이 추가될수록 추론 시간이 오래 걸리고, 각 모듈의 성능이 전체 결과를 좌우할 수 있다. 그래서 모듈을 최소한으로 사용하거나, 최대한 통합하려고 한다.
단일 end-to-end모델
최근에는 단일 end-to-end모델을 사용해 챗봇을 구현하는 방법이 제안되고 있다. 대량의 데이터에 대해 사전학습된 large-scale의 단일 언어모델을 사용해 대부분의 도메인에 대해 그럴듯한 답변을 생성하는 방법이며, Google의 Meena (2020), OpenAI의 GPT-3 (2020) 그리고 Facebook의 BlenderBot 2.0 (2021)까지, 새로운 모델들이 꾸준히 제안되고 있다.
- Meena: 구글에서 2020년에 발표한 모델로 26억개의 파라미터, 400억개의 데이터셋으로 학습한 모델이다.
- GPT-3: OpenAI에서 2021년에 발표한 GPT-3는 학습모델과 데이터를 압도적으로 키우고 Transformer Decoder를 활용해서 학습을 진행했다. (1750억개, 4990억개) Fine-Tuning하지 않아도 모델을 생성할 수 있고, Fe-shot Setting만으로도 좋은 성능을 보인다.
- Blender-bot2.0: Facebook에서 2021년에 발표한 BlenderBot 2.0은 GPT-3의 한계점으로 꼽혔던 기억력 문제를 해결한 모델이다. 수집한 관련 지식을 장기 기억 저장소에 저장하고 이 경험을 대화에 사용한다. blender-bot은 기억력, 외부지식 통합방법 등을 단일 모델에 통합시켰다.
- LaMDA: Google에서 2021년에 발표한 LaMDA는 자신을 객체로 인식하고 1인칭 대화를 하거나, 자신을 종이비행기로 인식하고 사람과 대화를 할 수 있다. Persona 혹은 topic 중심의 접근을 하는 모델이다. LaMDA는 구글에서 멀티 모달을 지원하는 검색 모델인 MUM으로 통합한다고 한다.
- InstructGPT: OpenAI에서 2021년에 발표한 InstructGPT는 GPT를 통해 새로 수집된 sample들을 통해 성능 향상을 시킨 모델이다. 대량의 텍스트 데이터에 대한 사전 학습으로 대부분의 도메인에 대해 그럴듯한 답변이 가능해졌다.
단일 end-to-end모델의 장단점
- 장점: 대량의 텍스트 데이터에 대해 사전학습된 데이터로 텍스트 생성 가능
- 단점
- Bias&Toxicity, 인터넷을 기반으로 훈련된 모델은 인터터넷의 스케일에 비견하는 정도의 편견도 습득
- 현실의 물리적인 세계 혹은 상식에 취약하다.
- 장기 기억의 한계 (GPT3의 기억력은 금붕어와 비슷하다고 한다.)
- 비효율적, 많은 파라미터는 엄청난 성능의 향상을 가져왔지만 비효율적이다.
통계 기반 머신러닝 접근 방식은 자연어를 진정으로 이해하는 시스템을 만들기 어렵다. 실제 세계에 대한 의미론적 표현이 부족한 언어 모델은 그들이 생성하는 단어를 이해하지 못한다. 이 때문에 인종차별적, 성차별적인 편향된 텍스트를 생성할 수 있다.
Further Works
1. Mitigate Toxicity & Bias: 생성된 문장을 필터링하거나, 생성 시 특정 단어의 생성 비율을 강제로 낮추는 방법 등이 있다. 하지만 편향의 기준이 불명확하고, 사회적 기준에 따라 변하기 때문에 이를 완화할 수 있는 방법이 필요하다.
2. Long-Term Memory: Blender-bot 2.0과 같은 모델이 Long-term memory의 한계를 극복하려 했으나, 실제 사용 시나리오 상에서 사용자들이 느끼는 만족도는 다를 수 있다.
3. Multi-Modal Dialogue: 실제 대화에서 사람은 텍스트 뿐 아니라 다양한 modality 정보를 얻고, 이를 답변의 힌트로 활용한다.
4. Integrating Extermal Knowledge: 챗봇이 대화 중에 학습하지 않은 지식을 접했을 때 이에 대응하기 위한 대표적인 방법은 외부 지식을 통합하는 방법이다.
5. Chatbot Evaluation: BLEU score같은 정량 지표는 multiple responses를 가질 수 있는 Open-domain dialogue에서는 더이상 유효한 방법이 아니다. 이를 보완하기 위한 SSA, model-based metric등의 방법이 제안된 것처럼 새로운 평가지표도 중요하다.
'IT 견문록 > 추가 학습 정리' 카테고리의 다른 글
[NLP] 자연어 기초 용어 정리 (0) | 2022.04.12 |
---|---|
[WandB] Huggingface 라이브러리에서 Sweep 사용하기 (0) | 2022.04.04 |
[NLP] GPT 강의 정리 (Week 11) (0) | 2022.04.01 |
[git] .gitignore 사용법 (0) | 2022.03.23 |
[WandB] Huggingface라이브러리와 사용하기 (0) | 2022.03.23 |