【问题标题】:Regression and Neural network回归和神经网络
【发布时间】:2015-11-19 01:50:00
【问题描述】:

我正在参加 Andrew NG 的视频讲座。突然间我想知道回归方法是否被广泛使用。神经网络更常用吗?我只是想知道 Andrew 是否将回归解释为介绍性材料。我想听听在该领域使用机器学习的人的意见。

【问题讨论】:

    标签: neural-network linear-regression logistic-regression


    【解决方案1】:

    此问题与任何编码问题无关,因此它可能更适合其他 StackExchange 社区,例如 DataScienceCrossValidated。这就是说,让我们尝试对线性分类器与神经网络主题进行一些深入了解。引用DeepLearningBook,第168页:

    理解前馈网络的一种方法是从线性模型开始 并考虑如何克服它们的局限性。线性模型(例如逻辑回归和线性回归)之所以有吸引力,是因为它们可以有效且可靠地拟合,无论是封闭形式还是凸优化。线性模型也有一个明显的缺陷,即模型容量仅限于线性函数,因此模型无法理解任意两个输入变量之间的交互作用。为了扩展线性模型来表示 x 的非线性函数,我们可以将线性模型应用于变换后的输入 φ(x),而不是 x 本身,其中 φ 是非线性变换。

    我强烈建议阅读该部分(该书以 HTML 格式在线提供)。但总而言之,扩展线性模型有两种主要方法:

    1. 将输入映射到一个非常通用的高维空间,并在那里执行线性分类(kernel machines 的方法就像您将在课程中看到的 SVM)。

    2. 让您的模型学习映射! 这是神经网络的方法:它放弃了凸性,但更加灵活并且性能更好(至少现在是这样)。

    实际考虑: 方法 1. 的优点是它不需要太多配置就可以很好地解决任何一般问题。请注意,在大多数应用程序中,目前第二种方法(基本上是深度学习)表现更好,但需要大量 domain specific knowledge 才能实现该性能,而且有时没有足够的时间和/或资源。

    技术考虑:请注意,通过封闭形式训练线性模型至少需要 O(n^2) 操作,因为 n 是训练集的大小。运行推理可以是O(n)。另一方面,用随机梯度下降训练的神经网络“可以说在O(1)”。

    为了支持这个声明,来自 DLB,第 5 章:

    • 在深度学习出现之前,学习非线性模型的主要方法是将核技巧与线性模型结合使用。许多核学习算法需要构造一个 m×m 矩阵G_i,j = k (x(i), x(j))。构建此矩阵的计算成本为 O(m^2),这对于具有数十亿示例的数据集显然是不可取的。

    • 内核机器的一个主要缺点是评估决策函数的成本与训练示例的数量成线性关系,因为第 i 个示例为决策函数贡献了一个术语 α_i k(x , x(i))。支持向量机可以通过学习一个主要包含零的 α 向量来缓解这种情况。

    • 有人可能会争辩说,使用 SGD 训练模型的渐近成本是 O(1)m(训练集大小)的函数。

    总而言之,线性模型(主要使用内核技巧)对于不需要最先进性能或大量配置的通用任务仍然是一个合理的现成选择。但是,如果你有足够的数据、GPU 能力和适当调整模型的可能性,深度神经网络将以更好的渐近复杂度在大多数问题上提供更好的结果。缺点是您放弃了大部分可解释性,您对问题的假设变得更加难以明确表达,并且您的设置通常变得高度经验性。

    这至少是大多数来源(如我引用的 DLB)似乎观察到的总体趋势。希望这会有所帮助!

    干杯,
    安德烈斯

    【讨论】:

      【解决方案2】:

      在我看来,回归和神经网络应该同时使用。我们不知道哪个模型效果好,所以我们需要尽可能多地构建模型。此外,在构建模型之后,我们可以使用给定的评估统计量来比较或评估我们的模型。

      【讨论】: