2016년 4월 27일, NDC2016 발표자료입니다.
전통적인 콘텐츠 생산은 기획자, 개발자가 하나하나 컨트롤해야 하는 노동집약적 산업입니다. 저 또한 처음에 입사했을 때 출시를 위해 며칠 만에 이백여 개가 넘는 맵을 찍어야 했던 아픔이 있습니다. 그 뒤에도 플레이어들을 위한 콘텐츠 생산은 계속되었지만, 플레이어들의 콘텐츠 소비 속도는 생산 속도를 뛰어넘은 지 오래되었습니다. 대안은 로그라이크 같은 장르에서 널리 쓰이는 Procedural Contents Generation이라고 생각합니다. 외국 인디 씬에서는 이미 많이 사용되고 있는 이 방법에 최근 점점 더 많이 사용되고 있는 신경망을 활용해서 색다른 콘텐츠 생산 기법을 소개하려 합니다.
2016년 4월 27일, NDC2016 발표자료입니다.
전통적인 콘텐츠 생산은 기획자, 개발자가 하나하나 컨트롤해야 하는 노동집약적 산업입니다. 저 또한 처음에 입사했을 때 출시를 위해 며칠 만에 이백여 개가 넘는 맵을 찍어야 했던 아픔이 있습니다. 그 뒤에도 플레이어들을 위한 콘텐츠 생산은 계속되었지만, 플레이어들의 콘텐츠 소비 속도는 생산 속도를 뛰어넘은 지 오래되었습니다. 대안은 로그라이크 같은 장르에서 널리 쓰이는 Procedural Contents Generation이라고 생각합니다. 외국 인디 씬에서는 이미 많이 사용되고 있는 이 방법에 최근 점점 더 많이 사용되고 있는 신경망을 활용해서 색다른 콘텐츠 생산 기법을 소개하려 합니다.
책 읽어주는 딥러닝: 배우 유인나가 해리포터를 읽어준다면 DEVIEW 2017Taehoon Kim
발표 영상 : https://youtu.be/klnfWhPGPRs
코드 : https://github.com/carpedm20/multi-speaker-tacotron-tensorflow
음성 합성 데모 : http://carpedm20.github.io/tacotron
발표 소개 : https://deview.kr/2017/schedule/182
딥러닝을 활용한 음성 합성 기술을 소개하고 개발 경험과 그 과정에서 얻었던 팁을 공유하고자 합니다.
2021년 11월 16일 모두콘에서 발표했던 딥러닝 경량화 & 최적화 슬라이드 입니다.
딥러닝 경량화 & 최적화를 실용적으로 적용하려면 어떻게 해야 할까요? 딥러닝 경량화를 검색하면 이론적으로 매우 많은 자료가 쏟아져 나옵니다. 하지만 실제로 적용을 해보면 효과가 없거나 오히려 역효과가 나는 경우가 있습니다. 이번 모두콘에서 저희가 지금까지 딥러닝 모델 경량화 & 최적화를 진행하면서 어떤 것이 실용적으로 효과가 있었는지에 대해서 공유하려고 합니다.비슷한 주제로 고민 중이고 계셨던 분이시면 편하게 들으러 와주세요.
<마비노기 영웅전>의 사례에 기반하여 다음의 내용을 설명합니다.
1. 국내 및 해외에서 라이브 서비스 중에 발생하는 작업장 이슈에 대응하기 위해서 실시간 로그 수집 프로세스를 구축하면서 고민하였던 내용과
2. 수집한 로그 데이터를 활용하여 온라인 액션 게임에서 캐릭터 애니메이션 패턴간의 유사도(TF-IDF, Cosine Similarity)를 분석하여 현업 실무의 어뷰징 탐지에 활용한 사례를 공유합니다.
라이브 서비스 환경에서 국내 및 해외의 실시간 로그 수집에 대해서 고민하시는 개발자나 온라인 게임에서의 봇탐지에 관심있는 분석가들에게 유용한 사례를 소개해드릴 수 있을 것으로 생각합니다.
7. Classification 문제
- CS 담당자들이 20+ 개의 Class를 제공
(전체 데이터의 70% 차지)
- 목표 : 주어진 Class에 속하는 질문들을 자동으로 분류/답변하자
- 질문을 vector로 ‘잘’ 만들고
좋다는 모델에 넣은 뒤
output vector로 분류하면 되겠다! (거저먹기네 이거!)
10. Preprocessing
- 제대로 붙어있지 않은 라벨
- 엉망으로 되어있는 맞춤법, 이모티콘
- 질문 내용 외의 메타 정보
(CS 양식에 포함되어 있는 유저ID, 구글ID, 영수증 정보 등)
- … 등등 말하자면 이야기가 길어지는 엄청난 노가다전처리를 했음
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
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
다양한 기법을 통해 각 토큰과 벡터를 매핑
14. Vectorize
2. BoW (Bag of Words)
각 단어가 등장한 횟수가 question의 embedding vector
BoW
BoW
기억, 섬, 안, 들어가다, 게임, 빨리,
하다, 싶다, 빨리, 고쳐주다
Tokenized
환불 기억 빨리 게임 재미 …
0 1 2 1 0 …
15. Vectorize
3. TF-IDF
각 문장에서 단어가 갖는 중요도가 question의 embedding vector
BoW
TF-IDF
기억, 섬, 안, 들어가다, 게임, 빨리,
하다, 싶다, 빨리, 고쳐주다
Tokenized
환불 기억 빨리 게임 재미 …
0 0.83 0.01 0.18 0 …
16. 모델에 넣어보자!
- Naive Bayes를 먼저 돌린 결과 : 정확도 59%
여기서 멈추고 다시 돌아봤어야 했다
- 딥러닝은 훨씬 잘해줄거야!
- 5개의 모델을 사용해봤으나 정확도 최대 65%
17. 데이터를 더 깎자!
- 품사 분석을 통해 주요 품사만 남겨둠
- 전화번호, 주문번호, 숫자 등 특수 토큰으로 대체
- 너무 짧은 데이터 제거
- … 등등을 했으나 68%
18. 왜 안 될까?
- 구현해둔 Naive bayes를 사용해서 디버깅
뉴럴넷은 디버깅이 힘들다
19. 왜 안 될까?
- 데이터를 좀 더 자세히 분석(또 노가다)
- ‘결제했는데 크리스탈이 안 들어왔어요’
서버 문제? 결제를 안 했나?
구글/애플 문제? 크리스탈이 실제로는 잘 들어갔나?
- 질문만 보고 답변을 하나로 특정 지을 수 없음
20. 그렇다면…
- 하나의 질문에 대해 3가지 답변 후보를 예측 하는 모델을 만들자!
- 정확도 95%
- 함정 :
Top 3 class를 잘 맞춰봤자
결국 담당자의 손을 한 번 더 거쳐야하기 때문에 무의미
21. Lessons
- Baseline의 중요성
디버그 가능한 고전적인 ML 기법들을 사용
- 데이터를 항상 꼼꼼히 살펴보자
문제 정의, 데이터 가공, 모델링 등 모든 과정에서 인사이트를 준다
- 문제의 본질을 기억하자
Top 3을 맞추는 모델로는 봇을 만들 수 없다
- 영향도 : 하이퍼파라미터 < 모델 < 데이터 가공 < 문제 정의
하이퍼파라미터나 세세한 모델 튜닝은 보통 퍼포먼스를 크게 향상시키지 않음
33. Autoencoder
우리의 데이터에 맞는 여러가지 variation
1. 과거의 데이터와 최근 데이터는 분포가 다르다
: 전체 데이터로 pre-train한 뒤 최근 n개/n주 데이터로 다시 학습
2. 여러 문장으로 된 긴 CS가 들어온다
: 각 문장별로 loss를 구해서 mean(또는 max)
3. 키워드들의 순서가 크게 중요할까?
: max-pooling, conv 등이 들어간 다양한 모델 시도
35. Autoencoder
인코더만 사용하기
- loss와는 다르게 스칼라가 아닌 벡터값이므로 훨씬 풍부한 데이터를 가지고 있을 것이다
- clustering을 시도
: 역시 잘 워킹하지 않음
- 일반 CS와 장애 CS가 정확히 다르지 않다
: ‘패키지가 안 사져요’ 는 장애 CS일 수도 있고 아닐 수도 있다
- ‘장애 상황’을 직접 추가/제거하고,
그 상황에 해당하는 소수의 샘플을 통해 걸러낼 수 있는 모델이 필요
: 장애 발생시 CS 담당자들이 케이스를 추가하고, 모델에게 맡길 수 있도록
45. 유사도 계산 (Similarity Calculation)
1. Matching Network
미분가능 KNN
뉴럴넷을 통해 support set 과 target 의
임베딩(embedding)을 계산한 후
유사도를 계산하자!
Support Set
Target
Embeddings
46. 실험.. 실험.. 실험.. 실험..
실험 환경
Question Embedding : BoW, TF-IDF, End-to-End LSTM
Word Embedding : 랜덤으로부터 학습, 랜덤 고정, Swivel, …
Normalization..
Dropout..
Total vocabulary size
Network size
68. 한계점
단어 단위 embedding 의 한계
새로운 단어에 대처하지 못함
버려지는 키워드들..
떼탈출 보상이 안들어와요 ㅠㅠ 보상, 안, 들어오다
기억의 섬 보상이 안들어와요 ㅠㅠ 기억, 섬, 보상, 안, 들어오다
69. 한계점
실제 데이터 사용의 한계
1. 오타를 완벽하게 고치기 힘들다
2. 클래스 분류가 어렵고 버려지는 샘플이 많다
3. 비슷한 내용인데 다른 클래스인 질문들이 존재
애가 저 몰래 결제
했는데 환불 좀 해주
세요.
아 그리고 기억의 섬
보상 안들어오던데
언제 고쳐주시나
요???
환불 문의
기억의 섬
장애 문의