神经网络的容量

https://pure-earth-7284.herokuapp.com/2016/09/07/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C%E7%9A%84%E5%AE%B9%E9%87%8F/

在设计神经网络时,当训练出的模型表现出欠拟合时,我们通常会尝试增加神经网络的层数或者某些层的神经元数目。这也被成为增加神经网络的容量(Capacity)。一直以来,我都认为这个容量指的是神经网络的大小,也就是神经元的个数。然而在读Deep Learning Book的第五章时,发现以前的理解是有问题的。这个容量其实应该是指一个神经网络的假设空间

假设空间

假设空间(hypothesis space) 是指一个机器学习算法可以生成的所有函数的集合。这个函数集合就代表了一个机器学习算法的拟合能力。比如,一个线性回归算法的数学表达式如下:

y=x?Wy=x?W

通过选择不同的WW,该算法可以模拟所有xx的线性组合,因此可以说线性回归算法的假设空间就是xx的所有线性函数。机器学习算法的目标就是在算法的假设空间中,寻找最符合待解决问题的函数。假如能够解决问题的函数不在算法的假设空间,算法无论如何也没办法找到解决方案。比如线性回归算法就不可能拟合一个一组符合sin(x)sin?(x)函数的数据。

因此,一个算法的假设空间,决定了算法的能力边界。

神经网络容量与欠拟合

当神经网络模型的测试结果表现出欠拟合时,用假设空间来解释,可以理解为更符合训练数据的函数在当前神经网络的假设空间之外,所以神经网络只能收敛在一个当前假设空间中,最接近目标函数的一个解。

因此,要想解决欠拟合问题,就要扩大神经网络的假设空间。增加神经网络的层数,或者扩大某些层的神经元个数,都可以达到扩大假设空间的目的[1]。除此之外,引入非线性函数(比如SVM中的核函数),也是扩大假设空间的一种方式。

正规化(regularization)与过拟合

一个神经网络的假设空间越大,能够满足训练数据的函数也就越多。那么在所有满足训练数据的函数中,我们要选择哪一个作为问题的解呢?

我们可以通过正规化的方式,在多个候选解中选择一个符合我们需要的。换句话说,正规化让我们对假设空间中的函数有了倾向性。比如,对于线性回归,我们可以将模型的评判标准改为最小均方误差(MSE)和一个权值衰减部分的和:

J(W)=MSEtrain+λWTWJ(W)=MSEtrain+λWTW

这个公式表明,对于同样能够满足训练数据的函数,我们更加倾向平方L2L2范数更小的那一组权值。其中,λλ表示我们倾向于更小权重值的意愿有多强烈。为什么选择平方L2L2范数更小的权值呢?因为平方L2L2范数更小,表明WW中的每一个元素都比较小,甚至接近于0。这意味着得到的函数曲线更加平滑,起伏更小。而平滑的曲线正好是我们在遇到曲线过拟合时希望得到的结果。这种给损失函数增加一个表示倾向性的部分的做法,叫做正规化(Regularization),是解决过拟合问题的重要工具。

总结

假设空间的概念让神经网络有了更容易理解的解释:神经网络算法就是要在其假设空间中,找到最适合训练数据的一个函数。如果最终没有找到合适的函数,要么是假设空间不够大,要么是寻找的方式不够好。而理论上已经证明,神经网络只要有足够多的神经元,就可以拟合任意曲线,这是神经网络算法能够成为通用解决方案的理论基础。剩下的,就是设计更好的寻找方式,能够从假设空间中找到最合适的那个函数。

时间: 2024-10-14 06:34:26

神经网络的容量的相关文章

【CV知识学习】神经网络梯度与归一化问题总结+highway network、ResNet的思考

这是一篇水货写的笔记,希望路过的大牛可以指出其中的错误,带蒟蒻飞啊~ 一.    梯度消失/梯度爆炸的问题 首先来说说梯度消失问题产生的原因吧,虽然是已经被各大牛说烂的东西.不如先看一个简单的网络结构, 可以看到,如果输出层的值仅是输入层的值与权值矩阵W的线性组合,那么最终网络最终的输出会变成输入数据的线性组合.这样很明显没有办法模拟出非线性的情况.记得神经网络是可以拟合任意函数的.好了,既然需要非线性函数,那干脆加上非线性变换就好了.一般会使用sigmoid函数,得到,这个函数会把数据压缩到开

[Mechine Learning & Algorithm] 神经网络基础

目前,深度学习(Deep Learning,简称DL)在算法领域可谓是大红大紫,现在不只是互联网.人工智能,生活中的各大领域都能反映出深度学习引领的巨大变革.要学习深度学习,那么首先要熟悉神经网络(Neural Networks,简称NN)的一些基本概念.当然,这里所说的神经网络不是生物学的神经网络,我们将其称之为人工神经网络(Artificial Neural Networks,简称ANN)貌似更为合理.神经网络最早是人工智能领域的一种算法或者说是模型,目前神经网络已经发展成为一类多学科交叉的

神经网络浅讲:从神经元到深度学习

神经网络是一门重要的机器学习技术.它是目前最为火热的研究方向--深度学习的基础.学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术. 本文以一种简单的,循序的方式讲解神经网络.适合对神经网络了解不多的同学.本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文. 神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术.人脑中的神经网络是一个非常复杂的组织.成人的大脑中估计有1000亿个神经元之多. 图1 人脑神经网络 那么机

人工神经网络--ANN

神经网络是一门重要的机器学习技术.它是目前最为火热的研究方向--深度学习的基础.学习神经网络不仅可以让你掌握一门强大的机器学习方法,同时也可以更好地帮助你理解深度学习技术. 本文以一种简单的,循序的方式讲解神经网络.适合对神经网络了解不多的同学.本文对阅读没有一定的前提要求,但是懂一些机器学习基础会更好地帮助理解本文. 神经网络是一种模拟人脑的神经网络以期能够实现类人工智能的机器学习技术.人脑中的神经网络是一个非常复杂的组织.成人的大脑中估计有1000亿个神经元之多. 图1 人脑神经网络 那么机

能模仿韩寒小四写作的神奇递归神经网络

作者:寒小阳 && 龙心尘 时间:2016年4月 出处: http://blog.csdn.net/han_xiaoyang/article/details/51253274 http://blog.csdn.net/longxinchen_ml/article/details/51253526 声明:版权所有,转载请联系作者并注明出处 特别鸣谢:北京大学焦剑博士对Recurrent Neural Networks Tutorial part1一文的翻译和部分内容提供 1.引言 在离人工智

RBF神经网络和BP神经网络的关系

作者:李瞬生链接:https://www.zhihu.com/question/44328472/answer/128973724来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. BP Neural Network - 使用 Automatic Differentiation (Backpropagation) 进行导数计算的层级图模型 (layer-by-layer graphical model) 只要模型是一层一层的,并使用AD/BP算法,就能称作 BP Ne

人工神经网络简介

本文主要对人工神经网络基础进行了描述,主要包括人工神经网络的概念.发展.特点.结构.模型. 本文是个科普文,来自网络资料的整理. 一.             人工神经网络的概念 人工神经网络(Artificial Neural Network,ANN)简称神经网络(NN),是基于生物学中神经网络的基本原理,在理解和抽象了人脑结构和外界刺激响应机制后,以网络拓扑知识为理论基础,模拟人脑的神经系统对复杂信息的处理机制的一种数学模型.该模型以并行分布的处理能力.高容错性.智能化和自学习等能力为特征,

Deep Q-Network 学习笔记(二)—— Q-Learning与神经网络结合使用(有代码实现)

参考资料: https://morvanzhou.github.io/ 非常感谢莫烦老师的教程 http://mnemstudio.org/path-finding-q-learning-tutorial.htm http://www.cnblogs.com/dragonir/p/6224313.html 这篇文章也是用非常简单的说明将 Q-Learning 的过程给讲解清楚了 http://www.cnblogs.com/jinxulin/tag/%E5%A2%9E%E5%BC%BA%E5%A

机器学习中使用的神经网络第九讲笔记

Geoffery Hinton教授的Neuron Networks for Machine Learning的第八讲为可选部分,好像很难,这里就先跳过了,以后有用的时候再回来补.第九讲介绍了如何避免过拟合,提高模型的泛化能力. 这是Cousera上的课程链接 Overview of ways to improve generalization 这一小节,我们介绍如何在网络有过多能力处理过多容量的训练数据集时,如何通过降低过拟合来提高网络模型的泛化能力.下面将介绍几种控制网络容量的方法,以及如何设