Upgrade to Pro — share decks privately, control downloads, hide ads and more …

소설 쓰는 딥 러닝 - PyCon Korea 2018

소설 쓰는 딥 러닝 - PyCon Korea 2018

Build an A.I. which generates novels.

https://www.pycon.kr/2018/program/28

1c4d19de5f2950d3342480c4b3e01047?s=128

Dreamgonfly

August 18, 2018
Tweet

Transcript

  1. 소설 쓰는 딥 러닝 조용래 / dreamgonfly

  2. PRESENTER 조용래 / dreamgonfly django, flask, pandas, scikit-learn, gensim, tensorflow,

    pytorch, … #파이썬 #머신러닝 #딥러닝 #자연어처리
  3. 김범중 노혜미 정구봉 허원길 연세대학교 컴퓨터과학과 김우정 TEAM

  4. INTRO

  5. (좋은) 소설이란? 맞춤법 지키기 문법 지키기 문맥 이어가기 새로운 이야기

    재미 감동 교훈 인생의 진리 삶, 우주, 그리고 모든 것에 대한 답변
  6. (좋은) 소설이란? 맞춤법 지키기 문법 지키기 문맥 이어가기 새로운 이야기

    재미 감동 교훈 인생의 진리 삶, 우주, 그리고 모든 것에 대한 답변
  7. CHALLENGES

  8. 예) 가시었겠다 = 가- + -시- + -었- + -겠-

    + -다 CHALLENGES - 한국어의 특성 교착어 여러 형태소가 이어져서 한 단어를 이루는 언어 (go) (높임) (과거) (추측) (평서/종결) https://ratsgo.github.io/korean%20linguistics/2017/04/04/langtype
  9. CHALLENGES - 장기 의존성 버려진 섬마다 꽃이 피었다. 구름처럼 부풀어

    오른 섬들은 바다에 결박된 사슬을 풀고 어두워지는 수평선 너머로 흘러가는 듯싶었다. 꽃피는 숲에 저녁 노을이 비치어,
  10. 구름처럼 부풀어 오른 섬들은 바다에 결박된 사슬을 풀고 꽃피는 숲에

    저녁 노을이 비치어, CHALLENGES - 장기 의존성 어두워지는 수평선 너머로 흘러가는 듯싶었다. 버려진 섬마다 꽃이 피었다.
  11. 구름처럼 부풀어 오른 섬들은 바다에 결박된 사슬을 풀고 꽃피는 숲에

    저녁 노을이 비치어, CHALLENGES - 장기 의존성 어두워지는 수평선 너머로 흘러가는 듯싶었다. 버려진 섬마다 꽃이 피었다.
  12. CHALLENGES - 학습 시간 데이터 양에 따라 n시간 ~ n일

    소요 여러가지 시도를 해 보기 어려움
  13. CHALLENGES 한국어 특성 고려 장기 의존성 학습 빠른 학습

  14. APPROACH

  15. TOKENIZER TRANSFORMER MEMORY NETWORK GENERATE & RANK

  16. TOKENIZER TRANSFORMER MEMORY NETWORK GENERATE & RANK

  17. “사랑해” “사랑했다” “사랑할게” TOKENIZING “사랑” + “해” “사랑” + “했다”

    “사랑” + “할게” 한국어 특성 고려
  18. TOKENIZERS IN PYTHON KoNLPy soynlp PyCon 2014 (pycon.kr/2014/program/10) PyCon 2017

    (pycon.kr/2017/program/172) PyCon 신조어가 자주 등장하는 대량의 텍스트 데이터가 있을 때 신조어는 많이 없고 검증된 형태소 분석기가 필요할 때 Usage JVM, JPype1 등 설치 필요 순수 파이썬 패키지 Installation 데이터셋과 하이퍼파라미터에 따라 결과 차이 동일한 결과 제공 Performance 꼬꼬마, MeCab, twitter 등 이미 학습된 형태소 분석기를 Python으로 wrapping 자신이 가진 데이터셋으로 비지도학습 모델을 직접 학습시켜서 사용 How it works
  19. 판타지 소설 인명 & 지명 추가 NOGADA

  20. APPROACH TOKENIZER TRANSFORMER MEMORY NETWORK GENERATE & RANK

  21. ATTENTION IS ALL YOU NEED

  22. TYPES OF ATTENTIONS Attention Self-Attention Multi-Head Attention

  23. ATTENTION AS ALIGNMENT 나는 학교에 간다 I go to school

  24. ATTENTION AS ALIGNMENT 나는 학교에 간다 I go to school

  25. ATTENTION AS DICTIONARY a = { ‘흰색’ : ‘white’, ‘노란색’

    : ‘yellow’, ‘파란색’ : ’blue’ } a[‘노란색’] key value query
  26. ATTENTION AS DICTIONARY : : : a[ ] key value

    query Attention 가중 평균
  27. SELF-ATTENTION 언제 떠올랐는지 모를 그믐달이 동녘 하늘에 비스듬히 걸려 있었다

    걸려 조정래, <태백산맥>
  28. SELF-ATTENTION 언제 떠올랐는지 모를 그믐달이 동녘 하늘에 비스듬히 걸려 있었다

    걸려 Attention
  29. MULTI-HEAD ATTENTION 언제 떠올랐는지 모를 그믐달이 동녘 하늘에 비스듬히 걸려

    있었다 걸려 Attention 1 언제 떠올랐는지 모를 그믐달이 동녘 하늘에 비스듬히 걸려 있었다 걸려 Attention 2
  30. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities
  31. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities Encoder
  32. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities Decoder
  33. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities Encoder
  34. Positional Encoding Source Inputs N x N x Positional Encoding

    Output Probabilities Embedding
  35. Positional Encoding Source Inputs N x N x Positional Encoding

    Output Probabilities 텍스트 -> 숫자
  36. Positional Encoding Source Inputs N x N x Positional Encoding

    Output Probabilities “버려진 섬마다 꽃이 피었다” 0.3 버려진 0.2 -0.1 -0.2 0.1 섬마다 0.5 -0.2 -0.3 -0.2 꽃이 0.3 0.2 0.4 0.1 피었다 -0.3 0.6 0.2
  37. Positional Encoding Source Inputs N x N x Positional Encoding

    Output Probabilities
  38. Source Inputs N x N x Positional Encoding Output Probabilities

    문장에서 위치 정보 더하기
  39. Source Inputs N x N x Positional Encoding Output Probabilities

    버려진 섬마다 꽃이 피었다 버려진 섬마다 꽃이 피었다
  40. Positional Encoding Source Inputs N x N x Positional Encoding

    Output Probabilities Multi-Head Self-Attention
  41. Positional Encoding Source Inputs N x Positional Encoding Output Probabilities

    Feed Forward Network Layer Normalization Residual Connection
  42. Positional Encoding Source Inputs N x Positional Encoding Output Probabilities

    N x N번 반복한다
  43. Positional Encoding Inputs N x Positional Encoding Output Probabilities N

    x 버려진 섬마다 꽃이 피었다 Encoded Source
  44. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities Decoder
  45. Source N x N x Positional Encoding Positional Encoding Output

    Probabilities 지금까지 생성한 단어들 꽃피는 숲에 저녁 노을이 비치어 다음에 생성해야 하는 단어
  46. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities (Encoding과 동일) 지금까지 생성한 단어들 이해하기
  47. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities Attention to source Encoded Source
  48. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities Encoded Source N번 반복한다
  49. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities Encoded Source 다음 단어 예측
  50. Source Inputs N x N x Positional Encoding Positional Encoding

    Output Probabilities
  51. TRANSFORMER 장점 Source 단어와 Output 사이 거리가 짧다 병렬 계산

    Attention으로 정보가 직접 연결 약 30배 학습 속도 개선 장기 의존성 학습 빠른 학습
  52. Summarization Image Captioning Speech Recognition ENCODER-DECODER FRAMEWORK Two dogs play

    in the grass Caption Transcript Text Summary
  53. APPROACH TOKENIZER TRANSFORMER MEMORY NETWORK GENERATE & RANK

  54. TRANSFORMER 단점 Source 문장이 길어질 수록 계산량이 많아진다 4 토큰일

    때 self attention 8 토큰일 때 self attention
  55. QUESTION ANSWERING TASK Sam walks into the kitchen. Sam picks

    up an apple. Sam walks into the bedroom. Sam drops the apple. Q. Where is the apple? A. Bedroom https://arxiv.org/pdf/1502.05698.pdf
  56. Question Sentences (Memory) Attention Answer

  57. 직전 문장 이전 문장들 (Memory) Attention 다음 문장

  58. MEMORY NETWORK 장점 장기 의존성 학습 버려진 섬마다 꽃이 피었다.

    구름처럼 부풀어 오른 섬들은 바다에 결박된 사슬을 풀고 꽃피는 숲에 저녁 노을이 비치어, 단어가 아닌 문장을 임베딩하자 Memory
  59. MODEL ARCHITECTURE

  60. MODEL ARCHITECTURE Memory Network Sentence Embedding

  61. MODEL ARCHITECTURE Encoder

  62. MODEL ARCHITECTURE Decoder

  63. MODEL ARCHITECTURE Generate & Rank

  64. APPROACH TOKENIZER TRANSFORMER MEMORY NETWORK GENERATE & RANK

  65. BEAM SEARCH 꽃피는 섬마다 저녁 노을이 비치어 봄이 오면 꽃이

    피고 여러 개의 후보 문장을 끝까지 만들어 보고 그럴듯한 문장을 고른다 문법 지키기
  66. RANKING 여러 문장 중 지금까지 생성한 문장들과 다른 새로운 문장에

    높은 점수를 준다 예) 꽃피는 섬마다 꽃피는 섬마다 꽃피는 섬마다 새로운 이야기
  67. TENSORFLOW & PYTORCH TensorFlow PyTorch Other Frameworks : Keras, Caffe,

    MXNet, etc. Static Graph Dynamic Graph
  68. TENSORFLOW & PYTORCH TensorFlow PyTorch Static Graph Dynamic Graph Developed

    by Google Developed by Facebook Good for Optimization & Serving Good for Prototyping & Debugging
  69. RESULT

  70. PROCESS 유저가 첫 다섯 문장 입력 모델이 10개 후보 문장

    생성 유저가 후보 문장 중 한 문장 선택
  71. PROCESS 유저가 첫 다섯 문장 입력 모델이 10개 후보 문장

    생성 유저가 후보 문장 중 한 문장 선택 반복
  72. COMPETITION 웹소설 플랫폼에 업로드 후 독자 평가 심사위원 기술 평가

    최우수상 수상
  73. 작품

  74. 작품

  75. 작품

  76. 작품

  77. 작품 https://www.blice.co.kr/web/viewer.kt?timesId=128775&timesTypetimes

  78. FUTURE WORK Characters Condition on Genre & Author Context

  79. OUTRO

  80. 아이작 아시모프 (Isaac Asimov) <아이, 로봇> 외 500권 이상 어니스트

    헤밍웨이 (Ernest Hemingway) <노인과 바다> <무기여 잘 있거라> 김 훈 <칼의 노래> <남한 산성> http://buendia78.blogspot.com/2012/07/blog-post_17.htm “꽃은 피었다"와 "꽃이 피었다"는 어떻게 다른가. 이것은 하늘과 땅의 차이가 있습니다.” "모든 초고는 쓰레기다. 나는 10만 단어 정도를 버렸다” http://mba.mk.co.kr/view.php?sc=51000010&cm=%B9%CC%B4%CF%C4%AE%B7%B3&year=2010&no=701056&relatedc “평범한 작가는 끊임없이 글을 바꾸고 결코 만족하지 못한다” https://qz.com/886038/isaac-asimov-wrote-almost-500-books-in-his-lifetime-these-are-the-6-ways-he
  81. 소설을 쓰는 수많은 방법 = 소설을 쓰는 인공지능을 만드는 수많은

    방법
  82. Maybe some day..?

  83. 감사합니다