Подробный вариационный автоэнкодер - VAE

машинное обучение

Это 15-й день моего участия в августовском испытании обновлений. Узнайте подробности события:Испытание августовского обновления

Подробный вариационный автоэнкодер - VAE

Полное название VAE (Variational Auto-Encoder) — вариационный автокодер. является генеративной моделью.

Чтобы понять VAE, давайте сначала кратко разберемся с автоэнкодером, о котором часто говорятAuto-Encoder.

Auto-EncoderВключая энкодер (Encoder) и декодер (Decoder). Его структура выглядит следующим образом:

Auto-Encoder

Средний слой кода также называется встраиванием.

Цель ВАЭ

Сначала предположим распределение скрытой переменной Z и построим модель от Z до целевых данных X, то есть построимX=g(Z)X=g(Z), так что изученные целевые данные близки к распределению вероятностей реальных данных. По сути, в соответствии с GAN, GAN также изучает распределение вероятностей.

Структура модели

Структурная схема VAE (картинка взята из блога г-на Су, захваченного и удаленного) выглядит следующим образом:

VAE结构

VAE для каждого образцаXkX_kЧтобы соответствовать распределению Гаусса, скрытая переменная Z выбирается из распределения Гаусса. Для K выборок предполагается, что гауссово распределение каждой выборки равноN(μk,оk2)\mathcal N(\mu_k,\sigma_k^2), вопрос в том, как подогнать эти дистрибутивы.

VAE строит две нейронные сети, чтобы соответствовать среднему значению и дисперсии. которыйμk=f1(Xk),logоk2=f2(Xk)\mu_k=f_1(X_k),log\sigma_k^2=f_2(X_k), примеркаlogоk2log\sigma_k^2Причина в том, что нет необходимости добавлять функцию активации.

Кроме того, VAE максимально приближает каждое распределение Гаусса к стандартному распределению Гаусса.N(0,1)\mathcal N(0,1). Потеря ошибки в этом процессе подгонки рассчитывается с использованием расхождения KL.

Подробный вывод приведен ниже.

Принцип вывода

По сути, VAE очень похожа на GMM (модель гауссовой смеси), которая также является генеративной моделью, и фактически VAE можно рассматривать как версию GMM с распределенным представлением. Мы знаем, что GMM — это скрытая переменная с конечным числом распределений Гаусса.zz, а VAE можно рассматривать как бесконечное количество скрытых переменныхzzСмесь, обратите внимание, VAE вzzМожет быть гауссовым или негауссовым. Но чаще используется гауссова.

необработанные данные выборкиxxРаспределение вероятностей:

P(x)=ZP(x)P(xz)dzP(x)=\int_Z P(x)P(x|z)dz

мы предполагаем, чтоzzСоблюдайте стандартное распределение Гаусса, предварительное распределениеP(xz)P(x|z)является гауссовым, т.е.xzN(μ(z),о(z))x|z \sim N(\mu(z),\sigma(z)).μ(z),о(z)\ мю (г), \ сигма (г)две функции соответственноzzСреднее значение и дисперсия соответствующего распределения Гаусса (как показано ниже), затемP(x)P(x)Это совокупность всех распределений Гаусса в области интегралов.

在这里插入图片描述

так какP(z)P(z)известен,P(xz)P(x|z)неизвестно, поэтому решение проблемы на самом деле требуетμ,о\mu,\sigmaэти две функции. Наша первоначальная цель - решитьP(x)P(x), и мы надеемсяP(x)P(x)Чем больше, тем лучше, что эквивалентно решению дляxxМаксимальное логарифмическое правдоподобие:

L=xlogP(x)L=\sum_x logP(x)

иlogP(x)logP(x)можно преобразовать в:

logP(x)=zq(zx)logP(x)dz=zq(zx)log(P(z,x)P(zx))dz=zq(zx)log(P(z,x)q(zx)q(zx)P(zx))dz=zq(zx)log(P(z,x)q(zx))dz+zq(zx)log(q(zx)P(zx))dz=zq(zx)log(P(xz)P(z)q(zx))dz+zq(zx)log(q(zx)P(zx))dz\begin{aligned} logP(x)&=\int_z q(z|x)logP(x)dz \\ &=\int_z q(z|x)log(\dfrac{P(z,x)}{P(z|x)})dz \\ &=\int_z q(z|x)log(\dfrac{P(z,x)}{q(z|x)}\dfrac{q(z|x)}{P(z|x)})dz\\ &=\int_z q(z|x)log(\dfrac{P(z,x)}{q(z|x)})dz+ \int_z q(z|x)log(\dfrac{q(z|x)}{P(z|x)})dz\\ &=\int_z q(z|x)log(\dfrac{P(x|z)P(z)}{q(z|x)})dz + \int_z q(z|x)log(\dfrac{q(z|x)}{P(z|x)})dz \end{aligned}

Здесь мы находим, что второй элементzq(zx)log(q(zx)P(zx))dz\int_z q(z|x)log(\dfrac{q(z|x)}{P(z|x)})dzНа самом деле этоqqиPPKL-расхождение , т.е.KL(q(zx)    P(zx))KL(q(z|x)\;||\;P(z|x)), так как расхождение KL больше или равно 0,

Таким образом, приведенную выше формулу можно записать в следующем виде:

logP(x)zq(zx)log(P(xz)P(z)q(zx))dzlogP(x)\geq \int_z q(z|x)log(\dfrac{P(x|z)P(z)}{q(z|x)})dz

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

Lb=zq(zx)log(P(xz)P(z)q(zx))dzL_b=\int_z q(z|x)log(\dfrac{P(x|z)P(z)}{q(z|x)})dz

Исходная формула также может быть выражена как:

logP(x)=Lb+KL(q(zx)    P(zx))logP(x)=L_b+KL(q(z|x)\;||\;P(z|x))

чтобыlogP(x)logP(x)Чем больше значение, наша цель — максимизировать его нижнюю границу.

Нажали сюда, может возникнуть вопрос: а зачем вводитьq(zx)q(z|x)(здесьq(zx)q(z|x)может быть любой дистрибутив)?

На самом деле, поскольку апостериорное распределениеP(zx)P(z|x)Его трудно получить (неразрешимый), поэтому я использую егоq(zx)q(z|x)для аппроксимации этого апостериорного распределения. В процессе оптимизации мы обнаружили, что сначалаq(zx)q(z|x)иlogP(x)logP(x)совершенно не имеет значения,logP(x)logP(x)просто следуйтеP(zx)P(z|x)связанные, регулируемыеq(zx)q(z|x)не повлияет кажется, чтоlogP(x)logP(x)из. Итак, когда мы исправимP(xz)P(x|z)время, настроитьq(zx)q(z|x)Максимизируйте нижнюю границуLbL_b, KL меньше. когдаq(zx)q(z|x)с аппроксимацией апостериорного распределенияP(zx)P(z|x)Когда расхождение KL стремится к 0,logP(x)logP(x)какLbL_bэквивалентность. так максимизироватьlogP(x)logP(x)эквивалентно максимизацииLbL_b.

在这里插入图片描述

обзорLbL_b,

Lb=zq(zx)log(P(xz)P(z)q(zx))dz=zq(zx)log(P(z)q(zx))dz+zq(zx)logP(xz)dz=KL(q(zx)    P(z))+zq(zx)logP(xz)dz=KL(q(zx)    P(z))+Eq(zx)[log(P(xz))]\begin{aligned} L_b&=\int_z q(z|x)log(\dfrac{P(x|z)P(z)}{q(z|x)})dz \\ &=\int_z q(z|x)log(\dfrac{P(z)}{q(z|x)})dz+\int_z q(z|x)logP(x|z)dz \\ &=-KL(q(z|x)\;||\;P(z)) + \int_z q(z|x)logP(x|z)dz \\ &=-KL(q(z|x)\;||\;P(z)) + E_{q(z|x)}[log(P(x|z))] \end{aligned}

Очевидно, максимизироватьLbL_bэквивалентно минимизацииKL(q(zx)    P(z))KL(q(z|x)\;||\;P(z))и максимизироватьEq(zx)[log(P(xz))]E_{q(z|x)}[log(P(x|z))].

Первый член, минимизирующий расходимость KL. Мы предполагали ранееP(z)P(z)подчиняется стандартному распределению Гаусса, иq(zx)q(z|x)подчиняется распределению ГауссаN(μ,о2)\mathcal N(\mu,\sigma^2), поэтому мы можем получить:

KL(q(zx)    P(z))=KL(N(μ,о2)    N(0,1))=12число Пио2e(xμ)22о2(loge(xμ)22о2/2число Пио2ex22/2число Пи)dx...Упростите, чтобы получить=1212число Пио2e(xμ)22о2(logо2+x2(xμ)2о2)dx=1212число Пио2e(xμ)22о2(logо2+x2(xμ)2о2)dx\begin{align} KL(q(z|x)\;||\;P(z))=KL(\mathcal N(\mu,\sigma^2)\;||\;\mathcal N(0 , 1)) = & \ int \ dfrac {1} {\ sqrt {2 \ pi \ sigma ^ 2}} e ^ {\ frac {- (x- \ mu) ^ 2} {2 \ sigma ^ 2}} \left( log\dfrac {e ^ {\ frac {- (x- \ mu) ^ 2} {2 \ sigma ^ 2}}/\ sqrt {2 \ pi \ sigma ^ 2}} { e ^ {\ frac {-x^2}{2}}/\sqrt{2\pi} } \right)dx \\&...\text{Упростить до} \\=&\dfrac{1}{2}\dfrac { 1}{\sqrt{2\pi\sigma^2}}\int e^{\frac{-(x-\mu)^2}{2\sigma^2}} \left(-log\sigma^ 2 +x^2-\dfrac{(x-\mu)^2}{\sigma^2} \right)dx \\=&\dfrac{1}{2}\int \dfrac{1}{\sqrt { 2\pi\sigma^2}} e^{\frac{-(x-\mu)^2}{2\sigma^2}} \left(-log\sigma^2 +x^2-\dfrac { (x-\mu)^2}{\sigma^2} \right)dx \end{выровнено}

Чтобы дополнительно решить интеграл в приведенной выше формуле,12число Пио2e(xμ)22о2\dfrac{1}{\sqrt{2\pi\sigma^2}}e^{\frac{-(x-\mu)^2}{2\sigma^2}}В самом деле, плотность вероятностиf(x)f(x), а интеграл функции плотности вероятности равен 1, поэтому первый член интеграла равенlogо2-log\sigma^2, и поскольку второй момент гауссовского распределения равенE(X2)=x2f(x)dx=μ2+о2E(X^2)=\int x^2f(x)dx=\mu^2+\sigma^2, что в точности соответствует второму члену интеграла. По определению дисперсии известно, чтоо=(xμ)dx\sigma=\int (x-\mu)dx, поэтому третий член интеграла равен1-1.

Окончательный упрощенный результат выглядит следующим образом:

KL(q(zx)    P(z))=KL(N(μ,о2)    N(0,1))=12(logо2+μ2+о21)KL(q(z|x)\;||\;P(z))=KL(\mathcal N(\mu,\sigma^2)\;||\;\mathcal N(0,1))=\dfrac{1}{2}(-log\sigma^2+\mu^2+\sigma^2-1)

Второй срок, максимизация ожиданий. То есть даноq(zx)q(z|x)(выход энкодера)P(xz)P(x|z)(выход декодера) как можно выше. В частности, первым шагом является использование нейронной сети кодировщика для вычисления среднего значения и дисперсии, а также выборки из них.zz, этот процесс соответствуетq(zx)q(z|x); Второй шаг — использовать вычисление NN декодераzzСредняя дисперсия , пусть среднее (или также рассмотрим дисперсию) ближеxx, затем производитxxшансlogP(xz)logP(x|z)Чем больше значение, тем больше соответствует максимизация в формулеlogP(xz)logP(x|z)эта часть.

在这里插入图片描述

Теперь вывод завершен.

Трюк с повторным параметром

Наконец, когда модель реализована, есть трюк с перепараметрированием, то есть мы хотим получить данные из распределения Гаусса.N(μ,о2)\mathcal N(\mu,\sigma^2)При выборке Z это фактически эквивалентноN(0,1)\mathcal N(0,1)образец одинϵ\epsilon, а затем вычислитьZ=μ+ϵ×оZ=\mu+\epsilon\times\sigma. Причина этого в том, что операция выборки неуправляема, а результат выборки управляем.Z=μ+ϵ×оZ=\mu+\epsilon\times\sigmaЭто может участвовать в градиентном спуске, и модель может быть обучена.

Ссылаться на

  1. Су Цзяньлинь: Вариационные автоэнкодеры (1): Оказывается, это так.
  2. Г-н Ли Хунъи Машинное обучение (2017, осень, Тайваньский национальный университет), китайский язык