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

CodeFest 2019. Андрей Кутузов (Университет Осло) — Нейронные сети в обработке текста: хайп или всерьёз и надолго

16b6c87229eaf58768d25ed7b2bbbf52?s=47 CodeFest
April 05, 2019

CodeFest 2019. Андрей Кутузов (Университет Осло) — Нейронные сети в обработке текста: хайп или всерьёз и надолго

Автоматическая обработка текстовых данных (natural language processing, NLP) сейчас всё больше и больше становится привязана к использованию разнообразных искусственных нейронных сетей. Это следующий шаг в NLP после правиловых методов и классического машинного обучения. Я расскажу о том, почему нейронные сети подняли такой шум в NLP (и других областях data science), и как с ними связаны дистрибутивные модели значения в языке, вроде word2vec, fastText, ElMO и т.д. Я кратко обрисую основные особенности и различия популярных популярных в NLP фреймворков для работы с нейронными сетями: PyTorch, TensorFlow, Keras и т.п. Кроме того, расскажу, в чём особенности обработки языковых данных и какие методы их предобработки часто оказываются полезными.

16b6c87229eaf58768d25ed7b2bbbf52?s=128

CodeFest

April 05, 2019
Tweet

Transcript

  1. Нейронные сети в обработке текста: хайп или всерьёз и надолго

    Андрей Кутузов University of Oslo, Language Technology Group, researcher CodeFest, Новосибирск, март 2019
  2. Кто здесь? Закончил магистратуру по компьютерной лингвистике НИУ ВШЭ в

    Москве. Работал с NLP в Lionbridge и в Поиске Mail.ru. Сейчас занимаюсь наукой и преподаю в университете Осло (это в Норвегии). Deep learning, computational linguistics... Создал и развиваю проект RusVect¯ or¯ es (word embeddings для русского языка). Участвую в разработке библиотеки Gensim. https://www.mn.uio.no/ifi/english/ https://rusvectores.org https://github.com/RaRe-Technologies/gensim
  3. Что будет? В докладе 4 главных тезиса. Ищите слайды с

    большими дружелюбными красными буквами: Take-home message Например, вот так.
  4. Что это вообще за NLP такой? Лингвистика

  5. Что это вообще за NLP такой? Лингвистика Статистические методы

  6. Что это вообще за NLP такой? Лингвистика Статистические методы Глубокое

    обучение
  7. Что это вообще за NLP такой? Computational Linguistics (CL);

  8. Что это вообще за NLP такой? Computational Linguistics (CL); Natural

    Language Processing (NLP);
  9. Что это вообще за NLP такой? Computational Linguistics (CL); Natural

    Language Processing (NLP); Natural Language Understanding (NLU);
  10. Что это вообще за NLP такой? Computational Linguistics (CL); Natural

    Language Processing (NLP); Natural Language Understanding (NLU); Более или менее одна и та же область знаний:
  11. Что это вообще за NLP такой? Computational Linguistics (CL); Natural

    Language Processing (NLP); Natural Language Understanding (NLU); Более или менее одна и та же область знаний: 1 научное изучение языка с вычислительной точки зрения;
  12. Что это вообще за NLP такой? Computational Linguistics (CL); Natural

    Language Processing (NLP); Natural Language Understanding (NLU); Более или менее одна и та же область знаний: 1 научное изучение языка с вычислительной точки зрения; 2 практические языко-ориентированных задачи: анализ (понимание человеческого текста) синтез (генерация «человеческого» текста)
  13. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»;
  14. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT);
  15. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах.
  16. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне:
  17. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval)
  18. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод
  19. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод определение тональности (sentiment analysis)
  20. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод определение тональности (sentiment analysis) детектирование спама
  21. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод определение тональности (sentiment analysis) детектирование спама распознавание речи
  22. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод определение тональности (sentiment analysis) детектирование спама распознавание речи чатботы
  23. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод определение тональности (sentiment analysis) детектирование спама распознавание речи чатботы автореферирование (summarization)
  24. Почему такой хайп с NLP/CL в последние лет 10? Данные

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод определение тональности (sentiment analysis) детектирование спама распознавание речи чатботы автореферирование (summarization) виртуальные личные помощники (Алиса, Siri, Alexa, Cortana)...
  25. Язык — это очень не просто https://medium.com/@yoav.goldberg/an-adversarial-review-of-adversarial-generation-of-natural-language-409ac3378bd7

  26. Язык — это очень не просто (особенно морфологически сложный —

    например, русский) Как перевести последовательности букв в осмысленный цифровой вид?
  27. Язык — это очень не просто (особенно морфологически сложный —

    например, русский) Как перевести последовательности букв в осмысленный цифровой вид? Предобработка текстовых данных:
  28. Язык — это очень не просто (особенно морфологически сложный —

    например, русский) Как перевести последовательности букв в осмысленный цифровой вид? Предобработка текстовых данных: токенизация (как делить строку на слова?)
  29. Язык — это очень не просто (особенно морфологически сложный —

    например, русский) Как перевести последовательности букв в осмысленный цифровой вид? Предобработка текстовых данных: токенизация (как делить строку на слова?) лемматизация (какая у этого слова начальная форма?)
  30. Язык — это очень не просто (особенно морфологически сложный —

    например, русский) Как перевести последовательности букв в осмысленный цифровой вид? Предобработка текстовых данных: токенизация (как делить строку на слова?) лемматизация (какая у этого слова начальная форма?) снятие неоднозначности: «Лук (???) был просто огонь (???)»
  31. Язык — это очень не просто (особенно морфологически сложный —

    например, русский) Как перевести последовательности букв в осмысленный цифровой вид? Предобработка текстовых данных: токенизация (как делить строку на слова?) лемматизация (какая у этого слова начальная форма?) снятие неоднозначности: «Лук (???) был просто огонь (???)» чёрт знает что ещё.
  32. Язык — это очень не просто (особенно морфологически сложный —

    например, русский) Как перевести последовательности букв в осмысленный цифровой вид? Предобработка текстовых данных: токенизация (как делить строку на слова?) лемматизация (какая у этого слова начальная форма?) снятие неоднозначности: «Лук (???) был просто огонь (???)» чёрт знает что ещё. Приходится скрещивать линейную алгебру с лингвистикой.
  33. Take-home message #1 Языковые данные сложны и специфичны

  34. Как мы пришли к нейронным сетям? Три этапа истории NLP

    1 «правила» (‘rule-based’, ‘symbolic’): с 1950-х до 1990-х годов;
  35. Как мы пришли к нейронным сетям? Три этапа истории NLP

    1 «правила» (‘rule-based’, ‘symbolic’): с 1950-х до 1990-х годов; 2 «машинное обучение» (‘data-based’): с 1990-х до конца 2000-х;
  36. Как мы пришли к нейронным сетям? Три этапа истории NLP

    1 «правила» (‘rule-based’, ‘symbolic’): с 1950-х до 1990-х годов; 2 «машинное обучение» (‘data-based’): с 1990-х до конца 2000-х; 3 «нейронки» (‘deep learning’): с конца 2000-х и по сей день.
  37. Как мы пришли к нейронным сетям? Три этапа истории NLP

    1 «правила» (‘rule-based’, ‘symbolic’): с 1950-х до 1990-х годов; 2 «машинное обучение» (‘data-based’): с 1990-х до конца 2000-х; 3 «нейронки» (‘deep learning’): с конца 2000-х и по сей день. Машинное обучение Современное NLP — фактически часть data science...
  38. Как мы пришли к нейронным сетям? Три этапа истории NLP

    1 «правила» (‘rule-based’, ‘symbolic’): с 1950-х до 1990-х годов; 2 «машинное обучение» (‘data-based’): с 1990-х до конца 2000-х; 3 «нейронки» (‘deep learning’): с конца 2000-х и по сей день. Машинное обучение Современное NLP — фактически часть data science... ...ибо почти целиком основано на машинном обучении.
  39. Как мы пришли к нейронным сетям? Три этапа истории NLP

    1 «правила» (‘rule-based’, ‘symbolic’): с 1950-х до 1990-х годов; 2 «машинное обучение» (‘data-based’): с 1990-х до конца 2000-х; 3 «нейронки» (‘deep learning’): с конца 2000-х и по сей день. Машинное обучение Современное NLP — фактически часть data science... ...ибо почти целиком основано на машинном обучении. Мы обучаем наши системы на больших корпусах текстов.
  40. Как мы пришли к нейронным сетям? Три этапа истории NLP

    1 «правила» (‘rule-based’, ‘symbolic’): с 1950-х до 1990-х годов; 2 «машинное обучение» (‘data-based’): с 1990-х до конца 2000-х; 3 «нейронки» (‘deep learning’): с конца 2000-х и по сей день. Машинное обучение Современное NLP — фактически часть data science... ...ибо почти целиком основано на машинном обучении. Мы обучаем наши системы на больших корпусах текстов. Нейронные сети — один из алгоритмов машинного обучения.
  41. 27.03.2019 отцы-основатели Deep Learning получили «Нобелевскую премию computer science»: ACM

    Turing Award «...за концептуальные и инженерные прорывы, сделавшие глубокие нейронные сети важнейшей частью индустрии вычислений: в компьютерном зрении, распознавании речи, обработке естественного языка и робототехнике»
  42. Возрождение нейронных сетей «Глубокое обучение» (deep learning) — машинное обучение

    с использованием многослойных искусственных нейронных сетей и нелинейных трансформаций.
  43. Возрождение нейронных сетей «Глубокое обучение» (deep learning) — машинное обучение

    с использованием многослойных искусственных нейронных сетей и нелинейных трансформаций. feedforward networks (простейший вариант), convolutional networks (CNN), recurrent networks: gated: (Bi)LSTM, GRU, etc. transformers...
  44. Возрождение нейронных сетей «Глубокое обучение» (deep learning) — машинное обучение

    с использованием многослойных искусственных нейронных сетей и нелинейных трансформаций. feedforward networks (простейший вариант), convolutional networks (CNN), recurrent networks: gated: (Bi)LSTM, GRU, etc. transformers... Более-менее любая сложная NLP-задача с нейронками решается качественнее, чем «классическими» линейными моделями.
  45. Возрождение нейронных сетей «Глубокое обучение» (deep learning) — машинное обучение

    с использованием многослойных искусственных нейронных сетей и нелинейных трансформаций. feedforward networks (простейший вариант), convolutional networks (CNN), recurrent networks: gated: (Bi)LSTM, GRU, etc. transformers... Более-менее любая сложная NLP-задача с нейронками решается качественнее, чем «классическими» линейными моделями. «Нужно ли нам вообще что-то кроме нейронных сетей?» Уже-не-спойлер: да, ещё нужна лингвистика.
  46. Почему «нейронные»? В нашем мозге 1011 нейронов, и у каждого

    104 соединений.
  47. Почему «нейронные»? В нашем мозге 1011 нейронов, и у каждого

    104 соединений. Нейроны получают от других нейронов сигналы, присваивают им веса и отправляют новые сигналы дальше.
  48. Почему «нейронные»? В нашем мозге 1011 нейронов, и у каждого

    104 соединений. Нейроны получают от других нейронов сигналы, присваивают им веса и отправляют новые сигналы дальше. Искусственные нейронные сети имитируют этот процесс.
  49. Почему «нейронные»? В нашем мозге 1011 нейронов, и у каждого

    104 соединений. Нейроны получают от других нейронов сигналы, присваивают им веса и отправляют новые сигналы дальше. Искусственные нейронные сети имитируют этот процесс. Но это не точно: на самом деле не очень понятно, как работает мозг.
  50. Почему «нейронные»? В нашем мозге 1011 нейронов, и у каждого

    104 соединений. Нейроны получают от других нейронов сигналы, присваивают им веса и отправляют новые сигналы дальше. Искусственные нейронные сети имитируют этот процесс. Но это не точно: на самом деле не очень понятно, как работает мозг. Так что нейронки это вектора, матрицы весов и дифференцирование. Не секси, зато правда.
  51. Почему «глубокие»? Нейронные сети обычно состоят из нескольких трансформирующих слоёв

    (поэтому их еще называют multi-layered perceptrons, MLP).
  52. Почему «глубокие»? Нейронные сети обычно состоят из нескольких трансформирующих слоёв

    (поэтому их еще называют multi-layered perceptrons, MLP). Они способны аппроксимировать любую функцию.
  53. Почему «глубокие»? Нейронные сети обычно состоят из нескольких трансформирующих слоёв

    (поэтому их еще называют multi-layered perceptrons, MLP). Они способны аппроксимировать любую функцию. Вопрос лишь в количестве слоёв и нейронов в этих слоях.
  54. Почему «глубокие»? Нейронные сети обычно состоят из нескольких трансформирующих слоёв

    (поэтому их еще называют multi-layered perceptrons, MLP). Они способны аппроксимировать любую функцию. Вопрос лишь в количестве слоёв и нейронов в этих слоях. Нелинейные трансформации между слоями позволяют обрабатывать линейно неразделимые данные.
  55. Почему «глубокие»? Нейронные сети обычно состоят из нескольких трансформирующих слоёв

    (поэтому их еще называют multi-layered perceptrons, MLP). Они способны аппроксимировать любую функцию. Вопрос лишь в количестве слоёв и нейронов в этих слоях. Нелинейные трансформации между слоями позволяют обрабатывать линейно неразделимые данные. Именно это даёт буст к качеству моделей: в машинном переводе, в предсказании следующего слова, в извлечении имён из текста, в определении тональности...
  56. Take-home message #2 Deep Learning — логическое развитие истории NLP

  57. Representation learning Нейронки очень эффективны в выучивании оптимальных векторных репрезентаций

    самых разных сущностей.
  58. Representation learning Нейронки очень эффективны в выучивании оптимальных векторных репрезентаций

    самых разных сущностей. Крайне важно в NLP: тут много сложных объектов, для которых нужно уметь определять близость: звуки, буквы, слова, предложения, тексты... даже языки.
  59. Representation learning Нейронки очень эффективны в выучивании оптимальных векторных репрезентаций

    самых разных сущностей. Крайне важно в NLP: тут много сложных объектов, для которых нужно уметь определять близость: звуки, буквы, слова, предложения, тексты... даже языки. Такие репрезентации мы называем embeddings (например, word embeddings).
  60. word2vec: представлять слова векторами нынче модно (Dmitry Malkov)

  61. Deep learning сильно изменил NLP Гораздо меньше ручного feature engineering:

    нейронки сами находят полезные комбинации признаков.
  62. Deep learning сильно изменил NLP Гораздо меньше ручного feature engineering:

    нейронки сами находят полезные комбинации признаков. Предобученные модели: легко дотюнить под свои задачи.
  63. Deep learning сильно изменил NLP Гораздо меньше ручного feature engineering:

    нейронки сами находят полезные комбинации признаков. Предобученные модели: легко дотюнить под свои задачи. Отдельные элементы комбинируются в комплексные архитектуры.
  64. Deep learning сильно изменил NLP Гораздо меньше ручного feature engineering:

    нейронки сами находят полезные комбинации признаков. Предобученные модели: легко дотюнить под свои задачи. Отдельные элементы комбинируются в комплексные архитектуры. Современное железо дешёвое и достаточно мощное (GPUs, TPUs).
  65. Регулярные NLP-революции и новые рекорды Multi-task learning; Generative Adversarial Networks

    (GANs); Transformers (BERT); Pre-trained language models / Contextualized word embeddings (ELMo)...
  66. Регулярные NLP-революции и новые рекорды Multi-task learning; Generative Adversarial Networks

    (GANs); Transformers (BERT); Pre-trained language models / Contextualized word embeddings (ELMo)...
  67. Случаются забавные казусы OpenAI обучили языковую модель, но никому её

    не показывают (чтобы злодеи не воспользовались):
  68. Случаются забавные казусы OpenAI обучили языковую модель, но никому её

    не показывают (чтобы злодеи не воспользовались): Неблагодарные компьютерные лингвисты издеваются:
  69. Проблема интерпретируемости предсказаний в условиях каскада репрезентаций XKCD

  70. Проблема недостатка размеченных данных разметка ошибок перевода (https: // rus-ltc.

    org )
  71. Take-home message #3 Deep learning в NLP — не хайп,

    это всерьёз. Занимайтесь им. Но всерьёз было и «классическое» машинное обучение 20 лет назад. Так что и это не окончательное решение проблемы языка.
  72. Большая экосистема софта (в основном Python) NumPy: многомерные массивы (тензоры)

    и прочая линейная алгебра;
  73. Большая экосистема софта (в основном Python) NumPy: многомерные массивы (тензоры)

    и прочая линейная алгебра; Закон: каждая IT-компания с персоналом больше 10 тысяч человек делает свой DL-фреймворк; open source → всем хорошо;
  74. Большая экосистема софта (в основном Python) NumPy: многомерные массивы (тензоры)

    и прочая линейная алгебра; Закон: каждая IT-компания с персоналом больше 10 тысяч человек делает свой DL-фреймворк; open source → всем хорошо; TensorFlow от Google https://tensorflow.org/ PyTorch от Facebook https://pytorch.org/
  75. Под капотом у фреймворков: вычислительный граф directed acyclic graph (DAG)

  76. Под капотом у фреймворков: вычислительный граф directed acyclic graph (DAG)

    Репрезентация вычисления математического выражения;
  77. Под капотом у фреймворков: вычислительный граф directed acyclic graph (DAG)

    Репрезентация вычисления математического выражения; каждая операция и переменная — это узел в графе;
  78. Под капотом у фреймворков: вычислительный граф directed acyclic graph (DAG)

    Репрезентация вычисления математического выражения; каждая операция и переменная — это узел в графе; позволяет легко создавать сетевые архитектуры произвольной сложности и глубины (лишь бы дифференцировались).
  79. TensorFlow или PyTorch? В чём разница? В TensorFlow графы статические

    (компилируем граф — запускаем). В PyTorch графы динамические (конструируем новый граф на лету для каждого инпута).
  80. TensorFlow или PyTorch? В чём разница? В TensorFlow графы статические

    (компилируем граф — запускаем). На самом деле, TensorFlow поддерживает и динамические графы (eager execution). В PyTorch графы динамические (конструируем новый граф на лету для каждого инпута).
  81. TensorFlow или PyTorch? В чём разница? В TensorFlow графы статические

    (компилируем граф — запускаем). На самом деле, TensorFlow поддерживает и динамические графы (eager execution). В PyTorch графы динамические (конструируем новый граф на лету для каждого инпута). В PyTorch удобно реализовывать и тестировать сложные архитектуры.
  82. TensorFlow или PyTorch? В чём разница? В TensorFlow графы статические

    (компилируем граф — запускаем). На самом деле, TensorFlow поддерживает и динамические графы (eager execution). Keras: удобный враппер для типовых задач и быстрого прототипирования. В PyTorch графы динамические (конструируем новый граф на лету для каждого инпута). В PyTorch удобно реализовывать и тестировать сложные архитектуры. AllenNLP: удобный враппер для NLP-задач.
  83. TensorFlow или PyTorch? В чём разница? В TensorFlow графы статические

    (компилируем граф — запускаем). На самом деле, TensorFlow поддерживает и динамические графы (eager execution). Keras: удобный враппер для типовых задач и быстрого прототипирования. В PyTorch графы динамические (конструируем новый граф на лету для каждого инпута). В PyTorch удобно реализовывать и тестировать сложные архитектуры. AllenNLP: удобный враппер для NLP-задач. Оба фреймворка вполне готовы для промышленного применения, используйте то, на чём уже пишете.
  84. Take-home message #4 Фреймворки для NLP+DL: выбор стоит между PyTorch

    и TensorFlow. И оба хороши.
  85. Что почитать? Йоав Голдберг: Neural Network Methods for Natural Language

    Processing (Morgan & Claypool Publishers, 2017). Блог Себастьяна Рудера (http://ruder.io/)
  86. Вопросы? Нейронные сети в обработке текста: хайп или всерьёз и

    надолго? Андрей Кутузов (andreku@ifi.uio.no) Language Technology Group, University of Oslo https://rusvectores.org