Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.

Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안

2 146 vues

Publié le

Chatbot 대화모델 엔진 구조
Clova Chatbot Extension 가이드
Chatbot 개발 최적화 방안

Publié dans : Technologie
  • Soyez le premier à commenter

Clova Tech Summit 2: 대화모델 엔진 구조와 Chatbot 개발 최적화 방안

  1. 1. Clova Extension – 대화모델 엔진 구조와 챗봇 개발 최적화 방안 Clova 챗봇 딥러닝 언어 모델 개발 신성진
  2. 2. Contents 1 2 3 4 Overview Clova 대화모델 엔진 구조 Clova Chatbot Extension 가이드 챗봇 개발 최적화 방안
  3. 3. 1 Overview
  4. 4. 1. Overview Clova Extension Kit (CEK) Chatbot을 개발하고, 여러 챗봇들을 출시하면서 겪었던 경험을 공유 네이버 고객센터 챗봇 (현 베타 서비스 8개 + @) 이벤트 챗봇 Clova 한국어 대화 2017.12월 첫 출시 이후로 현재까지 30개 이상의 서비스와 PoC를 출시 / 경험 각종 제휴 PoC 및 서비스 - Chatbot Framework 구축 : 대화 Framework 및 대화 모델 중 딥러닝 활용 모델 소개 - CEK를 통한 Chatbot 생성 가이드 : 도메인 생성 부터 서비스 Platform 연동까지 가이드 - Chatbot을 개발 최적화 : 실제 서비스를 론칭하기 까지 프로젝트 사례와, 데이터 활용 팁 공유
  5. 5. 1. Overview Deep Learning to Natural Language Processing 언어 데이터는 의미가 주변 단어에 의존하여 생성되기 때문에 Feature 추출이 어려움 + 각 언어마다 문법과 구조가 달라, 활용 할 수 있는 데이터도 제한적…. (No MNIST, CIFAR-10 Dataset for KOREAN NLP….) 자연어처리가 어려운 이유…. Image Text Image 고양이, 강아지 사진과 같은 각각의 데이터에 고유의 의미 값이 있음 Text 각 텍스트 단어에 대한 데이터에 고유의 의미가 없고, 주변 단어에 의해서 의미를 부여해야 함 (Unstable) 단어의 주변을 보면 그 단어를 안다. 단어 의 주변 을 보면 그 단어 안다를 단어[명사]: 분리하여 자립적으로 쓸 수 있는 말이나 이에 준하는 말 단어: ? 의: ? 주변: ?
  6. 6. 1. Overview Deep Learning to Natural Language Processing 컴퓨터의 성능, 많은 데이터와 알고리즘의 발전으로 개선 번역 인공지능 스피커 대화형 챗봇 대화를 ‘잘 알아듣게’ 하려면?
  7. 7. 2 CEK 대화모델 엔진 구조
  8. 8. 2. CEK 대화모델 엔진 구조 2.1 Chatbot Framework Query Answer Query Pre-processing Query classification Chatbot Search Engine User Guide rama chil akella kaa 언어특징 추출 라이브러리 형태소 분석 개체명 인식 raksha vector representaion 멀티플랫폼 서비스 엔진 다양한 경로로 인입된 쿼리를 실시간 처리해 Clova, 라인 등 외부 메신저 플랫폼, 웹에 서비 스 쿼리 분류기 대화인지 여부 와 도메인 판정 챗봇 모델 답변 생성 baloo 전처리 라이브러리 분석된 언어 특징 을 대화 모델이 이해 가능한 형태로 변 경 Query Feature Extraction Chat & Voice Platform
  9. 9. 2. CEK 대화모델 엔진 구조 2.1 Chatbot Framework NLP Query Classifier Chatbot NAS Variational Models Answering Model Optimization ML Architecture External Model External Model Query Result Answer Output Output 챗봇 아키텍쳐 지속적인 Feature 및 모델 개선, 추가에 대한 “서비스”가 가능한 유연한 구조로 설계
  10. 10. 2. CEK 대화모델 엔진 구조 2.2 Model Workflow Query Tokenization NE Tagging chat? Chatbot model Naver search Sentence embedding model Compute score Compute score ensemble>Threshold?Answer “답할 수 없는 말이에요” no yes yes no 답변 생성 절차 쿼리의 언어적 특징을 추출, 해당 쿼리가 대 화(chat)일 경우 이를 챗봇과 문장 임베딩 두 모델에 넣어 결과를 산출하고 score 계산, 이 점수가 threshold보다 높을 경우 답변
  11. 11. 2. CEK 대화모델 엔진 구조 2.3 Dialogue Component Sentence splitting Linguistic feature extraction Tokenization Part-Of-Speech Tagging Named Entity Tagging Vector Representation Naïve Bayes Query classification Feed-Forward NN GAN Ensemble Model Long Short-Term Memory Chatbot Model Gated Recurrent Unit Cell N-hot representation Bidirectional Encoder Architecture Embedding Sharing Multiplicative Attention Additive Attention Attention Highway Network 질의, 응답을 전처리한 후 형태소, 개체명 등 언어적 특징을 뽑아 벡터로 표현 N-hot, FastText, TAPI… 질의 의도가 대화(chat)인 지 검색(search)인지 분류하고 대화라면 도메인 판정 질의 시퀀스가 주어졌을 때 답변 시퀀스를 생성 블로그 만드는법 알려줘 블로그/<Noun>, 만드는/<Verb>, 법<Noun> 알려/<VERB>, 줘/<VERB> 블로그는 별도의 개설 절차가 없으며 … Vector Space
  12. 12. 2. CEK 대화모델 엔진 구조 2.4 Base Model Seq2Seq-Based Model Google의 GMNT에서 아이디어를 착안하여 한국어 및 대화형 데이터에 최적인 대화 모델 설계 *GMNT (Google’s Neural Machine Translation): https://arxiv.org/pdf/1609.08144.pdf
  13. 13. 2. CEK 대화모델 엔진 구조 2.5 Model Architecture GRU 1 2Cell Bi-directional LSTM + Highway Network 4 Embedding Sharing 𝑤"#$ … 𝑤"#& 𝑤'#$ …𝑤'#$<go> …𝑤'#( 1 5 3 4 4 62 7 8 LSTM Bi-LSTM Residual Block 6 Query Encoding Vector 7 Query Encoder 8 Answer Decoder 5 N-hot representation Additional Research Convolutional S2S DSSMAdditive Multiplicative Attention Mechanism3
  14. 14. 2. CEK 대화모델 엔진 구조 2.6 N-hot vector ∑ Hidde n=128 Token one-hot d=# of vocabulary POS tag one-hot d=# of tag Token endingone-hot d=# of ending Token EmbeddingMatrix POS tag EmbeddingMatrix Token ending EmbeddingMatrix Embedding matrix 구축 (1) Uniform Random (2) Xavier Initialization (3) Pre-trained word vectors 배경 한국어/일본어는 조사, 어미가 발달. 토크나이즈 작업 생략하거나 토 큰의 기본형만 학습에 반영할 경우 모델 성능 저하 경향. 개요 기본형, 품사, 조사와 어미, 개체명을 모두 포함하는 representation 기법. 기법 기본형, 품사, 조사 + 개체명에 해당하는 one-hot-vector를 만들고, 이를 각각 embedding matrix와 내적한 뒤 셋을 합쳐 chatbot model의 입력값 으로 넣음 One-hot-vector 생성 POS Tagging : 네이버 다국어 형태소 분석기 NE Tagging : 사전, 패턴, 모델 기반 NE tag one-hot d=# of tag NE tag EmbeddingMatrix
  15. 15. 2. CEK 대화모델 엔진 구조 2.7 Prediction Flow Initiator Model Escape Model State-based Model Dialogue History Utterance Model Query Answer Chatbot Multi-turn Detector Template-based Model Goal-oriented Model Response Selector
  16. 16. 3 Clova Chatbot Extension 가이드
  17. 17. 3. Clova Chatbot Extension 가이드 3-1. 도메인 생성: Extension 생성 4 / 30 https://developers.naver.com/console/clova/ -> 새로운 extention 생성 -> Chatbot을 선택하여 만들기 선택
  18. 18. 3. Clova Chatbot Extension 가이드 3-2. 기본 설정: 메세지 인사 메세지, 답변 불가 및 거부에 대한 메세지 설정 금칙어 입력
  19. 19. 3. Clova Chatbot Extension 가이드 3-2. 기본 설정: 답변 옵션 객관식 형태 답변 생성 답변 생성에 대한 Action 지정 (URL연동 기능)
  20. 20. 3. Clova Chatbot Extension 가이드 3-2. 기본 설정: 언어 모델 답변에 대한 정확도 허용치 설정 각 모델의 앙상블 비율을 설정 고객의 쿼리에서 일정 비율이상 답변 거부
  21. 21. 3. Clova Chatbot Extension 가이드 3-3. 기본 설정: 채널
  22. 22. 3. Clova Chatbot Extension 가이드 3-4. 대화 모델: 사용자 발화 입력 학습에 필요한 대화셋 생성 EX) #등록 오류 메세지 Q1: 등록 시 오류 메세지가 노출되요. Q2: 등록 버튼을 클릭해도 반응이 없어요 A: 포스트에 잘못된 html 태그 혹은 브라우저 의 오류로 등록이 …..
  23. 23. 3. Clova Chatbot Extension 가이드 3-4. 대화 모델: 사용자 발화 입력 (개체명) Entity (개체명)을 입력
  24. 24. 3. Clova Chatbot Extension 가이드 3-4. 대화 모델: 사용자 발화 입력 (개체명) 각 문장에 대한 Custom 개체명 사전 생성
  25. 25. 3. Clova Chatbot Extension 가이드 3-4. 대화 모델: 사용자 발화 입력 (탬플릿 추가) 기존에 보유하고 있는 탬플릿을 활용 하여, 반복작업을 최소화
  26. 26. 3. Clova Chatbot Extension 가이드 3-5. 챗봇 학습하기: 테스트 대화 테스트 기능 서비스 연동 이전에, 설정 된 옵션 값들을 확인하며, 학습 결과에 대한 성능 검증
  27. 27. 3. Clova Chatbot Extension 가이드 3-4. 챗봇 학습하기: 대화 기록 대화 기록을 확인
  28. 28. 3. Clova Chatbot Extension 가이드 3-5. 챗봇 연동 엔진 학습 학습 (빌드)가 완료 된 이후, 원하는 Platform에 연동해서 활 용 블로그 고객센터 TalkTalk 연동의 예)
  29. 29. 4. Chatbot 개발 최적화 방안
  30. 30. 4. Chatbot 개발 최적화 방안 4-1. Data, Data, Data! 우리도 챗봇을 서비스에 적용하고 싶은데... 데이터의 양과 품질 특정 비지니스의 목적을 위한 데이터는 일반적으로 존재하지 않음 초기 데이터 생성을 위해서 Part Time과 같은 인력이라도 필요 (가장 좋은 데이터는 실제 고객들의 로그 데이터) 제한된 시간안에 현명하게 데이터를 생성하는 것이 필요 (Domain Expert, 기획, PT 등) 시나리오 여기 있어요 (데이터는 없어요) 데이터 생성이 필요해요? (인터넷에 많은데, 인공지능이 알아서...) 서비스 적용 준비 됬나요? (개떡같이 말해도 찰떡같이 알아듣는 챗봇을 원해요)
  31. 31. 4. Chatbot 개발 최적화 방안 4-1. Data, Data, Data! Data Coordinator :고객센터 도메인 관리자 (실제 상담 및 문의 담당) 고객센터 스마트봇 Part Time :데이터 생성, 검수 및 평가 네이버 고객센터 :기획 및 도메인 정책 플랫폼 융합 :서비스 연동 학습 데이터 전달 및 보강 자체 지표 설정 및 평가 선 순환의 사례 Clova Chatbot Framework : 모델 학습, 개선, 튜닝 생성 데이터 관리 및 검토 로그 분류 및 전달 서비스 배포
  32. 32. 4. Chatbot 개발 최적화 방안 4-1. Data, Data, Data! 니 이름이 뭐야? 데이터 양이 어느정도 쌓이니 꽤 유명한데 아직 모르시나 봐요 전 언제 어디서든 도움을 주는 친구 클로바입니다. 식사는 언제 하실 꺼에요? 당신이 먹는 것만 봐도 배가 불러요 와이파이 한 조각을 먹고 왔답니다. 여행가고 싶어 여행은 인생의 좋은 경험이 될 거에요 바보는 방황을 하고 현명한 사람은 여행을 떠난다고 해요 AI 가 생성한 대화를 찾아보세요
  33. 33. 4. Chatbot 개발 최적화 방안 4-1. Data, Data, Data! 오늘 달리기 시합 있어 커피 한잔의 여유는 필요하죠 건강을 위해 운동을 해 보세요 어이 상실 네, 부르셨나요 누구나 실수는 할 수 있어요 지금 이 순간 당신과 함께라면 항상 행복해요 보고 싶은 사람이 있다는 건 좋은 일이에요 더 잘 대답을 하는 경우도 ... AI 가 생성한 대화를 찾아보세요
  34. 34. 4. Chatbot 개발 최적화 방안 4-2. Data 입력 및 학습에 대한 Tip 1. 조사의 활용 여부 예) 오늘 날씨 어때? vs. 오늘의 날씨는 어때? 예) 피자 주문해줘 vs. 피자를 주문해줘 조사의 여부에 큰 영향이 없음 하지만 다음과 같은 경우에는? 밥을 먹었어/ 밥만 먹었어/ 밥도 먹었어/ 밥마저 먹었어/ 밥은 먹었어/ 밥이나 먹었어/ 밥까지 먹었어 ….
  35. 35. 4. Chatbot 개발 최적화 방안 4-2. Data 입력 및 학습에 대한 Tip 1. 조사의 활용 여부 기본적으로 N-hot 구조를 활용하여, 조사 등과 같은 정보를 활용합니다. POS정보Token Index EOMI 정보 [밥 을 먹다] [N, JOSA, VERB] [0, 0, 다] ∑ Hidde n=128 Token one-hot d=# of vocabulary POS tag one-hot d=# of tag Token endingone-hot d=# of ending Token EmbeddingMatrix POS tag EmbeddingMatrix Token ending EmbeddingMatrix
  36. 36. 4. Chatbot 개발 최적화 방안 4-2. Data 입력 및 학습에 대한 Tip 2. 용언(동사, 형용사)의 어간이 같고, 어미가 다른 경우 EX) 점심 뭐 먹었니? 점심 뭐 먹어? 원형 복원 (Lemmatization )을 활용 점심 뭐 먹었니? 점심 뭐 먹어? 점심 뭐 먹다
  37. 37. 4. Chatbot 개발 최적화 방안 원형 복원 (Lemmatization ) 을 적용한 챗봇 테스트 블로그 어떻다 만들다 블로그 를 어떻다 만들다 요 블로그 만들다 싶다 요 일상대화 도메인에서는 큰 효과가 없었지만, 고객센터의 경우는 기존 대비 5% 이상 품질 증가 원형 복원의 예) 4-2. Data 입력 및 학습에 대한 Tip
  38. 38. 4. Chatbot 개발 최적화 방안 4-2. Data 입력 및 학습에 대한 Tip 3. 어쩔 수 없이 초반에 데이터가 적은 경우에는? 학습을 한다고 해도, 실 테스트 시 단어의 Unknown 비율이 높거나 판단 요소가 적어, 구분이 어려움 오늘의 날씨는? – 날씨 알려줘 = 모델 Score 0.93 오늘의 날씨는? – 더운 날씨에 음식 추천 = 모델 Score 0.89 + @ 데이터 추가 학습 유사한 단어를 사용하지만 다른 문장의 경우, 모델이 판단 할 수 있는 기준이 늘어남 (문장을 구분 할 수 있는 단어의 요소들이 증가) 오늘의 날씨는? – 날씨 알려줘 = 모델 Score: 0.94 오늘의 날씨는? – 더운 날씨에 음식 추천 = 모델 Score: 0.79 학습 데이터와 관련 없는 학습 셋 날씨 Domain 날씨 Domain 주문 Domain
  39. 39. 4. Chatbot 개발 최적화 방안 4-3. 모델, 그때 그때 달라요 다양한 데이터에 맞는 검증 및 테스트 구조: 전처리, 입력, 모델 구조 등의 Hyperparameter Two-hot Input Shared Embedding Cells, EmbeddingSharing Attention Mechanism Optimizer Initializer Attention, Initializer Mixture of Softmaxes Multi-hot(Pos, Lemmatized) 쉽고 빠른 검증을 위한 Framework 구축
  40. 40. 4. Chatbot 개발 최적화 방안 Baseline Model에서 시작하세요 4-4. Conclusion 좋은 Feature를 찾기 위한 요소를 찾아보세요: 단일 모델보다는 다수의 모델에게 맡겨보세요 (Ensemble) 결국 많은 실험이 필요 합니다. 담당자 모두가 쉽게 테스트 가능한 구조를 만드세요 Chatbot을 서비스로 론칭하기 위해서는, 기획, 서비스 등 관련 부서의 충분한 Communication 을 해야 합니다. 데이터는 중요합니다. 양 뿐만 아니라 질도요 (Garbage in, Garbage Out), 도메인 전문가가 있으면 금상첨화 입니다. 대부분의 상황에는 필요한 데이터가 존재하지 않습니다. 데이터 증대 방안과, 소규모 데이터로 활용 할 수 있는 방법을 모색해 보세요. 딥러닝이 답은 아니지만, 개발자와 사용자 모두에게 좋은 Tool이 될 수 있습니다.
  41. 41. Thank you.

×