本篇文章的动机:比较最先进的技术

深度神经网络 (DNN) 和高斯过程 (GP)* 是两类具有高度表现力的监督学习算法。 在考虑这些方法的应用时会出现一个自然的问题:“什么时候以及为什么使用一种算法比另一种更有意义?”

在本文中,我们将讨论在什么情况下需要使用哪种方法。 在我们讨论之前首先需要了解这些方法是如何相互关联的。 在本文中,我们将介绍:

  1. GPs 和 DNNs 的理论异同
  2. GP 与 DNN 的优缺点
  3. 使用 GP 与 DNN 的示例应用
  4. GP 和 DNN 的实现

理论差异

参数与非参数

量化这两种模型之间差异的一个维度是考虑每个模型中参数的数量和类型。一般而言,由于高斯过程被认为是非参数机器学习技术,因此高斯过程 (GP) 学习的参数要少得多,并且预测主要由定义它们的训练数据集驱动。他们的参数选择完全由以下选择表示:

  1. 核/协方差函数 (k(x,x’))
  2. 平均函数 (m(x))
  3. 似然协方差噪声 (σ²)

这些选择/变量通常被指定为“超参数”。

高斯过程 (GP) 中缺少参数与许多现代深度神经网络 (DNN) 形成鲜明对比,后者旨在利用尽可能多的参数(或称为权重)来解决机器学习问题。在经典的统计学习文献中使用大量的参数是不被允许的,因为这样会导致显著的过拟合和对分布外数据的泛化能力差。然而这种经典的统计学习理论无法解释大量使用神经网络的成功案例,因此“过度参数化”或“插值”机制的新理论 [1, 6] 开始占据上风。

总结:GP(几乎*)是非参数的,而 DNN 是过度参数化的。GP 仅通过其超参数进行参数化,例如上面所提到的三个超参数。

正向与逆向方法

与参数/非参数属性相关,GPs 和 DNNs 的另一个不同之处在于 DNNs 是逆向方法,而 GPs 是正向方法。

逆向方法涉及从训练数据优化参数,因此也称为监督学习方法。通常,这些方法涉及对参数的一些初始信念(称为“先验”)的参数化。这些方法通常采用自上而下的方法,即使用数据来更新参数 [7] 中捕获的信念。

正向方法依赖于直接使用训练数据来做出新的预测/获得见解,就像大多数依赖内核的机器一样。内核机(Kernel Machines)缺乏核函数本身的细节,新的预测完全由现有的可用数据驱动。由于这些方法能够进行大量的数据探索和洞察,而无需对底层模型形成强烈的初始信念,因此这些方法通常被称为自下而上 [7]。

总结:GPs是(几乎*)正向方法,而dnn是逆向方法。GPs的超参数优化是一种间接的程序,通常使用梯度和基于hessian的学习方法来完成。

学习方式的差异

如果没有深度高斯过程,GP 和 DNN 之间学到的东西也会有所不同。 但是他们完成学习的方法并没有太大区别:两者都使用一阶(在某些情况下,还使用二阶)方法。 这两种方法也优化了不同的函数:对于神经网络,这是一个损失/代价函数,对于高斯过程,这是边缘似然函数(marginal likelihood function)。

对于高斯过程,边缘似然目标往往更非凸,因此,通常使用二阶梯度下降算法(例如 L-BFGS [5])进行优化以避免局部最小值。

总结:GPs一般采用二阶优化方法,如L-BFGS[5],使用目标函数的Hessian; dnn一般采用一阶优化方法,如SGD[8],使用目标函数的梯度。

可解释性

在应用机器学习任务中,能够解释你的结果可能和结果本身一样重要。

神经网络的可解释性

虽然一些较新的DNN结构允许对不确定性进行更彻底的近似,例如通过任意和认知不确定性[9],这些网络中的许多只提供估计的预测值,并提供多类分类可能性的对数(预测概率)。由于 DNN 普遍缺乏可解释性一直是一个流行的研究课题 [10],我相信未来更多的网络架构将包含一些预测不确定性的元素。

其他进步,例如 GradCam [12] 等梯度可视化工具,也提高了 DNN 的可解释性,并有助于减少它们的感知“黑盒化”。

GP 的可解释性

相反,GP 固有的高斯结构使它们非常适合可解释的不确定性估计。 对于需要直观风险评估的某些应用程序,这可能使这种方法更有利。

此外,GPs 具有很好的直观特性,即所有插值平均预测都是作为训练集中现有平均点的加权线性组合生成的,按从测试点到给定数据点的距离(在核函数的空间中测量)进行缩放[11]。 GP 以线性方式重新组合他们之前看到的点以产生新的预测。

总结:GPs的线性和高斯特性有助于提高这些模型的可解释性。虽然dnn长期以来一直被批评为“黑盒”,但今天正在进行重大的研究[9,10,12],是以帮助这些模型更易于解释的。

理论相似性

“插值机制”中的内核机

最近的研究表明,当具有线性激活函数的神经网络在其隐藏层接近无限宽时,它们渐近收敛为内核机[1,2]。这就是Neural Tangent Kernel(NTK)[2]的思想。这种现象发生在所谓的“插值区域”,也称为“双下降曲线”[1]的后半部分。

高斯过程也是内核机,因为决定测试点的预测均值和方差的训练点的线性组合是由高斯过程的核函数决定的。

总结:在一定条件下[1,2],dnn可以被分析为所谓的“插值”的内核机,其核函数由观测点的核加权组合形成对观测点的预测。GPs本质上是内核机[11]。

目标函数的优化

虽然对GPs进行优化的二阶方法多种多样,如BFGS和L-BFGS,但也可以采用一阶方法对这些模型进行优化。与 DNN 一样,GP 也会努力最小化函数(通常是具有内核正则化项的负对数似然),就像神经网络努力最小化损失函数一样。

总结:DNN 和 GP 都通过一阶和二阶优化方法改进他们的模型。

两种方法的优缺点

这个列表并不绝对,但在决定神经网络和高斯过程时可以作为参考:

GP优势/DNN劣势:

  1. 通常比 DNN 需要更少的数据,因为它们需要调整的参数更少。但是,拥有更多数据,尤其是在固定域上密度不增加的情况下(称为固定域渐近 [1]),可以帮助显着提高性能。
  2. 只需要优化少量(超)参数。
  3. 对梯度爆炸和消失等现象具有健壮性(因为除非您使用的是 Deep GP,否则此框架内没有“层结构”)。

GP缺点/DNN优点:

  1. 运行时随着样本数量的增加而难以扩展。运行时复杂度为 O(n³),其中 n 是样本数。这是必须对大型协方差矩阵行矩阵求逆(或伪求逆)的结果。
  2. 相对于神经网络,自动学习较少,在核/协方差函数、均值函数和超参数先验分布的选择上需要做更多的设计考虑。这些参数会对 GP 能够学习的内容产生重大影响。

使用示例

以下建议不是绝对的,即这些建议的目的更多是为了应用我们上面学到的原则。

注意:虽然我对这两个模型类都有重要的实践和理论经验,但请不要将下面的这些建议视为绝对的 - 在某些情况下,使用其他模型类可能仍然是有利的。

数据集较小 → 推荐使用 GP:因为它们需要调整的超参数较少,而且由于数据集较小,额外的时间复杂度不会显着影响整体运行时性能。

数据集很大 → 推荐使用 DNN:,因为 GP 运行时随着示例数据集的数量而扩展性很差,并且 DNN 已被证明可以在给定足够大的数据集的情况下在各种机器学习任务上取得最先进的性能。

执行连续插值 → 推荐使用 GP:因为连续 GP 使用连续核函数测量距离,例如 RBF 核和 Matern 核 [11],从而允许以采用数据集中所有点的方式对现有点的新点进行线性加权。通过现有点的线性组合,仍然可以保留的插值细节。

执行离散插值 → 推荐使用 GP:因为离散GP 使用稀疏、离散的核函数(例如Grid Interpolation)测量距离。稀疏结构仍然允许通过考虑所有现有点来预测新点,并且计算效率更高。

在动态数据集上学习和预测 → 使用 DNN:由于 GP 是(几乎)直接方法,它们的预测机制主要由创建它们的数据集定义。因此,如果定义 GP 的数据集是动态的则需要重新拟合/添加新的数据点,这将涉及重新计算协方差矩阵的逆,这是一项代价高昂的操作。相反,DNN 可以轻松适应新数据点,因为它们是逆向模型,并且预测仅由训练这些模型的数据间接决定。

其他情况→看情况决定:当然还有其他情况没有被上述建议解决。为了解决这些情况,请考虑分析上面讨论的相似性/差异性,以确定两个模型类中的哪一个会表现更好。

总结

我们已经讨论了理论的相似/不同,优点/缺点,以及高斯过程(GPs)和深度神经网络(DNNs)的应用。我们发现:

  1. GPs(几乎)是非参数的,而dnn是过度参数化的。
  2. GPs是(近似)正向方法,而dnn是逆向方法。
  3. GPs一般采用二阶方法进行优化,而dnn一般采用一阶方法进行优化。
  4. GPs的结构使得这些模型具有很强的可解释性。尽管dnn长期以来一直被批评为“黑盒子”,但今天的研究正在帮助这些模型变得更加可解释。
  5. GPs本质上是内核机。在一定条件下,dnn也可以作为内核机进行分析。
  6. dnn和GPs都通过一阶和二阶优化方法对模型进行改进。
  7. GPs通常需要比dnn更少的数据,只需要优化少量(超)参数,并且对诸如爆炸和消失梯度等现象都很健壮。
  8. 相对于dnn, GP运行时的可伸缩性较差,且相对于神经网络,具有较少的自动学习能力。
  9. 如果:(i)数据集较小,或(ii)执行插值→使用GPs。
  10. 如果:(i)数据集较大,或(ii)数据集是动态的,则使用dnn。

引用

[1] Belkin, Mikhail. “Fit without fear: remarkable mathematical phenomena of deep learning through the prism of interpolation.” arXiv preprint arXiv:2105.14368 (2021).

[2] Jacot, Arthur, Franck Gabriel, and Clément Hongler. “Neural tangent kernel: Convergence and generalization in neural networks.” arXiv preprint arXiv:1806.07572 (2018).

[3] Damianou, Andreas, and Neil D. Lawrence. “Deep gaussian processes.” Artificial intelligence and statistics. PMLR, 2013.

[4] Blomqvist, Kenneth, Samuel Kaski, and Markus Heinonen. “Deep convolutional Gaussian processes.” arXiv preprint arXiv:1810.03052 (2018).

[5] Liu, D.C., Nocedal, J. On the limited memory BFGS method for large scale optimization. Mathematical Programming 45, 503–528 (1989). https://doi.org/10.1007/BF01589116

[6] Roberts, Daniel A., Sho Yaida, and Boris Hanin. “The Principles of Deep Learning Theory.” arXiv preprint arXiv:2106.10165 (2021).

[7] Top-Down vs. Bottom-Up Approaches to Data Science, https://blog.dataiku.com/top-down-vs.-bottom-up-approaches-to-data-science.

[8] Herbert Robbins and Sutton Monro A Stochastic Approximation Method The Annals of Mathematical Statistics, Vol. 22, №3. (Sep., 1951), pp. 400–407, DOI: 10.1214/aoms/1177729586.

[9] Amini, Alexander, Wilko Schwarting, Ava Soleimany, and Daniela Rus. “Deep evidential regression.” arXiv preprint arXiv:1910.02600 (2019).

[10] Park, Sangdon, et al. “PAC Confidence Predictions for Deep Neural Network Classifiers.” arXiv preprint arXiv:2011.00716 (2020).

[11] Rasmussen, Carl Edward. “Gaussian processes in machine learning.” Summer school on machine learning. Springer, Berlin, Heidelberg, 2003.

[12] Selvaraju, Ramprasaath R., et al. “Grad-cam: Visual explanations from deep networks via gradient-based localization.” Proceedings of the IEEE international conference on computer vision. 2017.

作者:Ryan Sander

详细对比深度神经网络和高斯过程相关推荐

  1. 神经网络碰上高斯过程,DeepMind论文开启深度学习新方向

    选自arXiv,机器之心编译. 神经网络目前是最强大的函数近似器,而高斯过程是另一种非常强大的近似方法.DeepMind 刚刚提出了两篇结合高斯过程与神经网络的研究,这种模型能获得神经网络训练上的高效 ...

  2. 2017深度学习最新报告及8大主流深度学习框架超详细对比(内含PPT)

    2017深度学习最新报告(PPT) ​ 深度学习领军人物 Yoshua Bengio 主导的蒙特利尔大学深度学习暑期学校目前"深度学习"部分的报告已经全部结束. 本年度作报告的学术 ...

  3. DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介、应用、经典案例之详细攻略

    DL之ANN/DNN: 人工神经网络ANN/DNN深度神经网络算法的简介.应用.经典案例之详细攻略 相关文章 DL:深度学习(神经网络)的简介.基础知识(神经元/感知机.训练策略.预测原理).算法分类 ...

  4. 专题:深度神经网络基本问题的原理详细分析和推导

    文章目录 **写在最前面** **1 神经网络算法的直观了解** **1.1 神经网络过程描述**: **1.2 神经网络相关的几个问题** **1.2.1 表征假设和激活函数** **1.2.2 结 ...

  5. BppAttack:通过图像量化和对比对抗学习来攻击深度神经网络

    BppAttack:通过图像量化和对比对抗学习来攻击深度神经网络 论文地址:BppAttack 一. 当前主流trigger: image patches:BadNet watermark: imag ...

  6. 深度神经网络中Inception-ResNet模块介绍

    之前在https://blog.csdn.net/fengbingchun/article/details/113482036 介绍了Inception,在https://blog.csdn.net/ ...

  7. 如何用Python和深度神经网络识别图像?

    本文授权转自微信公众号芝兰玉树 作者 | 王树义 只需要10几行Python代码,你就能自己构建机器视觉模型,对图片做出准确辨识和分类.快来试试吧! 视觉 进化的作用,让人类对图像的处理非常高效. 这 ...

  8. 深度神经网络对脑电信号运动想象动作的在线解码

    目录 简介 网络模型 结果比较 结论 本分享为脑机学习者Rose整理发表于公众号:脑机接口社区 QQ交流群:941473018 简介 近年来,深度学习方法的快速发展使得无需任何特征工程的端到端学习成为 ...

  9. 【深度学习】万字综述:用于深度神经网络加速的Shift操作

    作者丨科技猛兽 编辑丨极市平台 导读 如何同时满足减少可学习参数的数量以及维持computation/memory access比值?你需要Shift操作.本文将详细介绍shift操作的具体方法.如何 ...

最新文章

  1. 【Linux】24.gdb调试和coredump
  2. 华为云客户端_效果图云渲染已成趋势,云渲染如何选择?
  3. extjs插件开发上传下载文件简单案例
  4. 如何在AWS中启动EC2实例
  5. ftp服务器复制粘贴文件夹,ftp服务器复制粘贴文件夹
  6. 实现 Virtual DOM 下的一个 VNode 节点
  7. Bootstrap treeview 添加滚动条后 搜索完成滚动条自动移动到对应位置
  8. JS中的setInterval 函数体带参数f方法
  9. jackson框架java反序列化漏洞_Jackson CVE-2019-12384: 反序列化漏洞复现
  10. WebService
  11. .Net操作Office总结一 - 使用VS2010自带的Office模板进行开发
  12. C语言或C++中不同类型指针所占内存大小
  13. uniapp本机号码一键登录
  14. android模拟器 diy,史莱姆机DIY模拟器
  15. php写的软件帮助手册源码使用帮助源码html模版源码,系统依附HDSYSCMS内容系统
  16. Camera-ISP DP/DM/EE/NR/CR
  17. MacOS Monterey 12.4 (21F79) OC 0.8.0 / Cl 5146 / PE 三分区原版黑苹果镜像
  18. python3 爬虫日记(三) 爬取堆糖动态加载网页
  19. [NOI2008] 假面舞会
  20. 环信的即时通信的使用

热门文章

  1. 物理化学发展的瓶颈与思路论坛——论文目录
  2. 算法-寻找唯一(唯二)未重复的数据
  3. matlab将三维图像合并
  4. CreateFile返回5
  5. Java 随机数练习之从26个英文字母(含大小写)和 0 - 9 数字中随机抽出4个字符,然后拼接成一个随机验证码
  6. 超级计算机在线计算,个人超级计算机.doc
  7. oracle order by limit,SQL(ORACLE):ORDER BY和LIMIT
  8. windows 网络编程 WinNet
  9. Multi-Source Domain Adaptation 多源域适应 最新论文集合
  10. SpringBootAdmin小记