Оптимизация моделей с использованием графиков t-SNE

Как можно использовать высокоразмерные векторные изображения текста для улучшения процесса покупки дома?

В Doma мы используем машинное обучение и обработку естественного языка (NLP), чтобы обеспечить быстрое и безболезненное закрытие закладных. Наши данные в формате RTF помогают нам решать ряд интересных задач. В этом посте я поделюсь кратким обзором того, как мы использовали векторное представление наших данных и методы визуализации для оптимизации производительности одной из наших моделей.

Измерение неструктурированных данных

Одна замечательная вещь в том, чтобы быть специалистом по обработке данных в наши дни, заключается в том, что мы получили доступ к: 1. большим объемам вычислительной мощности, 2. огромным объемам данных, 3. фундаментальным исследованиям и 4. энергичному сообществу с открытым исходным кодом, к которому нужно стремиться. неструктурированные данные, такие как изображения и текст, и отображать их в метрическое пространство, где мы МОЖЕМ измерить различия.

На Рисунке 1 показан замечательный пример этого. Хотя мы, возможно, не сможем количественно оценить разницу между изображением милого лабрадора, милого мопса и застенчивого шибу-ину ниже, мы можем пропустить эти изображения через большую модель компьютерного зрения, такую ​​как ResNet, и количественно определить расстояния между векторными представлениями эти фотографии.

Мы будем использовать идеи, показанные на рисунке 1 об измерении неструктурированных данных, для понимания нашей текстовой модели.

Бизнес-цель

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

Наш подход

Для построения нашей модели мы использовали DistilBERT, меньшую, более быструю, дешевую и легкую версию модели двунаправленных представлений кодировщика от трансформаторов (BERT), которая является общей языковой моделью.

Целью было построить модель мультиклассификации для наших текстовых данных, и наш подход заключался в точной настройке предварительно обученной модели DistilBERT для классификации последовательностей с использованием пакета huggingface transformers. Для векторного представления нашего набора данных мы использовали выходные данные уровня предварительной классификации нашей точно настроенной модели (пример кода см. В Приложении).

Это текстовое векторное представление имеет 768 измерений, поэтому затем мы обратились к методам уменьшения размеров, чтобы визуализировать наши данные.

Уменьшение размеров

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

В книге сфера, посещаемая из трехмерного космоса, смотрящая вниз на двумерную равнину, говорит кругу: «Я различил все, о чем вы говорите, как твердое (что вы имеете в виду« заключенное с четырех сторон »)… даже ваши внутренности и животы, все лежащие открытыми и открытыми для моего взгляда ». Затем сфера приступает к легкому прикосновению круга к его животу, чтобы показать, что он имеет доступ к измерению, которое круг не может представить. После этого, всякий раз, когда у меня болел живот, я задавался вопросом, не проникает ли ко мне во внутренности существо из более высоких измерений.

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

Картографы веками проецировали земную поверхность на двухмерные карты, и на Рисунке 2 показаны некоторые из возникающих проблем.

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

Для данных большой размерности становится еще сложнее сохранять мелкомасштабные и крупномасштабные шаблоны, поскольку мы переводим данные в 2-D, но общий подход заключается в использовании t-распределенного стохастического соседнего встраивания (t-SNE ) алгоритм.

t-SNE

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

Более конкретно, как видно из уравнения 1, функция стоимости для минимизации различий между распределениями данных с высокой и низкой размерностью задается дивергенцией Кульбака-Лейблера, где pij представляет собой основанное на вероятности расстояние между точками i и j в пространство большой размерности и qij пространство низкой размерности. Особенности распределения вероятностей можно найти в оригинальной статье.

(1) C = KL (P || Q) = ∑ᵢ ∑ ⱼ pᵢⱼ log (pᵢⱼ / qᵢⱼ)

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

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

Полученные результаты

Основываясь на сводных показателях точности и показателя F1, модель мультиклассификации на основе DistilBERT показала хорошие результаты. Используя различные методы предварительной обработки текста, а также экспериментируя с оптимизаторами, критериями остановки и различными вариантами моделей трансформаторов, была получена респектабельная модель. Но могли бы мы сделать лучше?

Чтобы поднять производительность модели еще выше, мы обратились к нашим данным. Мы использовали две концепции: 1. отображение текстовых данных в многомерное векторное пространство и 2. проецирование векторов большой размерности в 2-D для создания графика t-SNE наших данных на рисунке 3.

Мы анонимизировали данные, но все еще можем видеть интересные особенности на Рисунке 3 в нескольких разных масштабах. Раскраска точек основана на метках наземной истины. Каждая черная точка принадлежит к одному из 30 классов, которые были хорошо спрогнозированы на основе точности и оценки F1, а каждая более крупная цветная точка принадлежит классу, который не соответствует нашим минимальным требованиям к точности и оценке F1.

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

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

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

Мы решили изучить эти возможности дальше.

Неверно маркированные данные

На рисунке 4 показаны увеличенные части графика t-SNE на рисунке 3. Эти сегменты выделяют то, что, по-видимому, является ошибочно маркированными данными.

На крайнем левом графике мы видим розовые точки из класса 1, смешанные в отдельный класс (представленный черными точками), что хорошо предсказано. Это говорит о том, что наземная метка истинности класса 1 для этих точек на самом деле может быть неправильной, и эти точки фактически принадлежат к тому классу, в котором они сгруппированы на графике t-SNE. Точно так же на среднем графике мы видим возможные неправильные маркировки классов 1 и 5 (синие точки). Наконец, мы видим дополнительные неправильные метки класса 4 (красные точки) на последнем графике.

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

Оптимальные классы

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

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

Выводы

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

Используя идеи из наших графиков t-SNE, мы создали инструменты для выявления неверно маркированных данных и выделения естественной кластеризации внутри классов. Мы также инициировали процедуры с другими командами, чтобы сделать наш процесс сбора данных более строгим. Теперь, когда наши наборы данных и компания растут, у нас есть хорошие возможности для коллективного улучшения наших данных и моделей и постоянного повышения ценности для наших клиентов.

Статья впервые появилась на statestitle.com

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

[1] К. Хе, Х. Чжан, С. Рен и Дж. Сан, Глубокое остаточное обучение для распознавания изображений, (2016) Конференция IEEE 2016 по компьютерному зрению и распознаванию образов (CVPR).

[2] В. Сань, Л. Дебют, Дж. Шомон и Т. Вольф, « DistilBERT, дистиллированная версия BERT: меньше, быстрее, дешевле и легче », (2020) arXiv: 1910.01108v4 [ cs.CL].

[3] Дж. Девлин, М. Чанг, К. Ли и К. Тутанова, BERT: предварительная подготовка глубоких двунаправленных преобразователей для понимания языка, (2019) Труды Конференции Севера 2019 года. Американское отделение Ассоциации компьютерной лингвистики: технологии человеческого языка.

[4] Т. Вольф, Л. Дебют, В. Сань, Дж. Шомон, К. Деланге, А. Мой, П. Систак, Т. Роул, Р. Луф, М. Фунтович, Дж. Дэвисон, С. Шлейфер , П. фон Платен, Клара Ма, Ясин Джернит, Дж. Плу, К. Сюй, Т. Ле Скао, С. Гуггер, М. Дрейм, К. Лоэст, А. М. Раш, Трансформеры HuggingFace: Состояние современного -art Natural Language Processing ,” (2020) arXiv: 1910.03771 [cs.CL].

[5] Э. А. Эбботт, «Флатландия: многогранный роман» (1884 г.) Seeley & Co.

[6] Л. ван дер Маатен и Г. Хинтон, Визуализация данных с использованием t-SNE, (2008 г.) Journal of Machine Learning Research.

Приложение:

Текстовые векторы

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

В приведенном ниже фрагменте кода функция get_activation используется для регистрации прямого перехвата для извлечения вывода из интересующего слоя. Функция get_vectors принимает в качестве входных данных объект pytorch DataLoader, представляющий токенизированные входные текстовые данные и точно настроенную модель DistilBertForSequenceClassification, и возвращает векторы, соответствующие интересующему слою. В данном случае нас интересует вывод уровня pre_classifier.

PCA и t-SNE

Для более быстрого и надежного вычисления векторов t-SNE рекомендуется сначала сжать данные очень большой размерности, используя линейные методы, такие как анализ главных компонентов (PCA). Ниже приведен фрагмент кода, в котором мы сохраняем достаточно компонентов многомерных текстовых векторов из функции get_vectors выше, чтобы объяснить 95% дисперсии данных. Это уменьшило размер нашего текстового вектора с 768 до ~ 30 компонентов.

Мы экспериментировали с преобразованиями t-SNE на ~ 30-мерных векторах, используя множество параметров. Мы обнаружили, что t-SNE по умолчанию хорошо работает для нас, и использовали приведенный ниже фрагмент кода для получения наших векторов после преобразований PCA и t-SNE.