Классификация задачи
Можно использовать некоторые эмпирические правила для генерации новых объектов, не используя машинного обучения.
Мы хотим научиться создавать правдоподобный объект относительно некоторой скрытой структуры исходных объектов. Давайте изучим распределение по ним, а затем просто будем сэмплировать новый объект из этого распределения. Значит эта задача относится к классу задач обучения без учителя.
p(x) p(x) p(x) p (x) p(y∣x) p(y∣x) p(y∣x) p (y ∣ x) y y y y x x x x
Порождающая модель иногда позволяет использовать обучение с частичным привлечением учителя. Пусть задача состоит в том, чтобы отличить кошек от собак на фотографиях. Обычно мало размеченных данных, на которых кошки и собаки отмечены вручную. Основная часть задачи состоит в том, чтобы понять, чем разумные фотографии отличаются от случайного шума. Иначе говоря, если сначала определить распределение, то проще обучить распределение, где — это один бит, отвечающий за отдельный признак, а — это вся фотография.
Вычисление плотности распределения
X={xi} X={xi} X={xi} X = { xi x i } ∏ipmodel(xi;θ) ∏ipmodel(xi;θ) ∏ipmodel(xi;θ) ∏ipmodel(xi;θ) ∏i ∏ ∏ ∏ i i pmodel p model m o d e l (xi x i; θ) θ θ θ θ θ∗=argmaxθ∏ipmodel(xi;θ) θ∗=argmaxθ∏ipmodel(xi;θ) θ∗=argmaxθ∏ipmodel(xi;θ) θ∗ θ ∗ = argmaxθ argmax argmax θ θ ∏ipmodel(xi;θ) ∏i ∏ ∏ ∏ i i pmodel p model m o d e l (xi x i; θ)
С математической точки зрения основная цель порождающей модели обычно состоит в максимизации функции правдоподобия: для набора данных максимизировать по параметрам модели, т.е. найти
logab=loga+logb logab=loga+logb logab=loga+logb log a b = log a + log b
Чтобы избежать арифметического переполнения снизу[3] зачастую пользуются свойством логарифма произведения. Благодаря моннотоности логарифма, его применение к обоим частям выражения не изменит параметры, при которых достигается максимум. При этом, логарифм от числа близкого к нулю будет числом отрицательным, но в абсолютном значении существенно большим чем исходное число, что делает логарифмические значения вероятностей более удобными для анализа. Что в нашем случае с вероятности очень уместно. Поэтому, мы переписываем нашу формулу с использованием логарифма.
θ∗=argmaxθlog∏ipmodel(xi;θ)=argmaxθ∑ilogpmodel(xi;θ) θ∗=argmaxθlog∏ipmodel(xi;θ)=argmaxθ∑ilogpmodel(xi;θ) θ∗=argmaxθlog∏ipmodel(xi;θ)=argmaxθ∑ilogpmodel(xi;θ) θ∗ θ ∗ = argmaxθ argmax argmax θ θ log ∏ipmodel(xi;θ)=argmaxθ∑ilogpmodel(xi;θ) ∏i ∏ ∏ ∏ i i pmodel p model m o d e l (xi x i; θ) = argmaxθ argmax argmax θ θ ∑ilogpmodel(xi;θ) ∑i ∑ ∑ ∑ i i log pmodel p model m o d e l (xi x i; θ)
р р р р р ˆpdata ˆpdata ˆpdata ˆpdata ˆp ˆp ˆp ˆp ˆ ˆ p p data d a t a
Важен и другой взгляд на то же самое: максимизация правдоподобия эквивалентна минимизации расстояния Кульбака-Лейблера[4] между распределением, которое получается из нашей модели, и распределением — эмпирическим распределением данных. Это эмпирическое распределение попросту полностью сосредоточено в точках из набора данных и равномерно распределено по ним, так что:
KL(ˆpdata(x),p(x;θ))=∫ˆpdata(x)logp(x;θ)=∑iˆpdata(xi)logp(xi;θ) KL(ˆpdata(x),p(x;θ))=∫ˆpdata(x)logp(x;θ)=∑iˆpdata(xi)logp(xi;θ) KL(ˆpdata(x),p(x;θ))=∫ˆpdata(x)logp(x;θ)=∑iˆpdata(xi)logp(xi;θ) K L (ˆpdata ˆp ˆp ˆp ˆp ˆ ˆ p p data d a t a (x), p (x; θ)) = ∫ ˆpdata ˆp ˆp ˆp ˆp ˆ ˆ p p data d a t a (x) log p (x; θ) = ∑iˆpdata(xi)logp(xi;θ) ∑i ∑ ∑ ∑ i i ˆpdata ˆp ˆp ˆp ˆp ˆ ˆ p p data d a t a (xi x i) log p (xi x i; θ)
и минимизация этого выражения эквивалентна максимизации того, что выше.
Таксономия порождающих моделей
p(x;θ) p(x;θ) p(x;θ) p (x; θ)
Генеративные модели различаются как раз тем, как именно они строят распределение.
Явный подход
p(x;θ) p(x;θ) p(x;θ) p (x; θ)
Можно строить это распределение явно, делая вероятностные предположения, которые обычно сводятся к тому, что общее распределение выражается в виде произведения тех или иных распределений.
Как правило, модели, где плотность известна явно, делают какие-то дополнительные предположения на структуру этих распределений.
P(X1,…,Xn)=∏ni=1P(Xi∣parents(Xi)). P(X1,…,Xn)=∏ni=1P(Xi∣parents(Xi)). P(X1,…,Xn)=∏ni=1P(Xi∣parents(Xi)). P P (X1 X 1, …, Xn X n) = ∏ni=1 ∏ ni=1 n n n n i=1 i=1 i=1 i=1 i = 1 P P (Xi X i ∣ parents (Xi X i)).
Например, байесовские сети строят распределение из условных распределений
Можно даже и вовсе никаких предположений не делать: любое распределение всегда раскладывается как:
p(x)=∏ip(xi∣x1,…,xi−1) p(x)=∏ip(xi∣x1,…,xi−1) p(x)=∏ip(xi∣x1,…,xi−1) p (x) = ∏ip(xi∣x1,…,xi−1) ∏i ∏ ∏ ∏ i i i p (xi x i ∣ x1 x 1,………, xi−1 x i−1 i − 1)
х х х х х xi xi xi xi x i x1,…,xi−1) x1,…,xi−1) x1,…,xi−1) x1 x 1,………, xi−1 x i−1 i − 1)
Так представляется модель в FVBN (fully visible belief networks), идея которых состоит в том, что с одномерными распределениями нетрудно разобраться — в ранних работах их представляли классическими моделями. А сейчас мы можем их промоделировать последовательно глубокими сетями, получится модель, которая сможет последовательно породить компонент за компонентом, каждый раз для порождения опираясь на уже порожденные.
Именно эта идея лежит в основе модели для работы со звуком WaveNet, разработанной Google DeepMind[6]. Существующие параметрические модели синтезирования речи[7] обычно генерируют звук, прогоняя выходной сигнал через специальные обработчики, называемые вокодерами[8].
WaveNet меняет парадигму, генерируя звуковой сигнал по семплам. Это не только приводит к более натуральному звучанию речи, но и позволяет создавать любые звуки, включая музыку. Эта архитектура состоит из нескольких последовательных слоев разреженных сверток и в ней снова встречаются остаточные связи, связи «через уровень» и так далее. Во время обучения входящие последовательности представляют собой звуковые волны от примеров записи голоса. После тренировки можно с помощью сети генерировать синтетические фразы. На каждом шагу семплирования значение вычисляется из вероятностного распределения, посчитанного сетью. Затем это значение возвращается на вход и делается новое предсказание для следующего шага.
xn xn xn xn x n p(xn∣x1,…,xn−1) p(xn∣x1,…,xn−1) p(xn∣x1,…,xn−1) p (xn x n ∣ x1 x 1,………, xn−1 x n−1 n − 1)
В моделях PixelRNN[на 24.02.20 не создан] и PixelCNN[на 24.02.20 не создан] строится изображение пиксель за пикселем, слева направо и сверху вниз. Каждый пиксель порождается из условного распределения а оно уже моделируется или рекуррентной сетью или сверточной.
Модель DRAW[9] последовательно «рисует» картинку с помощью рекуррентной сети, а механизм внимания[на 24.02.20 не создан] помогает сети в данный момент сконцентрироваться на нужной части изображения.
Если хочется явно выразить совсем сложные распределения в порождающих моделях, их приходится приближать более простыми, которые уже, в свою очередь, могут быть выражены явно. Для этого обычно используются вариационные методы.
Неявный подход
p(x) p(x) p(x) p (x) x∼p(x) x∼p(x) x∼p(x) x ∼ p (x)
Основная альтернатива всему этому состоит в том, чтобы использовать неявные порождающие модели, в которых мы не пытаемся получить функцию, подсчитывающую плотность нужного распределения в каждой точке, а просто моделируем то, что нам от этой модели нужно. Например, если мы хотим просто научиться порождать фотографии милых котиков, нам не так важно иметь явную функцию плотности, которая могла бы сказать, насколько вероятно, что перед нами котик, — вполне достаточно просто уметь генерировать новые.
p(x) p(x) p(x) p (x) p(x) p(x) p(x) p (x)
Сэмплирование из сложных многомерных распределений делается с помощью МСМС[10]-методов: попробуем построить марковскую цепь, которая описывает случайное блуждание под графиком плотности распределения. Если достаточно долго блуждать под графиком плотности, можно будет считать, что полученная точка представляет собой случайную точку, взятую по распределению. Примером такого моделирования глубокой сетью являются порождающие стохастические сети[11].
G G G G D D D D G G G G G G G G D D D D
Порождающие состязательные сети — алгоритм машинного обучения, построенный на комбинации из двух нейронных сетей: генеративная модель, которая строит приближение распределения данных, и дискриминативная модель, оценивающая вероятность, что образец пришел из тренировочных данных, а не сгенерированных моделью. Обучение для модели заключается в максимизации вероятности ошибки дискриминатора.
Часто задаваемые вопросы о дискриминативных нейросетях
Вопрос: В чем ключевое отличие дискриминативной модели от генеративной?
Ответ: Дискриминативные модели учатся различать классы, находя границу между ними, в то время как генеративные модели учатся самому распределению данных каждого класса, чтобы затем генерировать новые примеры.
Вопрос: Какие архитектуры нейронных сетей чаще всего используются как дискриминативные?
Ответ: Сверточные нейронные сети (CNN) для изображений, рекуррентные сети (RNN, LSTM) для последовательностей, трансформеры и классические полносвязные сети (MLP).
Вопрос: Решают ли дискриминативные модели задачи регрессии?
Ответ: Да, они успешно применяются для задач регрессии, где нужно предсказать непрерывное значение, а не дискретный класс.
Вопрос: Что такое функция потерь в контексте обучения дискриминативной модели?
Ответ: Это метрика, которая измеряет, насколько предсказания модели отличаются от истинных ответов. Примеры: перекрестная энтропия для классификации, среднеквадратичная ошибка для регрессии.
Вопрос: Можно ли использовать одну и ту же нейросеть и для дискриминативных, и для генеративных задач?
Ответ: Как правило, архитектуры специализированы, но существуют комбинированные модели (как в Generative Adversarial Networks), где дискриминатор является ключевым компонентом.
Вопрос: Почему дискриминативные модели часто считаются более простыми в обучении?
Ответ: Потому что они решают более простую задачу — поиск разделяющей границы, а не моделирование всего сложного распределения данных, что требует меньше вычислительных ресурсов и данных.
Вопрос: В каких практических областях дискриминативные нейросети наиболее востребованы?
Ответ: Распознавание изображений и речи, машинный перевод, анализ тональности текста, медицинская диагностика, спам-фильтрация, беспилотные автомобили.
Вопрос: Что такое «переобучение» дискриминативной модели и как с ним бороться?
Ответ: Это ситуация, когда модель слишком точно подстраивается под обучающие данные и плохо работает на новых. Методы борьбы: регуляризация (L1, L2), dropout, увеличение набора данных, аугментация данных.
Вопрос: Всегда ли дискриминативная модель лучше генеративной для классификации?
Ответ: Не всегда. На малых выборках или когда важно понимать распределение данных, генеративные модели могут показать лучший результат или быть более полезными.
Вопрос: Как оценивается качество работы дискриминативной нейросети?
Ответ: С помощью метрик на тестовой выборке: точность, полнота, F1-мера, AUC-ROC для классификации; MAE, RMSE, R² для регрессии.
Памятка: Ключевые аспекты дискриминативных нейросетей
- Основная задача — разделение классов или предсказание значения.
- Фокусируются на нахождении границы принятия решений.
- Широко применяются для классификации и регрессии.
- Требуют размеченных данных для обучения.
- Как правило, обучаются быстрее и требуют меньше ресурсов, чем генеративные модели.
- Используют функции потерь, напрямую связанные с задачей (кросс-энтропия, MSE).
- Чувствительны к дисбалансу классов в данных.
- Склонны к переобучению на небольших или зашумленных выборках.
- Их производительность сильно зависит от качества и репрезентативности обучающих данных.
- Являются основой для большинства современных прикладных систем ИИ.
- Легко интегрируются в конвейеры машинного обучения (пайплайны).
- Часто служат финальным, «решающим» блоком в сложных системах.
- Требуют тщательной настройки гиперпараметров (скорость обучения, размер батча и др.).
- Могут быть интерпретируемыми с помощью методов анализа важности признаков (например, Grad-CAM для CNN).




























