SlideShare ist ein Scribd-Unternehmen logo
1 von 64
Downloaden Sie, um offline zu lesen
잡담봇 삽질기
(Open Domain Dialogue Chatbot)
발표자 김성동
목차
1. Introduction
2. Seq2Seq with Attention model
3. Data Augmentation
4. Chit-Chat Intent
5. Semantic Parsing
6. Anomaly Detection
7. Beam Search
8. REINFORCE
9. Challenge
Introduction
이름 : 김성동
소속 : 텍스트팩토리 NLP 연구원
연락처 : tjdehd1222@gmail.com
깃허브 : https://github.com/DSKSD
Introduction
개인비서 챗봇 문봇
https://www.facebook.com/ai.moonbot/
Introduction
Goal-Oriented bot
Introduction
Goal-Oriented bot
Introduction
Goal-Oriented bot
Introduction
잡담하길 원하는 유저들
뭐함
뭐해
뭐해요?
나 슬퍼ㅜㅜ
나 이쁘지?
나는 누구게ㅎㅎ
나랑 놀자
그냥 너랑 잡담만 하고 싶어
심심이 같은건가?
…
…
… + 엄청난 양의 비속어들
Seq2Seq with Attention Model
모델 설명
ㅎㅇ 넌 누구 니
Attention
GO 저는 문봇
입니
다
저는 문봇 입니다 EOS
Seq2Seq with Attention Model
트레이닝 데이터 부재
1. (User, Bot) pair의 부재. 즉, Seq2Seq를 훈련시킬 데이터가 없다
⇒ Twitter, Movie Subtitle, Community에서 데이터를 모아볼까?!
⇒ No!
- 문봇의 Personality를 해칠 수도 있다
- 서비스 상 해서는 안 될 위험한 발언들을 제어할 수 없다
- 수렴시키기 어렵다
Seq2Seq with Attention Model
트레이닝 데이터 부재
1. (User, Bot) pair의 부재. 즉, Seq2Seq를 훈련시킬 데이터가 없다
⇒ Twitter, Movie Subtitle, Community에서 데이터를 모아볼까?!
⇒ No!
- 문봇의 Personality를 해칠 수도 있다
- 서비스 상 해서는 안 될 위험한 발언들을 제어할 수 없다
- 수렴시키기 어렵다
Seq2Seq with Attention Model
트레이닝 데이터 부재
1. (User, Bot) pair의 부재. 즉, Seq2Seq를 훈련시킬 데이터가 없다
⇒ 일단 직접 대답을 달자.. aka 노가다
1주간 약 2~3000문장에 직접 답을 달았음.
Open Domain Dialogue를 하기엔 터무니 없이 적은 양임. ㅠㅠ
● 답변의 일관성을 유지한다 ⇒ Personality, Coherence
● 봇 답변의 Space(사용 어휘)를 제한한다 ⇒ 수렴 is good.
Seq2Seq with Attention Model
2~3000문장으로 트레이닝
욕
욕
일반적인 답변
및
동문서답
문법적 오류
및
맥락 고려 x
Problem
Problem
Data Augmentation
과적합으로 인한 일반화 능력 X
1. 데이터가 너무 적어서 과적합 발생.
2. 유저의 말에 오타가 많다.
⇒ 데이터를 더 많이 모은다? ⇒ Yes, 매일 2시간씩 답변 달았음
(하루에 2~300개 정도?)
하지만 시간 및 비용이 너무 많이 든다..
⇒ 데이터를 불리자. Data Augmentation!
How to?
Data Augmentation
과적합으로 인한 일반화 능력 X
안녕하세요==안여하세여ㅛ==안녕하세ㅇ
h ...
x = 안녕하세요 (오타 없는 깔끔한 Input)
C(x) = 안여하세여ㅛ (오타가 발생한 noisy
Input)
x^ = C(x)를 인코딩한 후 다시 디코딩한 결과
UNSUPERVISED MACHINE TRANSLATION USING MONOLINGUAL CORPORA ONLY (2017, Lample at el.)
Denoising Auto Encoder
Data Augmentation
과적합으로 인한 일반화 능력 X
UNSUPERVISED MACHINE TRANSLATION USING MONOLINGUAL CORPORA ONLY (2017, Lample at el.)
0.1의 확률로 해당 단어(토큰) 지우기
단어(토큰) 랜덤 셔플 (원문과의 차이가 3보다 적게 나도록)
Data Augmentation
과적합으로 인한 일반화 능력 X
0.1의 확률로 해당 단어(토큰) 지우기
단어(토큰) 랜덤 셔플 (원문과의 차이가 3보다 적게 나도록)
일정 확률로, 잘못 눌리기 쉬운 Character로 대체
ㅐ : {ㅒ,o,O,ㅑ,ㅔ,ㅣ,9,0,}
Data Augmentation
과적합으로 인한 일반화 능력 X
0.1의 확률로 해당 단어(토큰) 지우기
단어(토큰) 랜덤 셔플 (원문과의 차이가 3보다 적게 나도록)
일정 확률로, 잘못 눌리기 쉬운 Character로 대체
x = 네 수고하셨습니다
C(x) = 네 수고 하셨 습 S l 다
네 수고 하 습니다
...
네 감사합니다~!!
Source
Target
Data Augmentation
과적합으로 인한 일반화 능력 X
데이터 수 x 3~4 ⇒ 약 50000개의 문장
오타 등 비슷한
의미를 지칭하는
다른 표현에 좀 더
강건
Solved
여전히 문맥고려
X
동문서답
Problem
Chit-Chat Intent
외부 지식을 요구하는 답변
1. OOV(Out of Voca)에 의한 잘못된 대답.
2. 외부 지식(World Knowledge)을 요구하는 유저 발언
딥러닝이 뭐야?
빈지노의 본명은?
강남역 맛집 좀 알려줘
1+1=?
볼만한 영화 좀 찾아줘
영어공부 잘하는 법
데이트하기 좋은 장소 어디지
어제 축구 경기 결과 좀
...
OPEN DOMAIN !!
Chit-Chat Intent
외부 지식을 요구하는 답변
1. OOV(Out of Voca)에 의한 잘못된 대답.
2. 외부 지식(World Knowledge)을 요구하는 유저 발언
Seq2Seq는 Input 문장만을 보고
가장 그럴싸한 답변을
만들어내기 때문에 외부지식에
접근하여 맞는 답변을 생성하지
못함
Problem
Chit-Chat Intent
외부 지식을 요구하는 답변
A Deep Reinforcement Learning Chatbot(2017, Serban at el.)
MILABOT for Amazon Alexa Prize competition
The system consists of an ensemble of natural language generation and retrieval models,
including template-based models, bag-of-words models, sequence-to-sequence neural
network and latent variable neural network models
Chit-Chat Intent
외부 지식을 요구하는 답변
1. OOV(Out of Voca)에 의한 잘못된 대답.
2. 외부 지식(World Knowledge)을 요구하는 유저 발언
⇒ Copy Mechanism 사용
⇒ Chit-Chat Intent를 분류하여 Seq2Seq로 답하기 어려운(외부지식을
요하는) 질문에 다른 방식을 취하자
ex>
1. What : ~가 뭐야? 알아? 설명해줘 ....
2. Howto : ~하는 법, ~ 어떻게 해? ....
3. Recom : ~ 추천해줘 ....
4. Request : ~해줘, ~해봐 ....
5. Issue : ~에 대해 어떻게 생각해?, ~ 요즘 재밌대? ....
…
...
Chit-Chat Intent
외부 지식을 요구하는 답변
Chit-Chat Intent Classifier
(데이터가 없다면 일단
정규표현식)
User Message
What
Howto
Recom
...
...
Other
Response
외부 지식
외부지식 처리
api
Chit-Chat Intent
외부 지식을 요구하는 답변
Chit-Chat Intent Classifier
(데이터가 없다면 일단
정규표현식)
User Message
What
Howto
Recom
...
...
Other
Response Seq2Seq
Chit-Chat Intent
외부 지식을 요구하는 답변
외부지식을 요하는 질문에도
어느 정도 대답할 수 있게 됨
Solved
Chit-Chat Intent
외부 지식을 요구하는 답변
외부지식 처리를 위한 또다른
기능을 추가 구현하지 않으면
여전히 대답할 수 없음
외부지식+문맥을 통합하여
답하지 못함
Problem
Semantic Parsing
외부지식 처리 Example: WikiQA
Semantic Parsing
외부지식 처리 Example: WikiQA
빈지노의 본명이 뭐야?
Lambda : What?agent="빈지노"&property="real_name"
자연어 쿼리
논리적 Form
Semantic DB
임성빈
Semantic
Parsing
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
1. 심각한(용인하기 어려운) 문법적 오류
2. 챗봇이 해서는 안되는 (혹은 서비스 상) 위험한 발언
욕
욕
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
1. 심각한(용인하기 어려운) 문법적 오류
2. 챗봇이 해서는 안되는 (혹은 서비스 상) 위험한 발언
⇒ 위험한 상황에 대한 답변을 인위적으로 많이 집어 넣는다.
⇒ 금지어 사전을 관리한다
⇒ TODO...
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
1. 심각한(용인하기 어려운) 문법적 오류
2. 챗봇이 해서는 안되는 (혹은 서비스 상) 위험한 발언
⇒ 철자 교정기를 이용한다 : 생성된 문장이 복구하기 힘들 정도로
훼손되어 있음..
⇒ DAE(Denoising Auto Encoder) : 시도해볼만 함? (Not Yet)
⇒ Anomaly Detection : 문법적으로 매우 불량한 문장을 탐지 후,
모르쇠로 일관하자
문법적으로 매우 불량한 케이스 예시
ex) 헉 가. 어떻게. 했헉?
ex) 제가. 저 나름 하는 중 잘못
ex) 헿 봇재미 있우리
ex) 무슨 가있어요?
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
Classification 문제로 보고 0이면 정상 1이면 비정상으로 판별
Data?! ⇒ Noisy function C(x) 응용
C(x) = 문장 토큰 중 일부를 지우거나 임의의 토큰을 추가 후 섞는다
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
x x x x
last hidden
σ(Wx+b)
P(y=1;x)
비정상적인 답변일 확률
if h(x) >= 0.5, predict y="1"
if h(x) < 0.5, predict y="0"
Threshold가 0.5로 설정되면 문봇의 조금
어설프지만 창의력 넘치는 답변을 막을 수도 있기
때문에 0.6~0.8 정도의 더 높은 Threshold 사용
RNN Classifier
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
완전히 이 이슈를 해결하지는 못함…
문법적으로 어설프지만 그럴싸한 문장과 정말 해괴망측한 문장을 구분하는 것이 애매함.
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
POS 태그로 변환한 후,
CNN Classifier를 사용해보자!
NP
JX
NP+JKG
NNB
JKB
NNG
NNB
VCP
EC
Convolutional Neural Networks for Sentence Classification (2014, Kim)
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
문법적으로 정상인 문장과 비정상인 문장의 POS 태그열은
그 패턴이 확연하게 차이가 날 것이라는 가정
NP
JX
NP+JKG
NNB
JKB
NNG
NNB
VCP
EC
저
도
제
나름
대로
노력
중
이
라구요
제
가
.
저
나름
하
는
중
잘못
NP
JKS
SF
MM
NNB
VV
ETM
NNB
MAG
정상 비정상
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
CNN을 text에 적용하면 Phrase level의 특징을 잘 캐치할 수
있음 (bigram~ngram)
NP
JX
NP+JKG
NNB
JKB
NNG
NNB
VCP
EC
정상!
비정상
Anomaly Detection
문법적, 의미적으로 불량한 답변 필터링
비정상으로 판별돼
필터링된 답변
하지만 이는 서비스를 하기
위한 최소한의 조치일뿐
근본적인 해결책은 아님!
Problem
Beam Search
답변의 완성도와 다양성을 높이자
1. greedy decoding의 한계(현재 step의 likelihood만 최대화)
2. 네 맞아요, 죄송해요, 어렵군요 등의 일반적인 답변
GO 네 알겠
습니
다
네 알겠 습니다 EOS
argmax argmax argmax argmax
심심해 놀자
Beam Search
start
네
좋아
알겠
말씀
요
해
습니다
~
!!
대화
해요
할
문장 전체의 Joint Probability 고려해서 디코딩!
모든 케이스를 고려할 수는 없기에 한 스텝에 K개의 노드(Beam)만
유지한다
답변의 완성도와 다양성을 높이자
Beam Search
Beam Search를 이용한 답변이 좀 더 완성도 있음
답변의 완성도와 다양성을 높이자
BLEU score
Greedy
Bleu_1: 0.423387
Bleu_2: 0.285907
Bleu_3: 0.189564
Bleu_4: 0.105020
Beam search
Bleu_1: 0.396104
Bleu_2: 0.280386
Bleu_3: 0.208769
Bleu_4: 0.151880
Beam Search
Beam Search를 사용하더라도 확률이 높은 가지들은 일반적인 경향이
있다
=> 다양성을 높이자!
답변의 완성도와 다양성을 높이자
A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.)
같은 부모를 가진 가지 내에서 랭킹을
Score에서 빼줘서 best K를 재조정한다
Beam Search
하지만 무턱대고 랭킹으로 스코어를 재조정하면
다양성은 올라가더라도 답변의 질 자체가 악화된다
답변의 완성도와 다양성을 높이자
A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.)
BLEU score
Standard
Bleu_1: 0.396104
Bleu_2: 0.280386
Bleu_3: 0.208769
Bleu_4: 0.151880
Diversity
Bleu_1: 0.361878
Bleu_2: 0.205844
Bleu_3: 0.123490
Bleu_4: 0.070867 조정되기 전 해당
beam의 score
조정된 beam의
score
Input의 특징과 이전의 디코딩된 결과물에 따라 다른 크기의 γ 적용 필요
REINFORCE
Generation as Sequential Decision Making
A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.)
Agent
Output
Linear
Decoder
Sibling
Sibling
0, 0.05, 0.1, 0.15, …, 0.85, 0.9, 0.95, 1
0~1 사이에서 21개의 후보 γ 셋을
선별 == Action set
Select Action!
후보 생성 후, 누적
Score 계산
Sibling
Sibling
S - 0.9*2
S - 0.9*1
S - 0.9*1
S - 0.9*2
REINFORCE
Generation as Sequential Decision Making
A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.)
Agent
Output
Linear
Decoder
0, 0.05, 0.1, 0.15, …, 0.85, 0.9, 0.95, 1
0~1 사이에서 21개의 후보 γ 셋을
선별 == Action set
Select Action!
Policy Reward
BLEU, Diversity
Policy를 따라 Response를 생성했을
때 그 결과 BLEU, Diversity 등의
Metric을 최대화하는 방향으로 Policy의
파라미터 업데이트
REINFORCE
Generation as Sequential Decision Making
A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.)
BLEU score
Diversity score
Challenge
1. 여전히 문법적으로 훼손된 답변
2. 문맥을 고려하지 못한 일반적인 답변
3. 새로운 외부지식을 처리하기 위한 비용
Challenge
답변의 품질을 높이기
Turing Test
Challenge
답변의 품질을 높이기
Turing Test
Generator DiscriminatorResponseInput
Human!
Bot!
Reward
Adversarial Learning for Neural Dialogue Generation
REINFORCE
Challenge
답변의 품질을 높이기
Adversarial Learning for Neural Dialogue Generation
Evaluator를 속이는 능력
= 높을 수록 좋음
Evaluator의 성능 지표
(바보가 평가하는 걸 막기
위해)
Challenge
답변의 품질을 높이기
Adversarial Learning for Neural Dialogue Generation
Challenge
문맥을 고려한 답변
1. 대화 History가 아닌 바로 이전의 유저 발언만을 인풋으로 사용하는
모델이기 때문에 문맥을 파악하지 못함.
"대화"를 한다기 보다는 유저의 말에 적절하게 "반응"하는 수준의
봇인셈.
Challenge
문맥을 고려한 답변
1. 대화 History가 아닌 바로 이전의 유저 발언만을 인풋으로 사용하는
모델이기 때문에 문맥을 파악하지 못함.
"대화"를 한다기 보다는 유저의 말에 적절하게 "반응"하는 수준의
봇인셈.
⇒ HRED(https://arxiv.org/abs/1507.02221)
⇒ Memory Network(https://arxiv.org/abs/1503.08895)
⇒ Maximize Mutual Information(https://arxiv.org/abs/1510.03055)
⇒ Reinforcement Learning(https://arxiv.org/abs/1606.01541)
⇒ Adversarial Reinforced Training(https://arxiv.org/abs/1701.06547)
Challenge
문맥을 고려한 답변
싫은데
?
왜요ㅠㅠ
알겠어요
그렇군요
Input
Output
Current Model
Challenge
문맥을 고려한 답변
싫은데
?
왜요ㅠㅠ
알겠어요
그렇군요
이거 어때요?음식추천
어떤 음식
좋아하세요?
Proposed Model
Input
Output
Challenge
문맥을 고려한 답변
왜요ㅠㅠ
알겠어요
그렇군요
???
싫은데
?
대화 Trajectory
데이터가 Pair가 아닌 Dialogue 단위로
필요함.
Problem
Challenge
Memory Network as Dialogue History Encoder
End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding
Challenge
End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding
Decoder
response
Memory Network as Dialogue History Encoder
Challenge
새로운 외부지식에 대한 유연성
어제 축구 누가 이김?
오! 축구 좋죠!
ㅡㅡ
?!!
Challenge
Machine Reading Comprehension
https://rajpurkar.github.io/SQuAD-explorer/
Challenge
Machine Reading Comprehension
http://35.165.153.16:1995/
지문 질문
답은 지문 안에 있다
Challenge
정보 검색, 추출, 재구성
어제 축구 누가
이김?
우리 나라가
이겼네요~
검색
추출
재구성
대한민국
MRC
문봇이 자비스가 되는 그날까지....
들어주셔서 감사합니다!
Q & A

Weitere ähnliche Inhalte

Was ist angesagt?

[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우
NAVER D2
 
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
NAVER Engineering
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
devCAT Studio, NEXON
 

Was ist angesagt? (20)

[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
[부스트캠프 Tech Talk] 진명훈_datasets로 협업하기
 
RoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position EmbeddingRoFormer: Enhanced Transformer with Rotary Position Embedding
RoFormer: Enhanced Transformer with Rotary Position Embedding
 
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
인프콘 2022 - Rust 크로스 플랫폼 프로그래밍
 
Focal loss의 응용(Detection & Classification)
Focal loss의 응용(Detection & Classification)Focal loss의 응용(Detection & Classification)
Focal loss의 응용(Detection & Classification)
 
서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해서버 성능에 대한 정의와 이해
서버 성능에 대한 정의와 이해
 
Python 테스트 시작하기
Python 테스트 시작하기Python 테스트 시작하기
Python 테스트 시작하기
 
[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우[226]대용량 텍스트마이닝 기술 하정우
[226]대용량 텍스트마이닝 기술 하정우
 
성공하는 애자일을 위한 짧은 이야기
성공하는 애자일을 위한 짧은 이야기성공하는 애자일을 위한 짧은 이야기
성공하는 애자일을 위한 짧은 이야기
 
1시간만에 만드는 음성인식 인공지능 챗봇
1시간만에 만드는 음성인식 인공지능 챗봇1시간만에 만드는 음성인식 인공지능 챗봇
1시간만에 만드는 음성인식 인공지능 챗봇
 
신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비신입 SW 개발자 취업 준비
신입 SW 개발자 취업 준비
 
KorQuAD introduction
KorQuAD introductionKorQuAD introduction
KorQuAD introduction
 
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017
 
KorQuAD v2.0 소개
KorQuAD v2.0 소개KorQuAD v2.0 소개
KorQuAD v2.0 소개
 
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
미등록단어 문제 해결을 위한 비지도학습 기반 한국어자연어처리 방법론 및 응용
 
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
 
딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향딥러닝을 이용한 자연어처리의 연구동향
딥러닝을 이용한 자연어처리의 연구동향
 
프론트엔드 코딩 컨벤션 자동화 도구
프론트엔드 코딩 컨벤션 자동화 도구프론트엔드 코딩 컨벤션 자동화 도구
프론트엔드 코딩 컨벤션 자동화 도구
 
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
[야생의 땅: 듀랑고] 서버 아키텍처 Vol. 2 (자막)
 
임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013임태현, 게임 서버 디자인 가이드, NDC2013
임태현, 게임 서버 디자인 가이드, NDC2013
 
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
 

Ähnlich wie Open domain dialogue Chatbot(잡담봇 삽질기)

탐사분석을통한작업장탐지
탐사분석을통한작업장탐지탐사분석을통한작업장탐지
탐사분석을통한작업장탐지
Eun-Jo Lee
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
KoChungWook
 

Ähnlich wie Open domain dialogue Chatbot(잡담봇 삽질기) (20)

댓글 감성 분석 상용화 개발기(Ver. 2)
댓글 감성 분석 상용화 개발기(Ver. 2)댓글 감성 분석 상용화 개발기(Ver. 2)
댓글 감성 분석 상용화 개발기(Ver. 2)
 
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
[NDC2014]쉽게 따라 할 수있는 "꽤" 훌륭한 유저 동향 분석 시스템
 
20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기20170227 파이썬으로 챗봇_만들기
20170227 파이썬으로 챗봇_만들기
 
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
Senti prompt sentiment knowledge enhanced prompt tuning for aspect-based sent...
 
Coding interview
Coding interviewCoding interview
Coding interview
 
Deep Learning for Chatbot (1/4)
Deep Learning for Chatbot (1/4)Deep Learning for Chatbot (1/4)
Deep Learning for Chatbot (1/4)
 
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
[Langcon2020]롯데의 딥러닝 모델은 어떻게 자기소개서를 읽고 있을까?
 
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안
Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안
 
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 너의 기분 이모지(emoji)?
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 너의 기분 이모지(emoji)?제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 너의 기분 이모지(emoji)?
제9회 보아즈(BOAZ) 빅데이터 컨퍼런스 - 너의 기분 이모지(emoji)?
 
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
머신러닝으로 쏟아지는 유저 CS 답변하기 DEVIEW 2017
 
Deep learning 기반TmapPOI 추천기술개발사례
Deep learning 기반TmapPOI 추천기술개발사례Deep learning 기반TmapPOI 추천기술개발사례
Deep learning 기반TmapPOI 추천기술개발사례
 
Chapter 11 Practical Methodology
Chapter 11 Practical MethodologyChapter 11 Practical Methodology
Chapter 11 Practical Methodology
 
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
현업 엔지니어의 시각에서 본 알고리즘 공부의 장점과 단점
 
소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출소프트웨어 2.0을 활용한 게임 어뷰징 검출
소프트웨어 2.0을 활용한 게임 어뷰징 검출
 
탐사분석을통한작업장탐지
탐사분석을통한작업장탐지탐사분석을통한작업장탐지
탐사분석을통한작업장탐지
 
나는 왜 TDD에 집착하는가?
나는 왜 TDD에 집착하는가?나는 왜 TDD에 집착하는가?
나는 왜 TDD에 집착하는가?
 
이산치수학 Project7
이산치수학 Project7이산치수학 Project7
이산치수학 Project7
 
마인즈랩 통합 VOC 관리 솔루션 소개_20151030
마인즈랩 통합 VOC 관리 솔루션 소개_20151030마인즈랩 통합 VOC 관리 솔루션 소개_20151030
마인즈랩 통합 VOC 관리 솔루션 소개_20151030
 
NDC17 장창완(최종)
NDC17 장창완(최종)NDC17 장창완(최종)
NDC17 장창완(최종)
 
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기<Little Big Data #1> 한국어 채팅 데이터로  머신러닝 하기
<Little Big Data #1> 한국어 채팅 데이터로 머신러닝 하기
 

Mehr von NAVER Engineering

Mehr von NAVER Engineering (20)

React vac pattern
React vac patternReact vac pattern
React vac pattern
 
디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX디자인 시스템에 직방 ZUIX
디자인 시스템에 직방 ZUIX
 
진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)진화하는 디자인 시스템(걸음마 편)
진화하는 디자인 시스템(걸음마 편)
 
서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트서비스 운영을 위한 디자인시스템 프로젝트
서비스 운영을 위한 디자인시스템 프로젝트
 
BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호BPL(Banksalad Product Language) 무야호
BPL(Banksalad Product Language) 무야호
 
이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라이번 생에 디자인 시스템은 처음이라
이번 생에 디자인 시스템은 처음이라
 
날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기날고 있는 여러 비행기 넘나 들며 정비하기
날고 있는 여러 비행기 넘나 들며 정비하기
 
쏘카프레임 구축 배경과 과정
 쏘카프레임 구축 배경과 과정 쏘카프레임 구축 배경과 과정
쏘카프레임 구축 배경과 과정
 
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
플랫폼 디자이너 없이 디자인 시스템을 구축하는 프로덕트 디자이너의 우당탕탕 고통 연대기
 
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
200820 NAVER TECH CONCERT 15_Code Review is Horse(코드리뷰는 말이야)(feat.Latte)
 
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
200819 NAVER TECH CONCERT 03_화려한 코루틴이 내 앱을 감싸네! 코루틴으로 작성해보는 깔끔한 비동기 코드
 
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
200819 NAVER TECH CONCERT 10_맥북에서도 아이맥프로에서 빌드하는 것처럼 빌드 속도 빠르게 하기
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
 
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
200819 NAVER TECH CONCERT 05_모르면 손해보는 Android 디버깅/분석 꿀팁 대방출
 
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
200819 NAVER TECH CONCERT 09_Case.xcodeproj - 좋은 동료로 거듭나기 위한 노하우
 
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
200820 NAVER TECH CONCERT 14_야 너두 할 수 있어. 비전공자, COBOL 개발자를 거쳐 네이버에서 FE 개발하게 된...
 
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
200820 NAVER TECH CONCERT 13_네이버에서 오픈 소스 개발을 통해 성장하는 방법
 
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
200820 NAVER TECH CONCERT 12_상반기 네이버 인턴을 돌아보며
 
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
200820 NAVER TECH CONCERT 11_빠르게 성장하는 슈퍼루키로 거듭나기
 
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
200819 NAVER TECH CONCERT 07_신입 iOS 개발자 개발업무 적응기
 

Open domain dialogue Chatbot(잡담봇 삽질기)

  • 1. 잡담봇 삽질기 (Open Domain Dialogue Chatbot) 발표자 김성동
  • 2. 목차 1. Introduction 2. Seq2Seq with Attention model 3. Data Augmentation 4. Chit-Chat Intent 5. Semantic Parsing 6. Anomaly Detection 7. Beam Search 8. REINFORCE 9. Challenge
  • 3. Introduction 이름 : 김성동 소속 : 텍스트팩토리 NLP 연구원 연락처 : tjdehd1222@gmail.com 깃허브 : https://github.com/DSKSD
  • 8. Introduction 잡담하길 원하는 유저들 뭐함 뭐해 뭐해요? 나 슬퍼ㅜㅜ 나 이쁘지? 나는 누구게ㅎㅎ 나랑 놀자 그냥 너랑 잡담만 하고 싶어 심심이 같은건가? … … … + 엄청난 양의 비속어들
  • 9. Seq2Seq with Attention Model 모델 설명 ㅎㅇ 넌 누구 니 Attention GO 저는 문봇 입니 다 저는 문봇 입니다 EOS
  • 10. Seq2Seq with Attention Model 트레이닝 데이터 부재 1. (User, Bot) pair의 부재. 즉, Seq2Seq를 훈련시킬 데이터가 없다 ⇒ Twitter, Movie Subtitle, Community에서 데이터를 모아볼까?! ⇒ No! - 문봇의 Personality를 해칠 수도 있다 - 서비스 상 해서는 안 될 위험한 발언들을 제어할 수 없다 - 수렴시키기 어렵다
  • 11. Seq2Seq with Attention Model 트레이닝 데이터 부재 1. (User, Bot) pair의 부재. 즉, Seq2Seq를 훈련시킬 데이터가 없다 ⇒ Twitter, Movie Subtitle, Community에서 데이터를 모아볼까?! ⇒ No! - 문봇의 Personality를 해칠 수도 있다 - 서비스 상 해서는 안 될 위험한 발언들을 제어할 수 없다 - 수렴시키기 어렵다
  • 12. Seq2Seq with Attention Model 트레이닝 데이터 부재 1. (User, Bot) pair의 부재. 즉, Seq2Seq를 훈련시킬 데이터가 없다 ⇒ 일단 직접 대답을 달자.. aka 노가다 1주간 약 2~3000문장에 직접 답을 달았음. Open Domain Dialogue를 하기엔 터무니 없이 적은 양임. ㅠㅠ ● 답변의 일관성을 유지한다 ⇒ Personality, Coherence ● 봇 답변의 Space(사용 어휘)를 제한한다 ⇒ 수렴 is good.
  • 13. Seq2Seq with Attention Model 2~3000문장으로 트레이닝 욕 욕 일반적인 답변 및 동문서답 문법적 오류 및 맥락 고려 x Problem Problem
  • 14. Data Augmentation 과적합으로 인한 일반화 능력 X 1. 데이터가 너무 적어서 과적합 발생. 2. 유저의 말에 오타가 많다. ⇒ 데이터를 더 많이 모은다? ⇒ Yes, 매일 2시간씩 답변 달았음 (하루에 2~300개 정도?) 하지만 시간 및 비용이 너무 많이 든다.. ⇒ 데이터를 불리자. Data Augmentation! How to?
  • 15. Data Augmentation 과적합으로 인한 일반화 능력 X 안녕하세요==안여하세여ㅛ==안녕하세ㅇ h ... x = 안녕하세요 (오타 없는 깔끔한 Input) C(x) = 안여하세여ㅛ (오타가 발생한 noisy Input) x^ = C(x)를 인코딩한 후 다시 디코딩한 결과 UNSUPERVISED MACHINE TRANSLATION USING MONOLINGUAL CORPORA ONLY (2017, Lample at el.) Denoising Auto Encoder
  • 16. Data Augmentation 과적합으로 인한 일반화 능력 X UNSUPERVISED MACHINE TRANSLATION USING MONOLINGUAL CORPORA ONLY (2017, Lample at el.) 0.1의 확률로 해당 단어(토큰) 지우기 단어(토큰) 랜덤 셔플 (원문과의 차이가 3보다 적게 나도록)
  • 17. Data Augmentation 과적합으로 인한 일반화 능력 X 0.1의 확률로 해당 단어(토큰) 지우기 단어(토큰) 랜덤 셔플 (원문과의 차이가 3보다 적게 나도록) 일정 확률로, 잘못 눌리기 쉬운 Character로 대체 ㅐ : {ㅒ,o,O,ㅑ,ㅔ,ㅣ,9,0,}
  • 18. Data Augmentation 과적합으로 인한 일반화 능력 X 0.1의 확률로 해당 단어(토큰) 지우기 단어(토큰) 랜덤 셔플 (원문과의 차이가 3보다 적게 나도록) 일정 확률로, 잘못 눌리기 쉬운 Character로 대체 x = 네 수고하셨습니다 C(x) = 네 수고 하셨 습 S l 다 네 수고 하 습니다 ... 네 감사합니다~!! Source Target
  • 19. Data Augmentation 과적합으로 인한 일반화 능력 X 데이터 수 x 3~4 ⇒ 약 50000개의 문장 오타 등 비슷한 의미를 지칭하는 다른 표현에 좀 더 강건 Solved 여전히 문맥고려 X 동문서답 Problem
  • 20. Chit-Chat Intent 외부 지식을 요구하는 답변 1. OOV(Out of Voca)에 의한 잘못된 대답. 2. 외부 지식(World Knowledge)을 요구하는 유저 발언 딥러닝이 뭐야? 빈지노의 본명은? 강남역 맛집 좀 알려줘 1+1=? 볼만한 영화 좀 찾아줘 영어공부 잘하는 법 데이트하기 좋은 장소 어디지 어제 축구 경기 결과 좀 ... OPEN DOMAIN !!
  • 21. Chit-Chat Intent 외부 지식을 요구하는 답변 1. OOV(Out of Voca)에 의한 잘못된 대답. 2. 외부 지식(World Knowledge)을 요구하는 유저 발언 Seq2Seq는 Input 문장만을 보고 가장 그럴싸한 답변을 만들어내기 때문에 외부지식에 접근하여 맞는 답변을 생성하지 못함 Problem
  • 22. Chit-Chat Intent 외부 지식을 요구하는 답변 A Deep Reinforcement Learning Chatbot(2017, Serban at el.) MILABOT for Amazon Alexa Prize competition The system consists of an ensemble of natural language generation and retrieval models, including template-based models, bag-of-words models, sequence-to-sequence neural network and latent variable neural network models
  • 23. Chit-Chat Intent 외부 지식을 요구하는 답변 1. OOV(Out of Voca)에 의한 잘못된 대답. 2. 외부 지식(World Knowledge)을 요구하는 유저 발언 ⇒ Copy Mechanism 사용 ⇒ Chit-Chat Intent를 분류하여 Seq2Seq로 답하기 어려운(외부지식을 요하는) 질문에 다른 방식을 취하자 ex> 1. What : ~가 뭐야? 알아? 설명해줘 .... 2. Howto : ~하는 법, ~ 어떻게 해? .... 3. Recom : ~ 추천해줘 .... 4. Request : ~해줘, ~해봐 .... 5. Issue : ~에 대해 어떻게 생각해?, ~ 요즘 재밌대? .... … ...
  • 24. Chit-Chat Intent 외부 지식을 요구하는 답변 Chit-Chat Intent Classifier (데이터가 없다면 일단 정규표현식) User Message What Howto Recom ... ... Other Response 외부 지식 외부지식 처리 api
  • 25. Chit-Chat Intent 외부 지식을 요구하는 답변 Chit-Chat Intent Classifier (데이터가 없다면 일단 정규표현식) User Message What Howto Recom ... ... Other Response Seq2Seq
  • 26. Chit-Chat Intent 외부 지식을 요구하는 답변 외부지식을 요하는 질문에도 어느 정도 대답할 수 있게 됨 Solved
  • 27. Chit-Chat Intent 외부 지식을 요구하는 답변 외부지식 처리를 위한 또다른 기능을 추가 구현하지 않으면 여전히 대답할 수 없음 외부지식+문맥을 통합하여 답하지 못함 Problem
  • 29. Semantic Parsing 외부지식 처리 Example: WikiQA 빈지노의 본명이 뭐야? Lambda : What?agent="빈지노"&property="real_name" 자연어 쿼리 논리적 Form Semantic DB 임성빈 Semantic Parsing
  • 30. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 1. 심각한(용인하기 어려운) 문법적 오류 2. 챗봇이 해서는 안되는 (혹은 서비스 상) 위험한 발언 욕 욕
  • 31. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 1. 심각한(용인하기 어려운) 문법적 오류 2. 챗봇이 해서는 안되는 (혹은 서비스 상) 위험한 발언 ⇒ 위험한 상황에 대한 답변을 인위적으로 많이 집어 넣는다. ⇒ 금지어 사전을 관리한다 ⇒ TODO...
  • 32. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 1. 심각한(용인하기 어려운) 문법적 오류 2. 챗봇이 해서는 안되는 (혹은 서비스 상) 위험한 발언 ⇒ 철자 교정기를 이용한다 : 생성된 문장이 복구하기 힘들 정도로 훼손되어 있음.. ⇒ DAE(Denoising Auto Encoder) : 시도해볼만 함? (Not Yet) ⇒ Anomaly Detection : 문법적으로 매우 불량한 문장을 탐지 후, 모르쇠로 일관하자 문법적으로 매우 불량한 케이스 예시 ex) 헉 가. 어떻게. 했헉? ex) 제가. 저 나름 하는 중 잘못 ex) 헿 봇재미 있우리 ex) 무슨 가있어요?
  • 33. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 Classification 문제로 보고 0이면 정상 1이면 비정상으로 판별 Data?! ⇒ Noisy function C(x) 응용 C(x) = 문장 토큰 중 일부를 지우거나 임의의 토큰을 추가 후 섞는다
  • 34. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 x x x x last hidden σ(Wx+b) P(y=1;x) 비정상적인 답변일 확률 if h(x) >= 0.5, predict y="1" if h(x) < 0.5, predict y="0" Threshold가 0.5로 설정되면 문봇의 조금 어설프지만 창의력 넘치는 답변을 막을 수도 있기 때문에 0.6~0.8 정도의 더 높은 Threshold 사용 RNN Classifier
  • 35. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 완전히 이 이슈를 해결하지는 못함… 문법적으로 어설프지만 그럴싸한 문장과 정말 해괴망측한 문장을 구분하는 것이 애매함.
  • 36. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 POS 태그로 변환한 후, CNN Classifier를 사용해보자! NP JX NP+JKG NNB JKB NNG NNB VCP EC Convolutional Neural Networks for Sentence Classification (2014, Kim)
  • 37. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 문법적으로 정상인 문장과 비정상인 문장의 POS 태그열은 그 패턴이 확연하게 차이가 날 것이라는 가정 NP JX NP+JKG NNB JKB NNG NNB VCP EC 저 도 제 나름 대로 노력 중 이 라구요 제 가 . 저 나름 하 는 중 잘못 NP JKS SF MM NNB VV ETM NNB MAG 정상 비정상
  • 38. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 CNN을 text에 적용하면 Phrase level의 특징을 잘 캐치할 수 있음 (bigram~ngram) NP JX NP+JKG NNB JKB NNG NNB VCP EC 정상! 비정상
  • 39. Anomaly Detection 문법적, 의미적으로 불량한 답변 필터링 비정상으로 판별돼 필터링된 답변 하지만 이는 서비스를 하기 위한 최소한의 조치일뿐 근본적인 해결책은 아님! Problem
  • 40. Beam Search 답변의 완성도와 다양성을 높이자 1. greedy decoding의 한계(현재 step의 likelihood만 최대화) 2. 네 맞아요, 죄송해요, 어렵군요 등의 일반적인 답변 GO 네 알겠 습니 다 네 알겠 습니다 EOS argmax argmax argmax argmax 심심해 놀자
  • 41. Beam Search start 네 좋아 알겠 말씀 요 해 습니다 ~ !! 대화 해요 할 문장 전체의 Joint Probability 고려해서 디코딩! 모든 케이스를 고려할 수는 없기에 한 스텝에 K개의 노드(Beam)만 유지한다 답변의 완성도와 다양성을 높이자
  • 42. Beam Search Beam Search를 이용한 답변이 좀 더 완성도 있음 답변의 완성도와 다양성을 높이자 BLEU score Greedy Bleu_1: 0.423387 Bleu_2: 0.285907 Bleu_3: 0.189564 Bleu_4: 0.105020 Beam search Bleu_1: 0.396104 Bleu_2: 0.280386 Bleu_3: 0.208769 Bleu_4: 0.151880
  • 43. Beam Search Beam Search를 사용하더라도 확률이 높은 가지들은 일반적인 경향이 있다 => 다양성을 높이자! 답변의 완성도와 다양성을 높이자 A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.) 같은 부모를 가진 가지 내에서 랭킹을 Score에서 빼줘서 best K를 재조정한다
  • 44. Beam Search 하지만 무턱대고 랭킹으로 스코어를 재조정하면 다양성은 올라가더라도 답변의 질 자체가 악화된다 답변의 완성도와 다양성을 높이자 A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.) BLEU score Standard Bleu_1: 0.396104 Bleu_2: 0.280386 Bleu_3: 0.208769 Bleu_4: 0.151880 Diversity Bleu_1: 0.361878 Bleu_2: 0.205844 Bleu_3: 0.123490 Bleu_4: 0.070867 조정되기 전 해당 beam의 score 조정된 beam의 score Input의 특징과 이전의 디코딩된 결과물에 따라 다른 크기의 γ 적용 필요
  • 45. REINFORCE Generation as Sequential Decision Making A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.) Agent Output Linear Decoder Sibling Sibling 0, 0.05, 0.1, 0.15, …, 0.85, 0.9, 0.95, 1 0~1 사이에서 21개의 후보 γ 셋을 선별 == Action set Select Action! 후보 생성 후, 누적 Score 계산 Sibling Sibling S - 0.9*2 S - 0.9*1 S - 0.9*1 S - 0.9*2
  • 46. REINFORCE Generation as Sequential Decision Making A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.) Agent Output Linear Decoder 0, 0.05, 0.1, 0.15, …, 0.85, 0.9, 0.95, 1 0~1 사이에서 21개의 후보 γ 셋을 선별 == Action set Select Action! Policy Reward BLEU, Diversity Policy를 따라 Response를 생성했을 때 그 결과 BLEU, Diversity 등의 Metric을 최대화하는 방향으로 Policy의 파라미터 업데이트
  • 47. REINFORCE Generation as Sequential Decision Making A Simple, Fast Diverse Decoding Algorithm for Neural Generation (2016, Li et al.) BLEU score Diversity score
  • 48. Challenge 1. 여전히 문법적으로 훼손된 답변 2. 문맥을 고려하지 못한 일반적인 답변 3. 새로운 외부지식을 처리하기 위한 비용
  • 50. Challenge 답변의 품질을 높이기 Turing Test Generator DiscriminatorResponseInput Human! Bot! Reward Adversarial Learning for Neural Dialogue Generation REINFORCE
  • 51. Challenge 답변의 품질을 높이기 Adversarial Learning for Neural Dialogue Generation Evaluator를 속이는 능력 = 높을 수록 좋음 Evaluator의 성능 지표 (바보가 평가하는 걸 막기 위해)
  • 52. Challenge 답변의 품질을 높이기 Adversarial Learning for Neural Dialogue Generation
  • 53. Challenge 문맥을 고려한 답변 1. 대화 History가 아닌 바로 이전의 유저 발언만을 인풋으로 사용하는 모델이기 때문에 문맥을 파악하지 못함. "대화"를 한다기 보다는 유저의 말에 적절하게 "반응"하는 수준의 봇인셈.
  • 54. Challenge 문맥을 고려한 답변 1. 대화 History가 아닌 바로 이전의 유저 발언만을 인풋으로 사용하는 모델이기 때문에 문맥을 파악하지 못함. "대화"를 한다기 보다는 유저의 말에 적절하게 "반응"하는 수준의 봇인셈. ⇒ HRED(https://arxiv.org/abs/1507.02221) ⇒ Memory Network(https://arxiv.org/abs/1503.08895) ⇒ Maximize Mutual Information(https://arxiv.org/abs/1510.03055) ⇒ Reinforcement Learning(https://arxiv.org/abs/1606.01541) ⇒ Adversarial Reinforced Training(https://arxiv.org/abs/1701.06547)
  • 56. Challenge 문맥을 고려한 답변 싫은데 ? 왜요ㅠㅠ 알겠어요 그렇군요 이거 어때요?음식추천 어떤 음식 좋아하세요? Proposed Model Input Output
  • 57. Challenge 문맥을 고려한 답변 왜요ㅠㅠ 알겠어요 그렇군요 ??? 싫은데 ? 대화 Trajectory 데이터가 Pair가 아닌 Dialogue 단위로 필요함. Problem
  • 58. Challenge Memory Network as Dialogue History Encoder End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding
  • 59. Challenge End-to-End Memory Networks with Knowledge Carryover for Multi-Turn Spoken Language Understanding Decoder response Memory Network as Dialogue History Encoder
  • 60. Challenge 새로운 외부지식에 대한 유연성 어제 축구 누가 이김? 오! 축구 좋죠! ㅡㅡ ?!!
  • 63. Challenge 정보 검색, 추출, 재구성 어제 축구 누가 이김? 우리 나라가 이겼네요~ 검색 추출 재구성 대한민국 MRC
  • 64. 문봇이 자비스가 되는 그날까지.... 들어주셔서 감사합니다! Q & A