Answers:
基本上,开发了两种算法来回答机器学习应用程序中的一个普遍问题:
给定预测变量(因子)如何合并这些因子之间的相互作用以提高性能?
一种方法是简单地引入新的预测变量:但是,由于大量的参数和非常特殊的交互类型,这被证明是一个坏主意。
多层建模和深度学习算法都通过引入更智能的交互模型来回答这个问题。从这个角度来看,它们非常相似。
现在,让我对它们之间最大的概念差异给出自己的理解。为了提供一些解释,让我们看看我们在每个模型中所做的假设:
多级建模:反映数据结构的层可以表示为贝叶斯层次网络。该网络是固定的,通常来自域应用程序。
深度学习:数据是由许多因素相互作用产生的。交互的结构是未知的,但可以表示为分层分解:更高级别的交互是通过转换较低级别的表示获得的。
根本的区别来自深度学习中的短语“交互的结构未知”。我们可以假设交互类型先验,但是该算法定义了学习过程中的所有交互。另一方面,我们必须为多级建模定义交互的结构(我们仅在之后学习更改模型的参数)。
例如,假设给定三个因子并将和为不同的层。 { x 1 } { x 2,x 3 }
例如,在多级建模回归中,我们将获得交互和,但是我们将永远不会获得交互。当然,部分结果会受到误差相关性的影响,但这对于示例而言并不那么重要。x 1 x 3 x 2 x 3
在深度学习中,例如在具有两个隐藏层和线性激活函数的多层受限Boltzmann机器(RBM)中,我们将拥有所有可能的小于或等于3的政治互动。
多层建模
(-)需要定义交互的结构
(+)结果通常更容易解释
(+)可以应用统计方法(评估置信区间,检查假设)
深度学习
(-)需要大量数据进行训练(以及训练时间)
(-)结果通常无法解释(提供为黑匣子)
(+)不需要专家知识
(+)一旦受过良好训练,通常会胜过大多数其他通用方法(非特定于应用程序)
希望对您有所帮助!
虽然这个问题/答案已经存在了一段时间,但我认为弄清楚答案中的几点可能会有所帮助。首先,这句话是层次方法和深度神经网络之间的主要区别。是不正确的。分层方法不会比其他神经网络“固定”。例如,参见Chen等人的论文《使用层次卷积因子分析进行深度学习》。等。我认为您还将发现定义交互的需求也不再是一个区别点。根据我的经验,在分层建模中未列出的几点是显着减少的过拟合问题以及处理非常大和非常小的训练集的能力。挑剔的一点是,当使用贝叶斯分层方法时,置信区间和假设检验通常不是将要应用的统计方法。