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

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

CodeFest
April 05, 2019

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

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

CodeFest

April 05, 2019
Tweet

More Decks by CodeFest

Other Decks in Technology

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 такой? Computational Linguistics (CL); Natural

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    — «нефть XXI века»; Все хотят обрабатывать большие данные (особенно в IT); Данные очень часто спрятаны в текстах. NLP нынче в каждом смартфоне: поисковики (information retrieval) машинный перевод определение тональности (sentiment analysis) детектирование спама распознавание речи чатботы автореферирование (summarization) виртуальные личные помощники (Алиса, Siri, Alexa, Cortana)...
  19. Язык — это очень не просто (особенно морфологически сложный —

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    самых разных сущностей. Крайне важно в NLP: тут много сложных объектов, для которых нужно уметь определять близость: звуки, буквы, слова, предложения, тексты... даже языки. Такие репрезентации мы называем embeddings (например, word embeddings).
  48. Deep learning сильно изменил NLP Гораздо меньше ручного feature engineering:

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

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

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

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

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

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

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

    не показывают (чтобы злодеи не воспользовались): Неблагодарные компьютерные лингвисты издеваются:
  56. Take-home message #3 Deep learning в NLP — не хайп,

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

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

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

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

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

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

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

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

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

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

    (компилируем граф — запускаем). На самом деле, TensorFlow поддерживает и динамические графы (eager execution). Keras: удобный враппер для типовых задач и быстрого прототипирования. В PyTorch графы динамические (конструируем новый граф на лету для каждого инпута). В PyTorch удобно реализовывать и тестировать сложные архитектуры. AllenNLP: удобный враппер для NLP-задач. Оба фреймворка вполне готовы для промышленного применения, используйте то, на чём уже пишете.
  67. Что почитать? Йоав Голдберг: Neural Network Methods for Natural Language

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

    надолго? Андрей Кутузов ([email protected]) Language Technology Group, University of Oslo https://rusvectores.org