Углубленный обзор техники глубокого обучения для задачи классификации сходства.
В этой статье я расскажу о своем взгляде на общую концепцию обучения схожести, какие процессы оно включает и как это можно резюмировать. Затем я применю эти изложенные концепции к контексту обнаружения сходства последовательностей с помощью сходства вопросов.
Оглавление
- Обзор изучения подобия
- Изучение подобия текста
- Исходный код (реализация PyTorch)
1. Обзор изучения глубокого сходства
Когда кто-то изучает сходство, всегда выполняется один и тот же процесс:
Как объясняется в этой инфографике, любой процесс, связанный с изучением подобия, вращается вокруг трех основных концепций:
- Преобразование данных в вектор объектов
- Сравнение векторов с использованием метрики расстояния.
- Классификация расстояния как схожего или несходного
1.а Преобразование с помощью кодировщика
В большинстве задач глубокого обучения первые слои модели представляют то, что иногда называют «фазой кодирования»: они выполняют роль извлечения соответствующих функций из входных данных.
В оставшейся части статьи мы напишем функцию кодирования следующим образом:
Этот кодировщик может принимать, в зависимости от входных данных, различные формы, среди которых мы находим:
- слои RNN для кодирования и сравнения последовательностей;
- слои CNN для временных / пространственных данных (одномерные свертки также можно использовать для последовательностей);
Обычно после того, как входные данные преобразованы в вектор этими кодировщиками, мы складываем слои Полностью связанных нейронов для классификации эти извлеченные функции. В нашем случае мы используем этот вектор как версию наших данных с уменьшенным размером, чтобы вычислить расстояние с другими частями данных. Становится намного проще численно сказать, насколько два вектора разные, чем, например, два предложения.
Подводя итог, кодировщик будет использовать комбинацию слоев любого типа, которые в соответствии с его входными данными будут генерировать скрытое представление данных, сжатый вектор информации, не интерпретируемый человеком.
На протяжении всей истории глубокого обучения было создано несколько типов архитектур для генерации скрытых векторов. Некоторые из них были:
- Сиамские нейронные сети (Кох, Земель, Салахутдинов, 2015)
- Мультимодальные автоэнкодеры (Зильберер и Лапата, 2015 г.)
Мы рассмотрим сиамские нейронные сети дальше в этой статье.
1.b Расчет расстояния
Когда у нас есть векторизованные входные данные, мы можем сравнить два вектора, используя функцию расстояния. Самые популярные дистанции:
- Расстояние Манхэттен
- Евклидово расстояние
После расчета расстояния мы можем установить порог, выше которого мы считаем два фрагмента данных несходными и, наоборот, считаем их похожими. .
1.c Классификация расстояний
Однако, в зависимости от входных данных, установка этого порога может быть сложной или трудоемкой. Для простоты мы можем использовать другой классификатор, который будет, с учетом входного расстояния, классифицировать, является ли это расстояние одним из похожих или несходных объектов . Я решил использовать классификатор логистической регрессии: нахождение линейного разделения в наших данных соответствует определению порогового значения, классифицирующего наши расстояния.
2. Изучение подобия текста
2.a Контекст
Текст - это чрезвычайно сложная для обработки структура данных: хотя часто говорят, что изображения универсальны, текст является культурным. Независимо от того, на каком языке он написан, или на словарном запасе автора, текст трудно интерпретировать даже нам.
Тем не менее, в некоторых ситуациях мы хотели бы иметь возможность измерить сходство между текстами. Например, мы могли бы узнать:
- Если, учитывая их описание, два продукта одинаковы;
- Если два вопроса задают одно и то же.
Эта последняя проблема представляет собой контекст, который я буду использовать в этой статье, чтобы поговорить о проблеме схожести текста: она происходит от Kaggle (пары вопросов Quora) и была опубликована командой Quora в виде списка вопросов, отмеченных как быть дубликатом или нет.
Как объяснено в 1.a, несколько архитектур были созданы для задачи изучения подобия. В контексте этой задачи мы сосредоточимся на сиамской рекуррентной нейронной сети (Thyagarajan, 2015).
2.b Архитектура сиамской рекуррентной нейронной сети
Сиамская рекуррентная нейронная сеть - это нейронная сеть, использующая стеки RNN для вычисления векторного представления фиксированного размера входных данных.
Глобальный взгляд на мою сиамскую сеть выглядит следующим образом:
Код моей архитектуры, используемый в наборе данных Quora как стек BiLSTM (двунаправленный LSTM), следующий:
Этот стек BiLSTM затем используется следующим классом Encoder:
2.c Контрастная потеря
В этой модели следует отметить два основных компонента:
- Его архитектура;
- Его потеря.
Как описано в (Hadsell, Chopra and LeCun, 2006), цель контрастных потерь состоит в том, чтобы научить модель сближать похожие данные (т. Е. Минимизировать их расстояние) и разнородные данные дальше друг от друга ( т. е. на максимальном расстоянии). Его формула следующая:
Эта формула довольно проста для понимания:
- Когда два входа подобны (Y = 1), сохраняется только левый член с квадратом расстояния. Следовательно, минимизация потерь подразумевает минимизацию расстояния между входными данными, вынуждая модель изучать похожие представления похожих объектов.
- Когда два входа не похожи (Y = 0), сохраняется только правильный член с функцией max. Эта функция max учит модель, чтобы расстояние между двумя входами было больше или равно гиперпараметру поля m.
3. Исходный код
Исходный код проекта можно найти в Github по следующей ссылке: https://github.com/dimartinot/Text-Semantic-Similarity/
Я достиг производительности от 76% до 79% точности по всем 3 наборам данных (тренировка, проверка и тест), а также 0,83 балла AUC.
Наиболее важные файлы:
- Https://github.com/dimartinot/Text-Semantic-Similarity/blob/master/notebook/EDA.ipynb Блокнот исследовательского анализа данных: используется для очистки и анализа набора данных. Создает маринованную версию набора данных с предварительно вычисленными встраиваемыми предложениями.
- Https://github.com/dimartinot/Text-Semantic-Similarity/blob/master/notebook/Training.ipynb Основной конвейер обучения: загружает консервированный набор данных, созданный с помощью записной книжки EDA.ipynb
- Https://github.com/dimartinot/Text-Semantic-Similarity/tree/master/src/model: основная папка модели. На данный момент модели хранятся в одном файле, так как у них много общего.
Ссылки
Кох, Г., Земель, Р., Салахутдинов, Р., 2015. Сиамские нейронные сети для одноразового распознавания изображений. Семинар по глубокому обучению ICML.
Зильберер, К. и Лапата, М., 2015. Изучение обоснованных представлений смысла с помощью автоэнкодеров. Материалы 52-го ежегодного собрания Ассоциации компьютерной лингвистики, стр.721–732.
Тьягараджан, А. 2015. Сиамские повторяющиеся архитектуры для изучения сходства предложений.
Quora. 2017. Quora Question Pairs, Kaggle.
Хадселл, Райя и Чопра, Сумит и Лекун, Янн. 2006. Снижение размерности путем изучения инвариантного отображения.