Вариационный автоэнкодер (VAE) является образцом для нейронных сетей, которые пытаются изучить форму входного пространства. После обучения модель можно использовать для создания новых выборок из входного пространства.
Если у нас есть метки для наших входных данных, также возможно обуславливают процесс генерации на этикетке. в МНИСТ случае это означает, что мы можем указать, для какой цифры мы хотим сгенерировать изображение.
Давайте сделаем еще один шаг… Можем ли мы обусловить процесс генерации цифрой вообще без использования меток? Можем ли мы добиться тех же результатов, используя неконтролируемый подход?
Если бы мы хотели полагаться на метки, мы могли бы сделать что-то до безобразия простое. Мы могли обучить 10 независимых моделей VAE, каждая из которых использовала изображения одной цифры.
Это, очевидно, сработает, но вы используете ярлыки. Это жульничество!
Хорошо, давайте не будем их использовать вообще. Давайте обучим наши 10 моделей и просто посмотрим глазами на каждое изображение, прежде чем передать его соответствующей модели.
Эй, ты снова обманываешь! Хотя вы не используете метки как таковые, вы просматриваете изображения, чтобы направить их к соответствующей модели.
Хорошо… Если вместо того, чтобы выполнять маршрутизацию самостоятельно, мы позволим другой модели изучить маршрутизацию, это вовсе не будет мошенничеством, не так ли?
Верно! 🙂
Мы можем использовать архитектуру из 11 модулей следующим образом:
Но как менеджер решит, какому эксперту передать изображение? Мы могли бы научить его предсказывать цифру изображения, но опять же — мы не хотим использовать метки!
Фу… Я думал, ты собираешься сжульничать…
Так как же мы можем обучить менеджера, не используя ярлыки? Это напоминает мне другой тип модели – Смесь экспертов (МО). Позвольте мне сделать небольшое отступление, чтобы объяснить, как работает MoE. Он нам понадобится, так как он станет ключевым компонентом нашего решения.
Смесь экспертов, объясненная неспециалистам¶
MoE — это контролируемая структура обучения. Вы можете найти отличное объяснение Джеффри Хинтона на Coursera и на YouTube. MoE полагается на возможность сегментации входных данных в соответствии с отображением $x \rightarrow y$. Взгляните на эту простую функцию:
Основная истина определяется как фиолетовая парабола при $x < x$' и зеленая парабола при $x >= x$’. Если бы мы указали вручную, где находится точка разделения $x$’, мы могли бы изучать отображение в каждом входном сегменте независимо, используя две отдельные модели.
В сложных наборах данных мы можем не знать точки разделения. Одно (плохое) решение состоит в том, чтобы сегментировать входное пространство путем кластеризации $x$ с использованием K-средних. В примере с двумя параболами мы получим $x$” в качестве точки разделения между двумя кластерами. Таким образом, когда мы будем обучать модель на отрезке $x < x$'', она будет неточной.
Итак, как мы можем обучить модель, которая изучает точки разделения и в то же время изучает отображение, определяющее точки разделения?
MoE делает это, используя архитектуру нескольких подсетей — один менеджер и несколько экспертов:
Менеджер отображает ввод в мягкое решение по экспертам, которое используется в двух контекстах:
- Выход сети представляет собой средневзвешенное значение выходов экспертов, где веса представляют собой выход менеджера.
-
Функция потерь $\sum_i p_i(y – \bar{y_i})^2$. $y$ — метка, $\bar{y_i}$ — вывод i-го эксперта, $p_i$ — i-я запись вывода менеджера. Когда вы дифференцируете потери, вы получаете следующие результаты (я рекомендую вам посмотреть видео Больше подробностей):
- Менеджер решает за каждого эксперта, насколько он способствует убытку. Другими словами, менеджер выбирает, какие эксперты должны настроить свои веса в соответствии с их ошибкой.
-
Менеджер настраивает вероятности, которые он выводит, таким образом, чтобы эксперты, которые правильно поняли, получили более высокие вероятности, чем те, которые не сделали этого.
Эта функция потерь побуждает экспертов специализироваться на различных видах входных данных.
Последняя часть головоломки… это $x$¶
Вернемся к нашему вызову! MoE — это система контролируемого обучения. Конечно, мы можем изменить $y$ на $x$ для случая без присмотра, верно? Сила MoE проистекает из того факта, что каждый эксперт специализируется на разных сегментах входного пространства с уникальным отображением $x \rightarrow y$. Если мы используем отображение $x \rightarrow x$, каждый эксперт будет специализироваться на разных сегментах входного пространства с уникальными шаблонами в самих входных данных.
Мы будем использовать VAE в качестве экспертов. Часть потерь VAE — это потери реконструкции, когда VAE пытается восстановить исходное входное изображение $x$:
Интересным побочным продуктом этой архитектуры является то, что менеджер может классифицировать цифру, найденную на изображении, используя ее выходной вектор!
Одна вещь, с которой мы должны быть осторожны при обучении этой модели, заключается в том, что менеджер может легко выродиться в вывод постоянного вектора – независимо от входных данных. В результате одна VAE специализируется на всех цифрах, а девять VAE не специализируются ни на чем. Один из способов смягчить его, который описан в документе МО, состоит в том, чтобы добавить к убытку компенсирующий член. Это поощряет балансировку выходных данных менеджера по пакету входных данных: $\sum_\text{примеры в пакете} \vec{p} \ приблизительно Uniform$.
Хватит болтать – пора тренироваться!