神经网络可以计算任何函数以及难以训练原因

本文探讨了神经网络作为通用函数近似器的理论,并深入分析了深度学习中训练神经网络时遇到的消失和梯度爆炸问题,揭示了这些问题的根本原因在于深层网络中梯度的不稳定性。
摘要由CSDN通过智能技术生成

《Neural Networks and Deep Learning》(五)笔记

神经网络可以计算任何函数的可视化证明
神经网络的一个最显著的事实就是它可以计算任何的函数,也就是说对定某种复杂而奇特的函数 f ( x ) f(x) f(x),不管这个函数是什么样的,总会确保有一个神经网络能够对任何可能的输入 x x x,其值 f ( x ) f(x) f(x)是网络的输出。

图片名称
神经网络具有一种普遍性,不论我们想要计算什么样的函数,我们都确信存在一个神经网络可以计算它。这个普遍性定理甚至在我们限制了神经网络只在输入层和输出层之间存在一个中间层的情况下成立,所以即使是很简单的网络架构都极其强大。 其技术性解释参见论文:Approximation by superpositions of a sigmoidal function

地址:(http://www.dartmouth.edu/~gvc/Cybenko_MCSS.pdf)
另外一篇重要的早期论文是:Multilayer feedforward networks are universal approximators
地址:(http://www.sciencedirect.com/science/article/pii/0893608089900208)

   \;
深度神经网络为何很难训练?

在某些深度神经网络中, 在我们隐藏层BP的时候梯度倾向于变小. 这意味着在前面的隐藏层中的神经元学习速度要慢于后面的隐藏层. 这儿我们只在一个网络中发现了这个现象, 其实在多数的神经网络中存在着更加根本的导致这个现象出现的原因. 这个现象也被称作是消失的梯度问题(vanishing gradient problem ). 同样会产生问题——在前面的层中的梯度会变得非常大!这也叫做激增的梯度问题(exploding gradient problem),这也没比消失的梯度问题更好处理. 更加一般地说, 在深度神经网络中的梯度是不稳定的, 在前面的层中或会消失, 或会激增. 这种不稳定性才是深度神经网络中基于梯度学习的根本问题 .
三层隐藏层的神经网络

图片名称

这里, w 1 , w 2 , … w_{1}, w_{2}, \dots w1,w2,是权重, b 1 , b 2 , … b_{1}, b_{2}, \ldots b1,b2,是偏偏置, C C C则是某个代价函数
梯度整个表达式: ∂ C ∂ b 1 = σ ′ ( z 1 ) w 2 σ ′ ( z 2 ) w 3 σ ′ ( z 3 ) w 4 σ ′ ( z 4 ) ∂ C ∂ a 4 \frac{\partial C}{\partial b_{1}}=\sigma^{\prime}\left(z_{1}\right) w_{2} \sigma^{\prime}\left(z_{2}\right) w_{3} \sigma^{\prime}\left(z_{3}\right) w_{4} \sigma^{\prime}\left(z_{4}\right) \frac{\partial C}{\partial a_{4}} b1C=σ(z1)w2σ(z2)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值