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
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
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
정상!
비정상
40. Beam Search
답변의 완성도와 다양성을 높이자
1. greedy decoding의 한계(현재 step의 likelihood만 최대화)
2. 네 맞아요, 죄송해요, 어렵군요 등의 일반적인 답변
GO 네 알겠
습니
다
네 알겠 습니다 EOS
argmax argmax argmax argmax
심심해 놀자
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
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)
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