Frame исследует трансферное обучение в средах с низким объемом данных с помощью FloydHub, fast.ai и PyTorch

Мы все наблюдали удивительный прогресс в применении искусственного интеллекта к огромным наборам данных. Более того, не остались в стороне те из нас, кто не отслеживает миллиарды фотографий или обзоров ресторанов: методы трансферного обучения упрощают улучшение специализированных моделей с данными, собранными для более общих задач. А благодаря таким фреймворкам, как PyTorch, прикладным библиотекам, таким как fast.ai, и доступности оборудования с массовым параллелизмом через такие компании, как FloydHub, эти методы доступны небольшим командам или даже отдельным разработчикам.

Наш любимый пример, иллюстрирующий вышеизложенное, - ULMFiT, где Джереми Ховард и Себастьян Рудер на fast.ai показывают, как точно классифицировать обзоры фильмов с помощью всего нескольких сотен помеченных примеров - и модели, обученной на огромном корпусе общих Английский текст.

Однако у Fast.ai была одна хитрость в рукаве, помимо практического знания английского языка и нескольких обзоров с пометками. У них была гора предметно-ориентированного текста: 100 000 образцов обзоров, демонстрирующих разницу между простым английским языком и критикой фильмов. Это заставило нас задуматься: сколько данных предметной области достаточно, чтобы преодолеть разрыв между несколькими обучающими примерами и общей языковой моделью?

Вопрос не праздный. Frame помогает компаниям любого размера маркировать, оценивать и иным образом понимать смысл разговоров с клиентами на таких каналах, как Zendesk, Intercom и Slack. Мы можем с уверенностью заявить: существует большой разрыв между «у нас достаточно мало разговоров, которые мы можем просмотреть вручную» и «у нас достаточно данных для обучения модели с нуля». Что может сделать растущее успешное предприятие с несколькими десятками лейблов и несколькими тысячами релевантных разговоров?

Ответ, оказывается, совсем немного! В этом посте мы собираемся использовать тот же набор данных обзора фильмов, чтобы показать, что трансферное обучение может иметь огромное значение, даже когда вы только начинаете собирать данные в своем домене. Мы рассмотрим, как трансферное обучение может помочь в языковом анализе, представим наш эксперимент и, наконец, покажем, почему даже компаниям с масштабируемыми наборами данных должно быть до этого дело!

Передача Что?

Если вы настраиваетесь не на сообщество глубокого обучения, давайте быстро освежимся. Глубокие нейронные сети - это техника, лежащая в основе многих недавних заголовков ИИ, особенно достижений в задачах восприятия, таких как понимание изображений, звука или письменной речи. Для наших целей самое важное, что нужно понять о глубоких сетях, - это то, что они состоят из слоев (это глубокая часть), каждый из которых преобразует свои входные данные в новое представление, которое ближе к ответ, который сеть обучена находить.

Распространенная жалоба на глубокое обучение заключается в том, что мы не всегда знаем, что происходит на этих средних уровнях ... но часто они предназначены для четких, интерпретируемых ролей! Например, многие языковые модели используют слои встраивания, которые преобразуют отдельные слова или небольшие фразы в систему координат, которая сближает похожие значения. Например, это может помочь ИИ-переводчику применить свой опыт использования слова «великий», когда он встречает фразу, в которой используется слово «прославленный». Это полезно, поскольку вы не встретите слово «прославленный» в таком большом количестве контекстов!

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

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

Именно здесь на помощь приходит Тонкая настройка универсальной языковой модели для классификации текста Джереми и Себастьяна Руддеров (ULMFiT). Они усовершенствовали общую языковую модель с помощью 100 000 обзоров IMDB. Несмотря на то, что было помечено всего несколько сотен, остальные могли бы помочь их ИИ понять, что рецензенты часто заменяют напряженный, напряженный на выдающийся - или просто великий - сокращая пробел в наших маркированных данных. Результаты были впечатляющими: точность классификации 94% с использованием всего 500 помеченных примеров.

Сколько (немаркированных данных) достаточно?

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

В этом исследовании мы сосредоточимся на ответах на следующие вопросы:

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

Мы ответили на вышесказанное с помощью эксперимента, который сочетается с fast.ai следующим образом: они использовали большой фиксированный пул данных домена и варьировали количество помеченных примеров, чтобы показать, как модель улучшилась. Мы сохранили количество помеченных примеров постоянным и варьировали количество дополнительных немаркированных доменных примеров. Более формально наш эксперимент состоит из

  1. Языковое моделирование (вариант)
  2. Языковая задача (инвариант)

Наша языковая задача, классификация настроений, аналогична задаче в исходной статье ULMFiT и использует набор данных IMDB Movie Review. Мы придерживаемся того, что количество помеченных примеров обучения сантиментам составляет 500 во всех экспериментах, число, которое, как мы думали, было достижимым для многих небольших областей и помогло бы подчеркнуть дифференциальную подъемную силу различных языковых моделей.

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

  • Только ULM: используется предварительно обученная модель английского языка Wikitext103.
  • Только домен: языковая модель на основе предметной области, обученная только на данных IMDB.
  • ULM + Domain: модель ULMFiT

Обучение этих моделей требует больших вычислительных ресурсов. При самых больших размерах домена обучение может занять несколько дней на обычном рабочем компьютере. Для ускорения работы и эффективного выполнения поиска по сетке нашего эксперимента параллельно мы использовали FloydHub. (Кроме того, люди из FloydHub держат свои машины на переднем крае, имея как PyTorch v1, так и fastai v1 поддерживающие GPU машины, доступные почти сразу после их выпуска.)

Результаты, достижения

После примерно 50 часов интенсивной обработки графическим процессором - но всего 3 часов работы настенных часов благодаря FloydHub - мы получили свои результаты!

То, что мы видим выше, рассказывает ясную историю:

  • Учет как широких языковых структур из ULM, так и немаркированного текста домена всегда приводит к значительному улучшению - даже когда текст домена минимален.
  • Мы можем получить 75% производительности UMLFiT с 33% данных домена.
  • Удивительно, но ULM + 2 000 примеров доменов достигли точности прогнозирования языковых задач почти 85%.

Заставить машинное обучение работать для всех

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

Наши результаты подтверждают ценность доменного подхода ULM + - он позволяет постепенно улучшать специализированные задачи по мере того, как становится доступным больше немаркированных доменных данных. Более того, мы показали, что улучшение наступает быстро, создавая многие из преимуществ обучения, продемонстрированных в документе ULMFiT, с долей немаркированных данных. Отображение того, как пассивно собранные данные о предметной области улучшают наши модели, помогает нам принимать обоснованные решения о том, когда открывать предметно-ориентированные модели, такие как наши нейронные теги, что важно как для наших затрат, так и для нашего руководства для клиентов.

Это отличная новость для любой компании, которая поставляет продукты данных NLU на основе новых или быстро развивающихся языковых доменов. Сокращение времени, необходимого для получения информации, не означает, что мы можем ориентироваться на более узкие области. Это означает, что модели могут адаптироваться к дрейфу распределения с течением времени за счет сокращения окон обучения, и позволяет нам строить гораздо более детализированные гиперлокальные модели, ориентированные только на один сегмент / местоположение / местоположение и т. Д. Клиентов!

Чтобы поиграть с этими подходами самостоятельно, ознакомьтесь с нашим репозиторием и запустите собственное рабочее пространство на FloydHub, нажав здесь. Оказавшись в рабочем пространстве FloydHub, просто откройте 00_start_here.ipynb и следуйте инструкциям.

Наконец, если вы находите такие проблемы с естественным языком и глубоким обучением привлекательными, напишите нам по адресу [email protected], мы будем рады поговорить.