Машинное понимание — очень интересная, но сложная задача как в области обработки естественного языка (НЛП), так и в исследованиях искусственного интеллекта (ИИ). Существует несколько подходов к задачам обработки естественного языка. Благодаря недавним прорывам в алгоритмах глубокого обучения, оборудовании и удобных API, таких как TensorFlow*, некоторые задачи стали выполнимыми с определенной точностью. Эта статья содержит информацию о реализациях TensorFlow различных моделей глубокого обучения с упором на проблемы обработки естественного языка. Цель этой проектной статьи — помочь машине понять смысл предложений, что повышает эффективность машинного перевода, и взаимодействовать с вычислительными системами для получения от них полезной информации.

Понимание обработки естественного языка

Наша способность оценивать взаимосвязь между предложениями необходима для решения различных задач естественного языка, таких как обобщение текста, извлечение информации и машинный перевод. Эта задача формализована как задача вывода на естественном языке «Распознавание текстового следования» (RTE), которая включает в себя классификацию отношений между двумя предложениями как отношения следствия, противоречия или нейтральности. Например, посылка «Гарфилд — кошка» естественным образом влечет за собой утверждение «У Гарфилда есть лапы», противоречит утверждению «Гарфилд — немецкая овчарка» и нейтрально по отношению к утверждению «Гарфилд любит спать».

Рисунок 1. Базовая модель НЛП с использованием глубокого обучения.

Обработка естественного языка 1 — это способность компьютерной программы понимать человеческий язык так, как на нем говорят. NLP — это компонент искусственного интеллекта, который занимается взаимодействием между компьютерами и человеческими языками в отношении обработки и анализа больших объемов данных на естественном языке. Обработка естественного языка 1 может выполнять несколько различных задач, обрабатывая естественные данные с помощью различных эффективных средств. Эти задачи могут включать:

  • Отвечать на любые вопросы (что могут сделать Siri*, Alexa* и Cortana*).
  • Анализ настроений (определение того, является ли отношение положительным, отрицательным или нейтральным)
  • Сопоставление изображения с текстом (создание подписей с использованием входного изображения)
  • Машинный перевод (перевод текста на разные языки)
  • Распознавание речи
  • Маркировка части речи (POS)
  • Идентификация объекта

Традиционный подход к НЛП включал в себя обширные знания предметной области самой лингвистики.

Глубокое обучение 2 на самом базовом уровне связано с репрезентативным обучением. В сверточных нейронных сетях (CNN) используется комбинация различных фильтров для классификации объектов по категориям. Используя аналогичный подход, в этой статье создаются представления слов с помощью больших наборов данных.

Разговорный ИИ: функции обработки естественного языка

  • Обработка естественного языка (NLP)
  • Интеллектуальный анализ текста (ТМ)
  • Компьютерная лингвистика (КЛ)
  • Машинное обучение на текстовых данных (ML на тексте)
  • Подходы Deep Lean для текстовых данных (DL на тексте)
  • Понимание естественного языка (NLU)
  • Генерация естественного языка (NLG)

Разговорный ИИ, как показано выше, за последние годы претерпел несколько удивительных достижений, включая значительные улучшения в автоматическом распознавании речи (ASR), преобразования текста в речь (TTS) и распознавании намерений, а также значительный рост устройств голосового помощника, таких как Amazon. Эхо* и Google Home*.

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

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

слова векторов

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

Найдите N-мерное векторное пространство (где N ‹‹ 13 миллионов), достаточное для кодирования всей семантики нашего языка. Для этого необходимо иметь представление о сходстве и различии слов. Понятие векторов и расстояний между ними (косинусное, евклидово и т. д.) можно использовать для поиска сходств и различий между словами.

Рисунок 2. Источник: Обзор исследований глубокого обучения, неделя 3: обработка естественного языка — Word Vectors

Как мы представляем значение слов?

Если для всех 13 миллионов слов английского словаря используются отдельные векторы, может возникнуть несколько проблем. Во-первых, будут большие векторы с большим количеством «нулей» и одной «единицей» (в разных позициях, представляющих другое слово). Это также известно как горячее кодирование. Во-вторых, при поиске в Google таких фраз, как «гостиницы в Нью-Джерси», ожидается, что будут возвращены результаты, относящиеся к «мотель», «жилье», «жилье» в Нью-Джерси. А если использовать однократное кодирование, то эти слова не имеют естественного понятия сходства. В идеале скалярные произведения (поскольку мы имеем дело с векторами) синонимов/похожих слов были бы близки к одному из ожидаемых результатов.

Рисунок 3. Источник: Обзор исследований глубокого обучения, неделя 3: обработка естественного языка — инициализация матрицы.

Word2vec 8 — это группа моделей, которая помогает установить отношения между словом и его контекстуальными словами. Начиная с небольшой случайной инициализации векторов слов, прогнозирующая модель изучает векторы, минимизируя функцию потерь. В Word2vec это происходит с помощью нейронной сети с прямой связью и методов оптимизации, таких как алгоритм SGD. Существуют также модели на основе подсчета, которые составляют матрицу подсчета совпадений слов в корпусе; с большой матрицей со строкой для каждого из «слов» и столбцами для «контекста». Количество «контекстов», конечно, велико, так как по сути он комбинаторный по размеру. Чтобы преодолеть проблему размера, к матрице можно применить разложение по сингулярным числам, уменьшив размеры матрицы и сохранив максимум информации.

Программное и аппаратное обеспечение

Используемый язык программирования — Python* 3.5.2 с Intel® Optimization for TensorFlow* в качестве основы. Для обучения и вычислений использовалась платформа Intel® AI DevCloud на базе процессоров Intel® Xeon® Scalable. Intel AI DevCloud может обеспечить значительный прирост производительности центрального процессора для правильного приложения и варианта использования благодаря наличию более 50 ядер и собственной памяти, межсоединений и операционной системы.

Модели обучения НЛП: Langmod_nn и Memn2n-master

Модель Langmod_nn

Модель Langmod_nn 6 строит трехуровневую нейронную сеть модели прямой биграммы, состоящую из слоя внедрения, скрытого слоя и последнего слоя softmax, где цель состоит в том, чтобы использовать данное слово в корпусе, чтобы попытаться предсказать следующее слово.

Для передачи входных данных в один горячий закодированный вектор размером 5000.

Вход

Слово в корпусе. Поскольку размер словаря может быть очень большим, мы ограничили словарный запас до 5000 первых слов в корпусе, а остальные слова заменили символом UNK. Каждое предложение в корпусе также дважды дополнено стоп-символами.

Вывод

Следующее слово в корпусе также закодировано однократно в векторе размером со словарь.

Слои

Модель состоит из следующих трех слоев:

  1. Встраивание слоя
  2. Каждое слово соответствует уникальному вектору вложения, представлению слова в некотором пространстве вложения. Здесь все вложения имеют размерность 50. Мы находим вложение для данного слова, выполняя умножение матрицы (по сути, поиск в таблице) на матрицу вложения, которая обучается во время обычного обратного распространения.
  3. Скрытый слой
  4. Полносвязный слой прямой связи со скрытым размером слоя 100 и активацией выпрямленной линейной единицы (ReLU).
  5. Слой Softmax
  6. Полносвязный слой прямой связи с размером слоя, равным размеру словаря, где каждый элемент выходного вектора (логиты) соответствует вероятности того, что это слово в словаре будет следующим словом.

Потеря

Нормальная кросс-энтропийная потеря между логитами и истинными метками как стоимость модели.

Оптимизатор

Обычный оптимизатор SGD со скоростью обучения 0,05.

Каждая эпоха (около 480 000 примеров) требует около 10 минут для обучения процессора. Вероятность журнала испытаний после пятой эпохи составляет -846493,44.

Рисунок 4. Потери при обучении в модели Langmod_nn.

Рисунок 5. Тест Loss в модели Langmod_nn.

Memn2n-мастер

Memn2n-master 7 — это нейронная сеть с рекуррентной моделью внимания на возможно большой внешней памяти. Архитектура представляет собой форму сети памяти, но, в отличие от модели в этой работе, она обучается от начала до конца и, следовательно, требует значительно меньшего контроля во время обучения, что делает ее более применимой в реалистичных условиях.

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

Входные данные

Этот каталог включает в себя первый набор из 20 заданий для проверки понимания текста и рассуждений в проекте bAbI 5. Мотив этих 20 заданий заключается в том, что каждое задание проверяет уникальный аспект текста и рассуждений и, следовательно, проверяет различные способности обученных моделей.

И для тестирования, и для обучения у нас есть по 1000 вопросов. Однако мы не использовали столько данных, поскольку они могут быть бесполезны.

Результаты этой модели: точность тестирования 99,6%, точность обучения 97,6% и точность проверки 88%.

Платформа TensorFlow показала хорошие результаты для обучения моделей нейронных сетей с моделями НЛП, демонстрирующими хорошую точность. Тренировки, тестирование и результаты потерь были отличными. Модель Langmod_nn и сети памяти дали хорошие показатели точности с низким значением потерь и ошибок. Гибкость модели памяти позволяет применять ее к таким разнообразным задачам, как ответы на вопросы и языковое моделирование.

Вывод

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

В будущем НЛП выйдет за рамки как статистических систем, так и систем, основанных на правилах, к естественному пониманию языка. Технические гиганты уже внесли некоторые улучшения. Например, Facebook* пытался использовать глубокое обучение для понимания текста без синтаксического анализа, тегов, распознавания именованных объектов (NER) и т. д., а Google пытается преобразовать язык в математические выражения. Обнаружение конечных точек с использованием сетевых сетей долговременной краткосрочной памяти и сквозных сетей памяти в задаче bAbI, выполняемой Google и Facebook, соответственно, показывает прогресс, который может быть достигнут в моделях НЛП 6.

использованная литература

  1. Обзор исследований глубокого обучения, неделя 3: обработка естественного языка
  2. Глубокое обучение
  3. Использование глубокого обучения для структурированных данных с внедрением сущностей
  4. Слово в векторы — обработка естественного языка
  5. Проект БАБИ
  6. Сквозная сеть памяти GitHub* с использованием TensorFlow*
  7. Файлы GitHub TensorFlow Tutorial и реализации различных моделей Deep NLP и CV
  8. Почему и когда работает глубокое обучение: взгляд изнутри на глубокое обучение

Первоначально опубликовано на https://software.intel.com 26 октября 2018 г.