大多数论文将学习定义为在给定某些函数的情况下最大化期望。
期望最大化是否适用于文献中的大多数深度学习模型?
学习可以推广到EM 算法吗?
大多数模型都可以被视为概率函数,但什么时候不是这样呢?
我们可以将每个深度学习模型表达为 EM 训练算法的一部分吗?
大多数论文将学习定义为在给定某些函数的情况下最大化期望。
期望最大化是否适用于文献中的大多数深度学习模型?
学习可以推广到EM 算法吗?
大多数模型都可以被视为概率函数,但什么时候不是这样呢?
我们可以将每个深度学习模型表达为 EM 训练算法的一部分吗?
(这篇文章的原始版本,我将其文本保留在行下方以供参考,引起了很多争议和一些来回,似乎主要是围绕解释和歧义的问题,所以我更新了一个更直接的回答)
OP似乎在问:
深度学习模型是 EM 算法的特例吗?
不,他们不是。深度学习模型是通用的函数逼近器,可以使用不同类型的目标函数和训练算法,而 EM 算法在训练方法和目标函数方面是一种非常具体的算法。
从这个角度来看,使用深度学习来模拟 EM 算法是可能的(虽然不是很常见)。见这篇论文。
大多数(深度学习)模型都可以被视为概率函数,但什么时候不是这样呢?
概率分布函数必须满足某些条件,例如总和为一(如果考虑概率密度函数,条件会略有不同)。深度学习模型通常可以近似函数——即比对应于概率分布和密度的函数类别更大的函数。
它们何时不对应于概率密度和分布?任何时候它们近似的函数不满足概率论的公理。例如,输出层具有激活的网络可以取负值,因此不满足概率分布或密度的条件。
深度学习模型可以通过三种方式对应概率分布:
使用深度学习直接学习概率分布。也就是说,让您的神经网络学习的形状。这里满足成为概率密度或分布的条件。
让深度学习模型学习一个通用函数(不满足成为概率分布的条件)。做出假设,例如误差是正态分布的,然后使用模拟从该分布中采样。有关如何做到这一点的示例,请参见此处。
让深度学习模型学习一个通用函数(不满足成为概率分布的条件) - 然后将模型的输出解释为表示,其中是狄拉克函数. 最后一种方法有两个问题。关于狄拉克三角洲是否构成有效的分布函数存在一些争论。它在信号处理和物理学界很流行,但在概率和统计人群中并不流行。从概率和统计的角度来看,它也没有提供任何有用的信息,因为它无论如何都没有提供量化输出的不确定性,这违背了在实践中使用概率模型的目的。
期望最大化是否适用于文献中的大多数深度学习模型?
并不真地。有几个关键区别:
现在某些类型的深度学习模型可以被认为等同于 MLE 模型,但真正发生在幕后的是我们专门要求神经网络学习概率分布,而不是通过选择某些激活函数来学习更一般的任意函数并对网络的输出添加一些约束。这意味着它们充当 MLE 估计器,而不是它们是 EM 算法的特例。
学习是否被认为是 EM 算法的一部分?
我会说这是相反的。有可能某个地方的某个人提出了一个与 EM 算法等效的深度学习模型,但这会使 EM 算法成为深度学习的一个特例,而不是相反,因为要让它起作用,您必须使用深度学习 + 附加约束来使模型模仿 EM。
回应评论:
正如 Cagdas Ozgenc 指出的那样,几乎任何监督学习问题或函数逼近问题都可以重铸为 MLE。
期望最大化是一种解决统计问题的技术,包括“简单”的最大化(如果一些潜在变量已知)和对数似然的“简单”期望计算(如果参数已知)。然而,期望和最大化步骤的“如何”和“为什么”需要独创性,并且是特定于模型的。因此,虽然深度学习中的某些模型可能会以可能利用 EM 的方式呈现,但 EM 不是一种通用的优化技术,甚至对于经典的统计模型也不是。
但是,EM 可以被认为是称为最小化-最大化 (MM) 算法的一类算法的成员。这些算法找到了一个替代物,它是目标函数的下界,但至少在一个点上很紧。代理项被最大化(它应该被构造成比原始函数更容易最大化),并重复该过程。找到这样的代理也需要独创性或结构,但它可以被认为是优化中的通用技术。所以从这个意义上说,EM 背后的理论是广泛适用的。
谷歌学者的快速搜索揭示了一些相关文献,尽管它似乎比随机梯度方法不常用,随机梯度方法不尝试构建代理。
边际可能性
通过参考边际似然的最大化,期望最大化与“常规”似然最大化形成对比。
因此,这与带有附加参数(例如缺失数据)的某个可能性的积分有关。
电磁算法
在 EM 算法中,这个积分不是直接最大化的:
而是以迭代方式计算:
这是通过选择初始并重复更新来完成的。请注意,现在优化使项保持固定(这有助于通过表达导数来最小化)。
因此,这种边际可能性仅适用于未观察到的数据问题。例如,在寻找高斯混合(维基百科上的示例)时,可以考虑观察到的变量,它指的是测量所属的类(混合中的哪个成分)。
有许多问题不考虑边际似然性并直接评估参数以优化某些似然函数(或其他一些成本函数,但不是边缘化/期望值)。
边际似然的使用并不总是与明确缺失的数据有关。
在下面的示例中(wikipedia 上的示例)在 R 中以数字方式计算出来。
在这种情况下,您没有明确的数据缺失案例(可能性可以直接定义,并且不需要是对缺失数据进行积分的边际可能性),但是有两个多元高斯分布的混合。这样做的问题是,人们不能像往常一样计算项的对数之和(这具有计算优势),因为并非项不是乘积,而是它们也涉及总和。虽然,可以使用近似值计算这些和的对数(这在下面的代码中没有完成,而是创建参数是为了有利并且不会产生无限值)。
library(MASS)
# data example
set.seed(1)
x1 <- mvrnorm(100, mu=c(1,1), Sigma=diag(1,2))
x2 <- mvrnorm(30, mu=c(3,3), Sigma=diag(sqrt(0.5),2))
x <- rbind(x1,x2)
col <- c(rep(1,100),rep(2,30))
plot(x,col=col)
# Likelihood without integrating over z
Lsimple <- function(par,X=x) {
tau <- par[1]
mu1 <- c(par[2],par[3])
mu2 <- c(par[4],par[5])
sigma_1 <- par[6]
sigma_2 <- par[7]
likterms <- tau*dnorm(X[,1],mean = mu1[1], sd = sigma_1)*
dnorm(X[,2],mean = mu1[2], sd = sigma_1)+
(1-tau)*dnorm(X[,1],mean = mu2[1], sd = sigma_2)*
dnorm(X[,2],mean = mu2[2], sd = sigma_2)
logLik = sum(log(likterms))
-logLik
}
# Marginal likelihood integrating over z
LEM <- function(par,X=x,oldp=oldpar) {
tau <- par[1]
mu1 <- c(par[2],par[3])
mu2 <- c(par[4],par[5])
sigma_1 <- par[6]
sigma_2 <- par[7]
oldtau <- oldp[1]
oldmu1 <- c(oldp[2],oldp[3])
oldmu2 <- c(oldp[4],oldp[5])
oldsigma_1 <- oldp[6]
oldsigma_2 <- oldp[7]
f1 <- oldtau*dnorm(X[,1],mean = oldmu1[1], sd = oldsigma_1)*
dnorm(X[,2],mean = oldmu1[2], sd = oldsigma_1)
f2 <- (1-oldtau)*dnorm(X[,1],mean = oldmu2[1], sd = oldsigma_2)*
dnorm(X[,2],mean = oldmu2[2], sd = oldsigma_2)
pclass <- f1/(f1+f2)
### note that now the terms are a product and can be replaced by a sum of the log
#likterms <- tau*dnorm(X[,1],mean = mu1[1], sd = sigma_1)*
# dnorm(X[,2],mean = mu1[2], sd = sigma_1)*(pclass)*
# (1-tau)*dnorm(X[,1],mean = mu2[1], sd = sigma_2)*
# dnorm(X[,2],mean = mu2[2], sd = sigma_2)*(1-pclass)
loglikterms <- (log(tau)+dnorm(X[,1],mean = mu1[1], sd = sigma_1, log = TRUE)+
dnorm(X[,2],mean = mu1[2], sd = sigma_1, log = TRUE))*(pclass)+
(log(1-tau)+dnorm(X[,1],mean = mu2[1], sd = sigma_2, log = TRUE)+
dnorm(X[,2],mean = mu2[2], sd = sigma_2, log = TRUE))*(1-pclass)
logLik = sum(loglikterms)
-logLik
}
# solving with direct likelihood
par <- c(0.5,1,1,3,3,1,0.5)
p1 <- optim(par, Lsimple,
method="L-BFGS-B",
lower = c(0.1,0,0,0,0,0.1,0.1),
upper = c(0.9,5,5,5,5,3,3),
control = list(trace=3, maxit=10^3))
p1
# solving with LEM
# (this is done here indirectly/computationally with optim,
# but could be done analytically be expressing te derivative and solving)
oldpar <- c(0.5,1,1,3,3,1,0.5)
for (i in 1:100) {
p2 <- optim(oldpar, LEM,
method="L-BFGS-B",
lower = c(0.1,0,0,0,0,0.1,0.1),
upper = c(0.9,5,5,5,5,3,3),
control = list(trace=1, maxit=10^3))
oldpar <- p2$par
print(i)
}
p2
# the result is the same:
p$par
p2$par
鉴于之前的技术答案,一个哲学观点可能有助于消除 ME 与深度学习之间的歧义:学习的概念。
在深度学习中,有多个层,每一层都是一个学习步骤。在第一步中,数据输入被“转换”(或学习)为合成的中间输出(稍微高级一点的抽象,松散地说)。然后在每一步中,输入被逐步学习(或“转换”)为更高的抽象特征,人类可能理解也可能不理解。粗略地说,这些层的组合将为您近似“公式”,我们不需要事先指定任何模型或假设。这与认知科学中的“学习”概念相同:从输入中构建更高的抽象。
在 ME 方法中,抽象没有增加。
一个例子是 NLP 中的词嵌入,其中词被逐步转换为具有越来越抽象的数字向量,这样最终,数字向量实际上可以表示句法(语法)和语义(逻辑)含义。这种通过构建抽象特征来处理歧义(在语言或其他用例中)的能力是深度学习与许多其他统计方法的明显区别。