“深度学习”与多层/分层建模之间有什么区别?


31

“深度学习”只是多层次/层次建模的另一个术语吗?

我比后者更熟悉后者,但是据我所知,主要区别不在于它们的定义,而是它们在其应用程序域中的使用和评估方式。

看起来,典型的“深度学习”应用程序中的节点数量更多,并且使用通用的层次结构形式,而多级建模的应用程序通常使用层次结构关系来模仿正在建模的生成过程。在应用统计(层次建模)域中使用通用层次结构将被视为现象的“不正确”模型,而对特定领域的层次结构进行建模可能被视为颠覆了制造通用深度学习机器的目标。

这两件事是否真的是同一台机器,但使用两种不同的名称,以两种不同的方式使用?

Answers:


38

相似

基本上,开发了两种算法来回答机器学习应用程序中的一个普遍问题:

给定预测变量(因子)如何合并这些因子之间的相互作用以提高性能?x1,x2,,xp

一种方法是简单地引入新的预测变量:但是,由于大量的参数和非常特殊的交互类型,这被证明是一个坏主意。xp+1=x1x2,xp+2=x1x3,

多层建模和深度学习算法都通过引入更智能的交互模型来回答这个问题。从这个角度来看,它们非常相似。

区别

现在,让我对它们之间最大的概念差异给出自己的理解。为了提供一些解释,让我们看看我们在每个模型中所做的假设:

多级建模:反映数据结构的层可以表示为贝叶斯层次网络。该网络是固定的,通常来自域应用程序。1

深度学习:数据是由许多因素相互作用产生的。交互的结构是未知的,但可以表示为分层分解:更高级别的交互是通过转换较低级别的表示获得的。2

根本的区别来自深度学习中的短语“交互的结构未知”。我们可以假设交互类型先验,但是该算法定义了学习过程中的所有交互。另一方面,我们必须为多级建模定义交互的结构(我们仅在之后学习更改模型的参数)。

例子

例如,假设给定三个因子并将和为不同的层。 { x 1 } { x 2x 3 }x1,x2,x3{x1}{x2,x3}

例如,在多级建模回归中,我们将获得交互和,但是我们将永远不会获得交互。当然,部分结果会受到误差相关性的影响,但这对于示例而言并不那么重要。x 1 x 3 x 2 x 3x1x2x1x3x2x3

在深度学习中,例如在具有两个隐藏层和线性激活函数的多层受限Boltzmann机器(RBM)中,我们将拥有所有可能的小于或等于3的政治互动。

共同的优缺点

多层建模

(-)需要定义交互的结构

(+)结果通常更容易解释

(+)可以应用统计方法(评估置信区间,检查假设)

深度学习

(-)需要大量数据进行训练(以及训练时间)

(-)结果通常无法解释(提供为黑匣子)

(+)不需要专家知识

(+)一旦受过良好训练,通常会胜过大多数其他通用方法(非特定于应用程序)

希望对您有所帮助!


为什么深度神经网络需要大量数据进行训练?我以前没有听说过。
Jase 2014年

1
@Jase神经网络通常具有很多参数,因此在许多情况下,如果使用小的数据集,则可能会过度拟合。当然,一切都取决于任务,但是如今,大多数最令人印象深刻的NN结果都使用非常庞大的数据集。
德米特里·拉普捷夫

同意令人印象深刻的结果是在巨大的数据集上,但是我不确定我们不能使用dropout和其他技巧来使其从小型数据集中很好地泛化。
杰瑟

1
@Jase当然,您可以使用不同的试探法。但是根据我在图像处理方面的经验,几乎所有人都引入了一些正则化,这基本上等同于引入一些先验的偏见。这并不总是您想要的。
德米特里·拉普捷夫2014年

如果您使用非参数,例如,先验的分层Dirichlet,则大概不需要定义交互的结构。
阿斯特丽德

2

虽然这个问题/答案已经存在了一段时间,但我认为弄清楚答案中的几点可能会有所帮助。首先,这句话是层次方法和深度神经网络之间的主要区别。是不正确的。分层方法不会比其他神经网络“固定”。例如,参见Chen等人的论文《使用层次卷积因子分析进行深度学习》。等。我认为您还将发现定义交互的需求也不再是一个区别点。根据我的经验,在分层建模中未列出的几点是显着减少的过拟合问题以及处理非常大和非常小的训练集的能力。挑剔的一点是,当使用贝叶斯分层方法时,置信区间和假设检验通常不是将要应用的统计方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.