David同样认为对于大部分的数字对儿,我们只需使用一个像素就能分开。因此,那个帖子反映的问题看上去并不能反应数据很少的情形。我们对他得出结论最好有所保留。 为什么深度学习会产生误解? 最后,我想在重新回顾一下Jeff在他原帖中的观点,尤其是下面的陈述: 问题是,现在仅仅有很少的领域可获得数据,并使用深度学习技术进行处理……但是,我认为深度学习对于简单模型的优势在于深度学习可处理大量的数据以及大量的参数。 我并不是赞同这一段,尤其是最后一部分的观点。许多人认为深度学习是一个巨大的黑箱。这个黑箱有海量的参数,只要你能够提供足够多的数据(这里足够多所代表的数据量在一百万和葛立恒数之间),你就能学习到任何的函数。很明显,神经网络极其的灵活,它的灵活性是神经网络之所以取得成功的部分原因。但是,这并不是唯一的原因,对不对? 毕竟,atv直播,统计学与机器学习对超级灵活模型的研究已经有70多年了。我并不认为神经网络相较于其他拥有同样复杂度的算法,会拥有更好的灵活性。 以下是我认为为什么神经网络会取得成功的一些原因: 1.任何措施都是为了取得偏差与方差的平衡: 需要说清楚的是,我认为Jeff实际上想要讨论的模型复杂度与偏差/方差的平衡。假若你没有足够多的数据,那么使用简单的模型相比于复杂模型来说可能会更好(简单模型意味着高偏差/低方差,复杂模型意味着低偏差/高方差)。我认为在大部分情况下,这是一个很好的客观建议。然而…… 2.神经网络有很多的方法来避免过拟合: 神经网络有很多的参数。在Jeff看来,倘若我们没有足够多的数据来估计这些参数的话,这就会导致高方差。人们很清楚这个问题,并研究出了很多可降低方差的技术。像dropout与随机梯度下结合,就会起到bagging算法的作用。我们只不过使用网络参数来代替输入变量。降低方差的技术,比如说dropout,专属于训练过程,在某种程度上来说,其他模型很难使用。这样的话,即使你没有海量的数据,你依然可以训练巨大的模型(就像是我们的MLP,拥有120000个参数)。 3.深度学习能够轻易地将具体问题的限制条件输入到我们的模型当中,这样很容易降低偏差: 这是我认为最重要的部分。然而,我们却经常将这一点忽略掉。神经网络具有模块化功能,它可以包含强大的约束条件(或者说是先验),这样就能够在很大程度上降低模型的方差。最好的例子就是卷积神经网络。在一个CNN中,我们将图像的特征经过编码,然后输入到模型当中去。例如,我们使用一个3X3的卷积,我们这样做实际上就是在告诉我们的网络局部关联的小的像素集合会包含有用的信息。此外,我们可以将经过平移与旋转的但是不变的图像,通过编码来输入到我们的模型当中。这都有助于我们降低模型对图片特征的偏差。并能够大幅度降低方差并提高模型的预测能力。 4.使用深度学习并不需要如google一般的海量数据: 使用上面所提及的方法,即使你是普通人,仅仅拥有100-1000个数据,你仍然可以使用深度学习技术,并从中受益。通过使用这些技术,你不仅可以降低方差,同时也不会降低神经网络的灵活性。你甚至可以通过迁移学习的方法,来在其他任务上来构建网络。 总之,我认为上面的所列举的理由已经能够很好地解释为什么深度学习在实际中会有效。它之所以有效,并不仅仅是因为它拥有大量的参数以及海量的数据。最后,我想说的是本文并没有说Jeff的观点是错误的,本文仅仅是从不同的角度来解读他的观点。希望这篇文章对你有用。 原文地址: https://simplystatistics.org/2017/05/31/deeplearning-vs-leekasso/ PS:关于正方的观点,请查看: (责任编辑:本港台直播) |