Читать нас в Telegram
NLP
Иллюстратор: Грета Исагулова

Сегодня многие языковые модели обучаются под специальную задачу. Например, мы просим нейросеть: «переведи с английского на русский», «угадай закрытое слово», «пойми, что за этим следует» и так далее. Однако с развитием автоматической обработки языка (NLP) задачи становятся все более абстрактными и в итоге приходят к одной: «научись понимать запрос и порождать адекватный ответ».

Такие модели при умелой постановке вопроса умеют и переводить, и кроссворды разгадывать, и даже программный код писать. Одна из идей OpenAI, которая прославилась своими моделями серии GPT, как раз в этом: почти любую задачу «искусственного интеллекта» можно сформулировать как продолжение какого-то текста.

В современных языковых моделях слова представлены в виде векторов-эмбеддингов, и если на начальных этапах развития NLP эмбеддинги хранили только информацию о частотных контекстах употребления слов, то современные продвинутые модели создают векторные представления слов, содержащие синтаксическую и морфологическую информацию.

Зачем нам тесты для моделей?

Понимание природы эмбеддингов может помочь нам разораться в том, почему одни модели успешны, а другие терпят неудачу, чему они уже научились и чему нам еще нужно их научить. Современные исследования стремятся сделать именно это — помочь нам интерпретировать свойства внутренних представлений таких моделей, как ELMo и BERT. Чтобы проверить интуицию о том, совпадают ли свойства векторных представлений слов с их лингвистическими свойствами (например, частями речи), готовые эмбеддинги используют при обучении другой модели (например, классификатора) для определения этого свойства.

Ключевая идея в том, что достижение высокой точности при прогнозировании свойства подразумевает, что свойство уже было закодировано в представлении. Значит, если классификатор, обученный на эмбеддингах отлично разделяет прилагательные и причастия, то модель, превратившая слова в вектора (ELMo, BERT, LSTM и т.п.), заметила разницу.

Как устроены тесты?

В 2018 году команда ученых из Facebook разработала универсальный набор тестов для оценки качества моделей — SentEval. Исследователи объединили несколько общепринятых тестов в единую цепочку с фиксированными условиями.

«Экзамен» для моделей состоит из 10 основных заданий, концептуально разделенных на группы: внешнюю информацию, синтаксическую информацию и семантическую информацию. Давайте посмотрим на них чуть подробнее.

Внешняя информация

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

  1. Посчитать число слов в предложении
  2. Указать, какое слово из данного словаря есть в предложении

Синтаксическая информация

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

  1. Найти предложения, в которых изменен порядок двух соседних слов
  2. Рассчитать глубину синтаксического дерева. В лингвистике предложения представляют в виде направленных графов, где слова — вершины, а направления ребер указывают на синтаксические зависимости. Глубина этого дерева — число уровней зависимости.
  3. Назвать верхнеуровневые составляющие. Нужно посмотреть на верхний уровень нашего дерева и указать тип составляющих, он связан с частями речи главных слов в словосочетаниях.

Семантическая информация

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

  1. Определить время глагола в главном предложении
  2. Определить число подлежащего (сначала нужно понять, что в предложении подлежащее)
  3. Определить число прямого дополнения
  4. Понять, в каких предложениях одно из слов заменили (при этом заменили на слово с той же частотностью)
  5. Понять, в каких сложносочиненных предложениях части поменяли местами. Типичный пример:
    Пусть это только воспоминания, но я до сих пор чувствую каждое из них.
    Я до сих пор чувствую каждое из них, но пусть это только воспоминания.

А что дальше?

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

Если раньше большинство исследований в NLP было связано с разработкой новых моделей, то сейчас фокус смещается в сторону изучения устройства уже существующих.

Оказывается, внутри нейросети тоже есть разные уровни «освоения» языка. Так, обучая разное число слоев BERT, ученые выяснили, что каждый отдельные уровни модели показывают лучшие результаты на заданиях определенного типа. Так, нижние слои лучше всего сохраняют внешнюю информацию, иерархическую структуру предложения и порядок слов. Средние слои успешно справляются с синтаксическими заданиями пробинга, а верхние слои скорее сохраняют информацию для конкретного задания, на которое обучается модель.

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

Источники

  1. SentEval: evaluation toolkit for sentence embeddings
  2. Probing sentence embeddings for linguistic properties 
  3. What we know about how BERT works 
  4. SentEval: An Evaluation Toolkit for Universal Sentence Representations