В наши дни приложения Обработка естественного языка (NLP) стали повсеместными. Кажется, я регулярно натыкаюсь на веб-сайты и приложения, которые в той или иной форме используют НЛП. Короче говоря, это прекрасное время для участия в сфере НЛП.

Столь быстрое распространение НЛП произошло во многом благодаря концепции трансферного обучения, возможного с помощью предварительно обученных моделей. Трансферное обучение в контексте НЛП - это, по сути, способность обучать модель на одном наборе данных, а затем адаптировать эту модель для выполнения различных функций НЛП на другом наборе данных.

Этот прорыв сделал вещи невероятно легкими и простыми для всех, особенно для людей, у которых нет времени или ресурсов для создания моделей НЛП с нуля. Он также идеально подходит для новичков, которые хотят изучить НЛП или перейти на него.

Зачем использовать предварительно обученные модели?

  • Автор (ы) уже приложили усилия, чтобы разработать для вас эталонную модель! Вместо того, чтобы создавать модель с нуля для решения аналогичной проблемы НЛП, мы можем использовать эту предварительно обученную модель в нашем собственном наборе данных НЛП.
  • Потребуется небольшая настройка, но это сэкономит нам массу времени и вычислительных ресурсов.

В этой статье я продемонстрировал лучшие предварительно обученные модели, которые вы можете использовать, чтобы начать свое путешествие по НЛП, и воспроизвел самые современные исследования в этой области. Вы можете ознакомиться с моей статьей о топовых предварительно обученных моделях компьютерного зрения здесь.

Если вы новичок в НЛП, рекомендую пройти наш популярный курс НЛП с использованием Python.

Предварительно обученные модели НЛП, рассматриваемые в этой статье

Я разделил предварительно обученные модели на три разные категории в зависимости от их применения:

  • Многоцелевые модели НЛП
  • ULMFiT
  • Трансформатор
  • Google BERT
  • Трансформер-XL
  • GPT-2 OpenAI
  • Вложения слов
  • ELMo
  • Чутье
  • Другие предварительно обученные модели
  • StanfordNLP

Многоцелевые модели НЛП

В мире НЛП говорят о многоцелевых моделях. Эти модели используются в приложениях НЛП, которые нас волнуют - машинном переводе, системах ответов на вопросы, чат-ботах, анализе настроений и т. Д. Ключевым компонентом этих многоцелевых моделей НЛП является концепция языкового моделирования.

Проще говоря, цель языковой модели - предсказать следующее слово или символ в последовательности. Мы поймем это, когда рассмотрим здесь каждую модель.

Если вы энтузиаст НЛП, вам понравится этот раздел. Теперь давайте погрузимся в 5 современных многоцелевых моделей НЛП. Я предоставил ссылки на исследовательскую работу и предварительно обученные модели для каждой модели. Идите вперед и исследуйте их!

УЛМФиТ

ULMFiT был предложен и разработан Джереми Ховардом из fast.ai, Себастьяном Рудером из DeepMind. Можно сказать, что ULMFiT был тем релизом, с которого в прошлом году стартовала вечеринка по переносу обучения.

Как мы уже писали в этой статье, ULMFiT достигает самых современных результатов, используя новые техники НЛП. Этот метод включает в себя точную настройку предварительно обученной языковой модели, обученной на наборе данных Wikitext 103, для нового набора данных таким образом, чтобы не забыть то, что было изучено ранее.

ULMFiT превосходит многие современные задачи классификации текстов. Что мне понравилось в ULMFiT, так это то, что для получения столь впечатляющих результатов требуется несколько примеров. Помогает таким людям, как вы и я, понять и реализовать его на наших машинах!

Если вам интересно, ULMFiT означает тонкая настройка универсальной языковой модели. Слово «универсальный» здесь вполне уместно - эту структуру можно применить практически к любой задаче НЛП.

Ресурсы, чтобы узнать и узнать больше о ULMFiT:

Трансформер

Архитектура Transformer лежит в основе почти всех последних крупных разработок в области НЛП. Он был представлен в 2017 году компанией Google. В то время рекуррентные нейронные сети (RNN) использовались для языковых задач, таких как машинный перевод и системы ответов на вопросы.

Эта архитектура Transformer превзошла как RNN, так и CNN (сверточные нейронные сети). Вычислительные ресурсы, необходимые для обучения моделей, также были сокращены. Беспроигрышный вариант для всех в НЛП. Посмотрите сравнение ниже:

Согласно Google, Transformer «применяет механизм самовнимания, который напрямую моделирует отношения между всеми словами в предложении, независимо от их положения». Это делается с использованием контекста фиксированного размера (также известного как предыдущие слова). Слишком сложно получить? Давайте рассмотрим пример, чтобы упростить это.

«Она нашла снаряды на берегу реки». Модель должна понимать, что «банк» здесь относится к берегу, а не к финансовому учреждению. Transformer понимает это за один шаг. Я рекомендую вам прочитать всю статью, на которую я ссылаюсь ниже, чтобы понять, как это работает. Это взорвет ваш ум.

Приведенная ниже анимация прекрасно иллюстрирует, как Transformer работает с задачей машинного перевода:

В прошлом году Google выпустила улучшенную версию Transformer под названием Universal Transformer. Есть еще более новая и интуитивно понятная версия под названием Transformer-XL, о которой мы расскажем ниже.

Ресурсы, чтобы узнать больше о Transformer:

Google BERT

Фреймворк BERT произвел фурор с тех пор, как Google опубликовал свои результаты, а затем открыл исходный код лежащего в его основе кода. Мы можем спорить, знаменует ли это новую эру в НЛП, но нет ни малейшего сомнения в том, что BERT - очень полезная структура, которая хорошо обобщается для множества задач НЛП.

BERT, сокращение от B двунаправленных представлений E кодировщика R, рассматривает контекст с обеих сторон (левой и правой) слова. Во всех предыдущих попытках учитывалась одна сторона слова - левая или правая. Такая двунаправленность помогает модели лучше понять контекст, в котором использовались слова. Кроме того, BERT предназначен для многозадачного обучения, то есть может одновременно выполнять разные задачи НЛП.

BERT - первая неконтролируемая, глубоко двунаправленная система для предварительного обучения моделей НЛП. Он был обучен с использованием только обычного текстового корпуса.

На момент выпуска BERT выдавал самые современные результаты по 11 задачам обработки естественного языка (NLP). Довольно монументальный подвиг! Вы можете обучить свою собственную модель НЛП (например, систему ответов на вопросы) с помощью BERT всего за несколько часов (на одном графическом процессоре).

Ресурсы, чтобы узнать и прочитать больше о BERT:

Трансформер Google-XL

Этот выпуск от Google потенциально может стать очень важным в долгосрочном плане для НЛП. Эта концепция может стать немного сложной, если вы новичок, поэтому я рекомендую вам прочитать ее несколько раз, чтобы понять ее. Я также предоставил несколько ресурсов под этим разделом, чтобы помочь вам начать работу с Transformer-XL.

Представьте себе: вы читаете книгу на полпути, и внезапно появляется слово или предложение, на которое имеется ссылка в начале книги. Теперь мы с вами можем вспомнить, что это было. Но машина, по понятным причинам, изо всех сил пытается смоделировать долгосрочную зависимость.

Один из способов сделать это, как мы видели выше, - использовать трансформаторы. Но они реализованы в контексте фиксированной длины. Другими словами, при использовании этого подхода не будет большой гибкости.

Transformer-XL действительно хорошо перекрывает этот разрыв. Разработанная командой Google AI, это новая архитектура NLP, которая помогает машинам понимать контекст, выходящий за рамки этого ограничения фиксированной длины. Transformer-XL до 1800 раз быстрее, чем обычный трансформатор.

Вы поймете эту разницу благодаря двум нижеприведенным GIF-файлам, выпущенным Google:

Трансформатор ванили

Трансформер-XL

Transformer-XL, как вы, возможно, уже догадались, достигает новых современных результатов на различных тестах / наборах данных языкового моделирования. Вот небольшая таблица, взятая с их страницы, иллюстрирующая это:

Метод enwiki8 text8 Один миллиард слов WT-103 PTB (без точной настройки) Предыдущее Лучшее 1,06 1,13 23,7 20,5 55,5 Transformer-XL 0,99 1,08 21,8 18,3 54,5

Репозиторий Transformer-XL на GitHub, связанный выше и упомянутый ниже, содержит код как в PyTorch, так и в TensorFlow.

Ресурсы, чтобы узнать больше о Transformer-XL:

OpenAI’s GPT-2

Это довольно спорная запись. Некоторые люди могут возразить, что выпуск GPT-2 был маркетинговым ходом OpenAI. Я конечно понимаю, откуда они берутся. Однако я считаю, что важно хотя бы опробовать код, выпущенный OpenAI.

Во-первых, некоторый контекст для тех, кто не понимает, о чем я говорю. В феврале OpenAI опубликовал сообщение в блоге (ссылка ниже), в котором они утверждали, что разработали модель НЛП, названную GPT-2, которая была настолько хороша, что они не могли позволить себе выпустить полную версию из опасений злонамеренного использования. Это определенно привлекло внимание сообщества.

GPT-2 был обучен предсказывать следующее встречающееся слово в 40 ГБ текстовых данных в Интернете. Эта структура также представляет собой модель на основе преобразователя, обученную на наборе данных из 8 миллионов веб-страниц. Результаты, которые они опубликовали на своем сайте, просто поразительны. Модель может составить полностью разборчивую историю на основе нескольких вводимых нами предложений. Посмотрите этот пример:

Невероятно, правда?

Разработчики выпустили гораздо меньшую версию GPT-2 для тестирования исследователей и инженеров. Исходная модель имеет 1,5 миллиарда параметров, а образец модели с открытым исходным кодом - 117 миллионов.

Ресурсы, чтобы узнать больше о GPT-2:

Вложения слов

Большинство используемых нами алгоритмов машинного обучения и глубокого обучения не могут работать напрямую со строками и обычным текстом. Эти методы требуют от нас преобразования текстовых данных в числа, прежде чем они смогут выполнять какую-либо задачу (например, регрессию или классификацию).

Проще говоря, вложения слов - это текстовые блоки, которые преобразуются в числа для выполнения задач НЛП. Формат встраивания слов обычно пытается сопоставить слово, используя словарь, с вектором.

Вы можете получить более подробное объяснение встраивания слов, его различных типов и способов их использования в наборе данных в статье ниже. Если вы не знакомы с концепцией, я считаю это руководство обязательным к прочтению:

В этом разделе мы рассмотрим два современных вложения слов для НЛП. Я также предоставил ссылки на учебные пособия, чтобы вы могли получить практическое представление о каждой теме.

ЭЛМО

Нет, этот Эльмо ​​не тот (по общему признанию крутой) персонаж из «Улицы Сезам». Но этот ELMo, сокращение от Embeddings from Language Models, довольно полезно в контексте построения моделей NLP.

ELMo - это новый способ представления слов в векторах и вложениях. Эти вложения слов ELMo помогают нам достичь самых современных результатов в нескольких задачах НЛП, как показано ниже:

Давайте поймем момент, чтобы понять, как работает ELMo. Вспомните, что мы обсуждали ранее о двунаправленных языковых моделях. Исходя из этой статьи, «векторы слов ELMo вычисляются на основе двухуровневой двунаправленной языковой модели (biLM). Эта модель biLM состоит из двух слоев, сложенных вместе. Каждый слой имеет 2 прохода - прямой и обратный:

Представления слов ELMo рассматривают полное входное предложение для вычисления вложений слов. Таким образом, термин «читать» будет иметь разные векторы ELMo в разном контексте. Это далеко от старых вложений слов, когда один и тот же вектор присваивался слову «чтение» независимо от контекста, в котором оно использовалось.

Ресурсы, чтобы узнать и прочитать больше об ELMo:

Чутье

Flair - это не совсем вложение слов, а комбинация вложений слов. Мы можем назвать Flair больше библиотекой NLP, которая сочетает в себе вложения, такие как GloVe, BERT, ELMo и т. Д. Хорошие ребята из Zalando Research разработали Flair с открытым исходным кодом.

Команда выпустила несколько предварительно обученных моделей для следующих задач НЛП:

  • Распознавание имени и сущности (NER)
  • Теги частей речи (PoS)
  • Классификация текста
  • Обучение пользовательских моделей

Еще не убедили? Что ж, эта сравнительная таблица поможет вам:

Flair Embedding - это вложение подписи, которое входит в состав библиотеки Flair. Он основан на встраивании контекстных строк. Вам следует прочитать эту статью, чтобы понять основные компоненты, лежащие в основе Flair.

Что мне особенно нравится в Flair, так это то, что он поддерживает несколько языков. Так много выпусков НЛП застревают в выполнении английских задач. Если мы хотим, чтобы НЛП стало популярным во всем мире, нам нужно выйти за рамки этого!

Ресурсы, чтобы узнать больше о Flair:

Другие предварительно обученные модели

СтэнфордНЛП

Говоря о расширении НЛП за пределы английского языка, вот библиотека, которая уже устанавливает критерии. Авторы утверждают, что StanfordNLP поддерживает более 53 языков - это, безусловно, привлекло наше внимание!

Наша команда была одной из первых, кто работал с библиотекой и публиковал результаты в реальном наборе данных. Мы поэкспериментировали с этим и обнаружили, что StanfordNLP действительно открывает множество возможностей применения техник NLP на языках, отличных от английского. как хинди, китайский и японский.

StanfordNLP - это коллекция предварительно обученных современных моделей НЛП. Эти модели не только прошли лабораторные испытания - они использовались авторами в соревнованиях CoNLL 2017 и 2018 годов. Все предварительно обученные модели НЛП, упакованные в StanfordNLP, построены на PyTorch и могут быть обучены и оценены на ваших собственных аннотированных данных.

Мы считаем, что вам следует рассмотреть вопрос о StanfordNLP по двум основным причинам:

  • Полный конвейер нейронной сети для выполнения текстовой аналитики, в том числе:
  • Токенизация
  • Расширение многословного токена (MWT)
  • Лемматизация
  • Маркировка частей речи (POS) и морфологических признаков
  • Анализ зависимостей
  • Стабильный официально поддерживаемый интерфейс Python для CoreNLP

Ресурсы, чтобы узнать больше о StanfordNLP:

Конечные заметки

Это ни в коем случае не исчерпывающий список предварительно обученных моделей НЛП. Их гораздо больше, и вы можете проверить некоторые из них на этом сайте.

Вот несколько полезных ресурсов для изучения НЛП:

Я хотел бы услышать ваши мысли об этом списке. Вы раньше пользовались какой-либо из этих предварительно обученных моделей? Или вы, возможно, изучали другие варианты? Дайте мне знать в разделе комментариев ниже - я буду рад проверить их и добавить в этот список.

Первоначально опубликовано на www.analyticsvidhya.com 18 марта 2019 г.