Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

[125] 머신러닝으로 쏟아지는 유저 cs 답변하기

8,560 views

Published on

머신러닝으로 쏟아지는 유저 cs 답변하기

Published in: Technology

[125] 머신러닝으로 쏟아지는 유저 cs 답변하기

  1. 1. 머신러닝으로 쏟아지는 유저 CS 답변하기 김동화, 김범준 데브시스터즈 개발팀 1
  2. 2. 김동화 (storykim) KAIST 전산학부 쿠키런 서버 개발자 CS 자동화 프로젝트 리더 김범준 (nolsigan) 서울대 컴퓨터공학부 머신러닝 엔지니어 2
  3. 3. 450,000 CS 질문-답변 페어 3
  4. 4. 잘 활용할 수 없을까? 챗봇같은 느낌으로 자동 답변이 되면 좋을텐데 4
  5. 5. 1. Text Classification 5
  6. 6. 대부분의 문의가 한정된 주제 안에서 이루어짐 그에 대한 답변도 비슷하다 Classification 문제로 접근해보자! 6
  7. 7. Classification 문제 - CS 담당자들이 20+ 개의 Class를 제공 (전체 데이터의 70% 차지) - 목표 : 주어진 Class에 속하는 질문들을 자동으로 분류/답변 하자 - 질문을 vector로 ‘잘’ 만들고 좋다는 모델에 넣은 뒤 output vector로 분류하면 되겠다! (거저먹기네 이거!) 7
  8. 8. Classification 문제 보통 논문에서 하는 일 8
  9. 9. Classification 문제 보통 논문에서 하는 일 9
  10. 10. Preprocessing - 제대로 붙어있지 않은 라벨 - 엉망으로 되어있는 맞춤법, 이모티콘 - 질문 내용 외의 메타 정보 (CS 양식에 포함되어 있는 유저ID, 구글ID, 영수증 정보 등) - … 등등 말하자면 이야기가 길어지는 엄청난 노가다전처리 를 했음 10
  11. 11. Vectorize Question text -> vector embedding Question text 의 embedding vector 를 어떻게 계산할 것인가? 이미지는 그 자체로 embedding vector 인데.. text 는? 기억의 섬이 안들어가져요 ㅠㅠ 게임 빨리 하고 싶습니다아아아 고쳐주세요오 젭알 0.121 1.871 -0.882 -5.129 3.072 … Natural language Vector embedding 11
  12. 12. Vectorize 한 토큰의 벡터 학습 기억 0.699 -0.034 0.192 … 섬 1.002 0.433 0.202 … 들어가다 0.001 -0.090 2.192 … CBOW Skip-gram GloVe Swivel 다양한 기법을 통해 각 토큰과 벡터를 매핑 13
  13. 13. Vectorize 1. End-to-End word-level LSTM 단어 단위로 LSTM 에 넣어서 얻는 embedding vector 기억 섬 안 … 고쳐주다 0.121 1.871 -0.882 -5.129 3.072 … LSTM 14
  14. 14. Vectorize 2. BoW (Bag of Words) 각 단어가 등장한 횟수가 question의 embedding vector BoW BoW 기억, 섬, 안, 들어가다, 게임, 빨리, 하다, 싶다, 빨리, 고쳐주다 Tokenized 환불 기억 빨리 게임 재미 … 0 1 2 1 0 … 15
  15. 15. Vectorize 3. TF-IDF 각 문장에서 단어가 갖는 중요도가 question의 embedding vector BoW TF-IDF 기억, 섬, 안, 들어가다, 게임, 빨리, 하다, 싶다, 빨리, 고쳐주다 Tokenized 환불 기억 빨리 게임 재미 … 0 0.83 0.01 0.18 0 … 16
  16. 16. 모델에 넣어보자! - Naive Bayes를 먼저 돌린 결과 : 정확도 59% 여기서 멈추고 다시 돌아봤어야 했다 - 딥러닝은 훨씬 잘해줄거야! - 5개의 모델을 사용해봤으나 정확도 최대 65% 17
  17. 17. 데이터를 더 깎자! - 품사 분석을 통해 주요 품사만 남겨둠 - 전화번호, 주문번호, 숫자 등 특수 토큰으로 대체 - 너무 짧은 데이터 제거 - … 등등을 했으나 68% 18
  18. 18. 왜 안 될까? - 구현해둔 Naive bayes를 사용해서 디버깅 뉴럴넷은 디버깅이 힘들다 dominant words confusion matrix 19
  19. 19. 왜 안 될까? - 데이터를 좀 더 자세히 분석(또 노가다) - ‘결제했는데 크리스탈이 안 들어왔어요’ 서버 문제? 결제를 안 했나? 구글/애플 문제? 크리스탈이 실제로는 잘 들어 갔나? - 질문만 보고 답변을 하나로 특정 지을 수 없음 20
  20. 20. 그렇다면… - 하나의 질문에 대해 3가지 답변 후보를 예측 하는 모델을 만 들자! - 정확도 95% - 함정 : Top 3 class를 잘 맞춰봤자 결국 담당자의 손을 한 번 더 거쳐야하기 때문에 무의미 21
  21. 21. Lessons - Baseline의 중요성 디버그 가능한 고전적인 ML 기법들을 사용 - 데이터를 항상 꼼꼼히 살펴보자 문제 정의, 데이터 가공, 모델링 등 모든 과정에서 인사이트를 준다 - 문제의 본질을 기억하자 Top 3을 맞추는 모델로는 봇을 만들 수 없다 - 영향도 : 하이퍼파라미터 < 모델 < 데이터 가공 < 문제 정의 하이퍼파라미터나 세세한 모델 튜닝은 보통 퍼포먼스를 크게 향상시키지 않음 22
  22. 22. 2. 문제 재정의 - 장애 CS 대응 23
  23. 23. 문제 재정의 - 해결 가능하면서 그 결과로 CS 담당자의 일을 줄여줘야함 - 특정 업데이트에 문제가 있으면, 수백~수천 건의 CS 문의가 들어온다 - CS 담당자는 그 질문들에 대해 정확히 똑같은 답변을 기계적으로 보냄 24
  24. 24. 문제 재정의 특정 장애로 인해 쏟아지는 CS를 머신러닝으로 자동 분류하고, 답변하자! 25
  25. 25. 문제 재정의 Q. 이것도 아까랑 똑같은 supervised classification 문제 아닌가요? A. 데이터를 다 보고 학습을 하면 이미 쓸모가 없 적은 데이터만 가지고 장애 문의인지 판단해야 26
  26. 26. 두 가지 접근 방법 Anomaly Detection Few-shot Learning 27
  27. 27. 3. Anomaly Detection 28
  28. 28. Anomaly Detection 수많은 데이터 속에서 비정상적인 데이터를 찾는 29
  29. 29. Anomaly Detection 일반적인 CS들 속에서 장애 관련 CS를 찾는 것 30
  30. 30. Anomaly Detection 다양한 기법들 • Support Vector Machine • k-Nearest Neighbor • Local outlier factor • Autoencoder - 라벨이 필요 없음. 구현이 간단. 실제 사용 예시 확인 31
  31. 31. Autoencoder Normal Data로 AE를 학습 Abnormal Data가 들어왔을 때 높은 loss 32
  32. 32. Autoencoder <GO> 크리스탈 안 들어오다 * word embedding with swivel <GO> + h 크리스탈 + h 안 + h 들어오다 + h h 코인 안 되다 <END> 33
  33. 33. Autoencoder 우리의 데이터에 맞는 여러가지 variation 1. 과거의 데이터와 최근 데이터는 분포가 다르다 : 전체 데이터로 pre-train한 뒤 최근 n개/n주 데이터로 다시 학습 2. 여러 문장으로 된 긴 CS가 들어온다 : 각 문장별로 loss를 구해서 mean(또는 max) 3. 키워드들의 순서가 크게 중요할까? : max-pooling, conv 등이 들어간 다양한 모델 시도 34
  34. 34. Autoencoder 결과 무의미하지는 않은 loss 프로덕션에 적용하기에는 불안 정 non-supervised의 한계? 다른 접근이 필요 인코드된 결과만 이용해보자 35
  35. 35. Autoencoder 인코더만 사용하기 - loss와는 다르게 스칼라가 아닌 벡터값이므로 훨씬 풍부한 데이터를 가지고 있을 것 이다 - clustering을 시도 : 역시 잘 워킹하지 않음 - 일반 CS와 장애 CS가 정확히 다르지 않다 : ‘패키지가 안 사져요’ 는 장애 CS일 수도 있고 아닐 수도 있다 - ‘장애 상황’을 직접 추가/제거하고, 그 상황에 해당하는 소수의 샘플을 통해 걸러낼 수 있는 모델이 필요 : 장애 발생시 CS 담당자들이 케이스를 추가하고, 모델에게 맡길 수 있도록 36
  36. 36. 4. Few-Shot Learning 새로운 장애CS를 몇 개의 샘플 만으로 구별해보자! 37
  37. 37. Zero-Shot Learning 장애 CS ? YES NOTarget Question 기존 데이터 + Machine Learning Black Box 38
  38. 38. Few-Shot Learning 장애 CS ? YES NO Target Question 기존 데이터 + 장애 CS 샘플 + 크리스탈 결제가 안돼요 ㅠㅠ 결제 페이지에서 튕기는데 고쳐주세요 결제 안돼 - - Machine Learning Black Box 39
  39. 39. 유사도 계산 (Similarity Calculation) KNN (K Nearest Neighbors) KNN A B A A A A B B B K = 3 A : 1개 B : 2개 B 40
  40. 40. Baseline TF-IDF + cosine similarity 기존 데이터 샘 플환불 부탁드립니다! 쿠키런 게임 너무 재밌어요!~~ 장애 CS 샘플 기억의 섬 튕겨요 ㅠㅠ 빨리 기억의 섬 고쳐줘요 Target Question기억의 섬 게임이 안되요 TF-IDF 환불 기억 빨리 게임 재미 … 0.68 0 0 0 0 … 0 0 0 0.18 0.23 … 0 0.72 0 0 0 … 0 0.67 0.13 0 0 … 0 0.81 0 0.09 0 … cosine similarity 0.172 0.539 < 장애 CS ? YES Similarity 41
  41. 41. Metrics 민감도 (Sensitivity) & 특이도 (Specificity) 1. 장애 CS를 잘 분류하는가? 2 .일반 CS를 잘 분류하는가? 42
  42. 42. Metrics 민감도 & 특이도 실제 장애 CS 분류된 장 애 CS X % 43
  43. 43. Metrics 민감도 & 특이도 실제 일반 CS 분류된 일 반 CS Y % 44
  44. 44. Baseline TF-IDF + cosine similarity 정확도 82 % 민감도 91 % 특이도 72 % 전체 CS 실제 장애 CS 실제 일반 CS 45
  45. 45. 유사도 계산 (Similarity Calculation) 1. Matching Network 미분가능 KNN 뉴럴넷을 통해 support set 과 target 의 임베딩(embedding)을 계산한 후 유사도를 계산하자! Support Set Target Embeddings 46
  46. 46. 실험.. 실험.. 실험.. 실험.. 실험 환경 Question Embedding : BoW, TF-IDF, End-to-End LSTM Word Embedding : 랜덤으로부터 학습, 랜덤 고정, Swivel, … Normalization.. Dropout.. Total vocabulary size Network size 47
  47. 47. 실험.. 실험.. 실험.. 실험.. 그래프.. 그래프.. 48
  48. 48. 실험.. 실험.. 실험.. 실험.. 디버깅.. 디버깅.. 49
  49. 49. Matching Network Best Result Using Matching Network + Swivel + BoW 민감도 91% -> 93% 특이도 72% -> 89% 50
  50. 50. 유사도 계산 (Similarity Calculation) 2. TCML (Few-Shot Learning with Temporal Convolutions) Matching Network => Embedding Learning + cosine similarity TCML => Embedding Learning + comparison Learning 51
  51. 51. 유사도 계산 (Similarity Calculation) 2. TCML (Few-Shot Learning with Temporal Convolutions) TCML 68.8 % Matching Network 60.0 % 5-way, 5-shot Mini-ImageNet > 52
  52. 52. 실험.. 실험.. 실험.. 실험.. 그래프.. 그래프.. 53
  53. 53. 실험.. 실험.. 실험.. 실험.. 디버깅.. 디버깅.. 54
  54. 54. TCML Best Result Also Using TCML + Swivel + BoW 민감도 93% -> 93% 특이도 89% -> 91% 55
  55. 55. TCML Code Open Source https://github.com/devsisters/TCML-tensorflow 56
  56. 56. Ensemble Model 실험 과정에서 얻은 모델들로 Voting! Model 1 Model 2 Model 3 … 장애 CS ? YES NO YES YES 57
  57. 57. Ensemble Model Result 실험 과정에서 얻은 64개의 모델 민감도 91% -> 94% 특이도 72% -> 92% 58
  58. 58. Ensemble Model Result 64개의 모델을 돌리려면.. 모델을 GPU에 올리고.. 질문을 모델에 넣어 계산하고.. 모델을 GPU에서 내리고.. x 64 59
  59. 59. 5. 실제 적용 지금까지 얻은 모델로 무엇을 할 수 있을까? 60
  60. 60. 실제 적용 1. 장애 CS 분류 실제 장애 CS 분류된 장애 CS 일반 CS 93% 9% 실제 장애 CS 의 93%를 분류할 수 있고, 비장애 CS 의 9%가 잘못 분류된다 61
  61. 61. 실제 적용 1. 장애 CS 분류 전체 CS 장애 CS 분류기 장애 CS 장애 CS 장애 CS 장애 CS 일반 CS 장애 CS 62
  62. 62. 실제 적용 2. 장애 CS 자동 답변 장애 CS sample similarity - 일반 CS sample similarity 장애 CS 일반 CS 63
  63. 63. 실제 적용 2. 장애 CS 자동 답변 threshold 값에 따른 신뢰도 threshold 값에 따른 coverage 신뢰도 95% 일 때 : coverage = 68 % 64
  64. 64. 실제 적용 3. Top-3 classifier로 예상 질문에 대한 답변 자동 제공 게임 실행하면 혼자 꺼지는데 어떻게 해야되요??? 질문 예상 답변 제공 … 혹시 궁금하신 점이 이런 내용은 아닌가요? 강제 종료 문의 네트워크 끊김 문 의 결제 오류 문의 65
  65. 65. 실제 적용 3. Top-3 classifier로 예상 질문에 대한 답변 자동 제공 Model질문 예상 답변 해결 CS팀에게 전달 66
  66. 66. 실제 적용 CS 자동 분류 장애 CS 자동 답변 Top3 FAQ 적용 중 11월 초 적용 67
  67. 67. 6. 한계점 모델의 한계는? 68
  68. 68. 한계점 단어 단위 embedding 의 한계 새로운 단어에 대처하지 못함 버려지는 키워드들.. 떼탈출 보상이 안들어와요 ㅠㅠ 보상, 안, 들어오다 기억의 섬 보상이 안들어와요 ㅠㅠ 기억, 섬, 보상, 안, 들어오다 69
  69. 69. 한계점 실제 데이터 사용의 한계 1. 오타를 완벽하게 고치기 힘들다 2. 클래스 분류가 어렵고 버려지는 샘플이 많 다 3. 비슷한 내용인데 다른 클래스인 질문들이 존재 애가 저 몰래 결제 했는데 환불 좀 해 주세요. 아 그리고 기억의 섬 보상 안들어오 던데 언제 고쳐주 시나요??? 환불 문 의 기억의 섬 장애 문 의 70
  70. 70. TODO 기능 개 선 Model User Service Feedback 성능 개 선 실험 Result New Idea, Hyper params 71
  71. 71. Thank you 72

×