相似
从根本上说,这两种算法都是为了回答机器学习应用中的一个普遍问题而开发的:
给定的预测变量(因子)x1,x2,…,xp- 如何整合这些因素之间的相互作用以提高性能?
一种方法是简单地引入新的预测变量:xp+1=x1x2,xp+2=x1x3,…但由于大量参数和非常具体的交互类型,这被证明是个坏主意。
多级建模和深度学习算法都通过引入更智能的交互模型来回答这个问题。从这个角度来看,它们非常相似。
不同之处
现在让我试着解释一下它们之间在概念上的巨大差异是什么。为了给出一些解释,让我们看看我们在每个模型中所做的假设:
多级建模:1反映数据结构的层可以表示为贝叶斯层次网络。该网络是固定的,通常来自域应用程序。
深度学习:2这些数据是由许多因素的相互作用产生的。交互的结构是未知的,但可以表示为分层分解:通过转换较低级别的表示来获得更高级别的交互。
根本区别来自深度学习中的“交互结构未知”这句话。我们可以假设一些关于交互类型的先验,但是算法定义了学习过程中的所有交互。另一方面,我们必须为多级建模定义交互结构(我们只学习之后改变模型的参数)。
例子
例如,假设我们有三个因素x1,x2,x3我们定义{x1}和{x2,x3}作为不同的层。
例如,在多级建模回归中,我们将得到交互作用x1x2和x1x3,但我们永远不会得到交互x2x3. 当然,部分结果会受到误差相关性的影响,但这对于示例而言并不那么重要。
在深度学习中,例如在具有两个隐藏层和线性激活函数的多层受限玻尔兹曼机 ( RBM ) 中,我们将拥有所有可能的次数小于或等于 3 的多项式交互。
共同的优点和缺点
多级建模
(-) 需要定义交互的结构
(+) 结果通常更容易解释
(+) 可以应用统计方法(评估置信区间,检查假设)
深度学习
(-) 需要大量数据来训练(以及训练时间)
(-) 结果通常无法解释(以黑盒形式提供)
(+) 无需专业知识
(+) 一旦训练有素,通常优于大多数其他通用方法(不是特定于应用程序的)
希望它会有所帮助!