Эндрю Ын объяснил математику и особенности обучения алгоритма Triplet Loss

DeepLearning.AI 140 тыс. 15 мин 5 мин 07.11.2017
Главное

Эндрю Ын в рамках курса от DeepLearning.AI подробно разбирает концепцию функции потерь Triplet Loss, применяемую для эффективного обучения нейросетей распознаванию лиц. Этот подход позволяет формировать качественные векторные представления (эмбеддинги) изображений, минимизируя расстояние между схожими профилями и увеличивая его для разных людей. Понимание механики Triplet Loss критически важно для разработчиков, проектирующих современные биометрические системы идентификации.

👥 Понятие триплета: Анкер, Позитив и Негатив 0:00

Для обучения параметров нейросети с целью получения качественного кодирования лиц применяется градиентный спуск над функцией потерь Triplet Loss. Суть метода заключается в одновременном сравнении не просто пар, а целых троек (триплетов) изображений.

В терминологии Triplet Loss выделяют три типа изображений:

В процессе обучения нейросеть всегда анализирует эти три объекта одновременно, откуда и возникло название «Triplet Loss».

📐 Математическая формулировка и проблема тривиального решения 1:22

Чтобы формализовать требования к сети, Эндрю Ын вводит функцию расстояния $d(A, P)$, которая выражается через квадрат нормы разности кодирований: $||f(A) - f(P)||^2$. Исходное содержательное требование выглядит следующим образом:

$$||f(A) - f(P)||^2 \le ||f(A) - f(N)||^2$$

Перенос всех членов в левую часть дает базовое неравенство:

$$||f(A) - f(P)||^2 - ||f(A) - f(N)||^2 \le 0$$

Однако, по словам Эндрю Ына, при такой формулировке возникает серьезная техническая проблема — риск тривиального решения. Нейросеть может быстро «догадаться», что если для любого изображения $x$ выдавать вектор, полностью состоящий из нулей ($f(x) = \vec{0}$), или генерировать абсолютно идентичные векторы для всех картинок в базе, то левая часть уравнения всегда будет равна нулю ($0 - 0 = 0$). Такое решение формально удовлетворяет условию, но делает модель абсолютно бесполезной.

Для предотвращения этого эффекта в формулу вводится дополнительный гиперпараметр — зазор или маржа ($\alpha$), заимствованный из литературы по методу опорных векторов (SVM). Модифицированное выражение требует, чтобы разница расстояний была существенно меньше нуля:

$$||f(A) - f(P)||^2 - ||f(A) - f(N)||^2 + \alpha \le 0$$

Эндрю Ын приводит наглядный пример работы маржи:

Введение параметра $\alpha$ заставляет алгоритм целенаправленно раздвигать кодирования пар «анкер-позитив» и «анкер-негатив» как можно дальше друг от друга.

📊 Функция потерь Triplet Loss и требования к датасету 5:36

Финальная функция потерь для одного триплета определяется через оператор максимума, отсекающий отрицательные значения:

$$\mathcal{L}(A, P, N) = \max(||f(A) - f(P)||^2 - ||f(A) - f(N)||^2 + \alpha, 0)$$

Благодаря оператору $\max$, если цель достигнута и выражение внутри скобок меньше или равно нулю, итоговая потеря становится равной нулю. Если же условие нарушено, значение функции становится положительным, и градиентный спуск начинает корректировать параметры сети. Общая функция стоимости $J$ для всей нейросети представляет собой обычную сумму индивидуальных потерь $\mathcal{L}$ по всему тренировочному множеству триплетов.

Формирование обучающей выборки накладывает специфические требования на исходные данные. Поскольку для каждого триплета необходима пара фотографий одного и того же лица, датасет должен содержать по нескольку снимков каждого человека. Эндрю Ын приводит пример сбалансированной выборки:

Лектор подчеркивает, что если у вас есть всего по одной фотографии каждого человека, обучить систему с помощью Triplet Loss невозможно. Однако уже после успешного завершения обучения модель можно применять к задачам однократного обучения (one-shot learning), где для распознавания нового пользователя в коммерческой системе достаточно иметь лишь один эталонный снимок.

🧠 Стратегия выбора сложных триплетов (Hard Triplets) 9:25

Ключевой инженерной задачей при реализации алгоритма является правильный подбор троек изображений. Эндрю Ын предостерегает от случайного выбора триплетов из датасета. Если формировать их наобум, то условие корректного разделения будет удовлетворяться слишком легко: у двух случайных людей лица обычно настолько разные, что расстояние $d(A, N)$ изначально окажется значительно больше, чем $d(A, P) + \alpha$. В таком сценарии градиентный спуск практически перестанет работать, поскольку большинство потерь будут нулевыми, и нейросеть ничему не научится.

Для повышения вычислительной эффективности алгоритма необходимо целенаправленно искать так называемые «сложные триплеты» (hard triplets), для которых выполняется условие:

$$d(A, P) \approx d(A, N)$$

В таких случаях лица анкера и негатива визуально очень похожи, и алгоритму приходится прилагать максимальные усилия (корректировать веса), чтобы «вытолкнуть» негативный пример за пределы установленной маржи $\alpha$.

Многие из этих идей были впервые детально представлены в классической работе разработчиков Florian Schroff, Dmitry Kalenichenko и James Philbin, создавших знаменитую систему FaceNet. Комментируя название статьи, Эндрю Ын с иронией отмечает забавный факт из мира глубокого обучения: если вы работаете в определенной сфере, то ваш алгоритм почти наверняка получит название вида «[Название сферы]Net» или «Deep[Название сферы]», как это произошло с FaceNet и DeepFace. Лектор настоятельно рекомендует ознакомиться с этой публикацией всем, кто хочет глубже разобраться в методах оптимизации и ускорения отбора триплетов.

🏢 Масштабы коммерческих систем и практические рекомендации 13:46

В завершение лекции Эндрю Ын раскрывает масштабы реальных индустриальных проектов. По его словам, современные коммерческие системы распознавания лиц обучаются на колоссальных объемах данных.

Текущие стандарты индустрии выглядят следующим образом:

Сбор и разметка баз данных такого масштаба — задача чрезвычайно сложная и дорогая. В связи с этим Эндрю Ын дает ценный практический совет: вместо того чтобы пытаться обучить масштабную сеть с нуля, разработчикам зачастую гораздо выгоднее скачать готовые бесплатные предобученные модели и их параметры, выложенные крупными компаниями в открытый доступ. Тем не менее, глубокое понимание внутренней математики Triplet Loss остается обязательным, поскольку эти знания могут потребоваться при адаптации архитектуры под специфические бизнес-задачи с нуля.

💬 Цитаты

«Вместо того чтобы пытаться обучить масштабную сеть с нуля, разработчикам зачастую гораздо выгоднее скачать готовые бесплатные предобученные модели...»

«Если формировать их наобум, то условие корректного разделения будет удовлетворяться слишком легко...»

👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Эмбеддинг (кодирование)
Векторное представление объекта, отражающее его ключевые признаки в сжатом виде.
Маржа (зазор)
Гиперпараметр, задающий минимально допустимое расстояние между классами в пространстве признаков.
Триплет
Набор из трех элементов, используемый для контрастивного обучения нейросетей.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Triplet Loss Эндрю Ын FaceNet распознавание лиц