论文解析-《Understanding the difficulty of training deep feedforward neural networks》

本文探讨了深度网络中参数初始化的重要性,通过实验展示了不同激活函数下的网络表现,并提出了xavier初始化方法,以解决梯度消失与爆炸的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇论文详细解析了深度网络中参数xavier初始化方法,这里做一下读书笔记,同时记录一下自己的理解。

1 引言

经典前馈神经网络其实很早就有了(Remelhart et al.,1986),近年来对深度监督神经网络的一些成果只不过在初始化和训练方法跟以前有点区别,可是为什么能够取得这么好的结果?部分原因可能是使用非监督训练方法来初始化网络,使得网络整体处于一个比较好的优化状态。但是更早的一些研究(Bengio et al.,2007)显示,使用greedy layer-wise procedure的方法能够得到更好的结果,这篇论文没有把精力放在深度网络的非监督的预训练方法,而是着眼于多层神经网络究竟哪个环节出了问题(才会导致直接训练效果不佳)

2实验一

作者使用了一个四层的网络,使用sigmoid激活函数,权重层bias初始化为0,weight取下面的均匀分布,n是前一层输入维度


在Shapeset-3*2的数据上训练,训练过程中,使用300副测试图测试,得到各层激活函数值,分别统计出均值和方差,结果得到了下图,图中曲线代表均值,总线条代表方差,可以看到训练一刚开始,最后一层就饱和了(sigmoid范围0-1),训练过了很久,终于走出饱和区了。可是为什么会这样?


作者提出了解释是这样的,刚开始时,整个网络参数都是随机初始化的,这时低层计算得到的数据对整个分类没带任何分类信息,逻辑层softmax(b+Wh)的学习会更多的去调节b,而把Wh压制到0(毕竟Wh对分类无帮助,属于噪音),继而将h推向0,然而sigmoid输出0,意味着饱和,梯度就传递不过去了,低层的学习过程就被阻碍了。这也是实践中sigmoid慢慢被抛弃的原因了,如果我们将激活函数换成在0附近梯度不为零的Hyperbolic tangent呢?

3实验二

作者将实验一中激活函数换对称的tangent和soft-sign,其他都一样,得到了下图,还是发现从第一层饱和,第二层饱和,最终都饱和了。这个违背了深度学习的两个经验原则,我们既不想网络过饱和也不希望过线性。得到这个结果深层次的原因是什么呢?


同时也分析了训练结束在300副测试图上各层激活值的分布直方图


4理论分析

这里写下理解,假如我们输入x,方差var(x),那么经过深度网路后输出的z方差是多少呢?已经假定各变量均值为0,激活函数因此都处于线性区,ni'为各层的维度,可以看到如果var[wi']都小于1,那么最后的输出将越来越小,这样不利于数值稳定和梯度计算;


后向传播呢?其中d为网络深度,可以看到,梯度的方差后向传播后是n×Var(W)相乘的形式,乘数正比网络深度d,如果网络很深,传到第一层的梯度方差就很小了,这就是梯度消失了,如果var(W)大于1,那么传到第一层的梯度方差就很大了,这就是梯度爆炸,那么怎么正确的选择var(W)呢?


只要我们使得,既我们数据方差前向传递和梯度方差后向传递保持不变,那不是完美?



等价于:


取均值:


到此结束,引出了目前最常用的xavier初始化方法,现在明白了,哈哈


那么问题回来了,之前我们使用的均匀分布初始化方法有影响呢,均匀分布有下面公式,这会导致梯度方差后向传递慢慢变小。


### 关于Sigmoid激活函数的研究论文 Sigmoid激活函数是一种常用的非线性激活函数,在神经网络的前向传播过程中起到重要作用。它通过将输入映射到0到1之间的范围来实现平滑的梯度下降过程[^1]。然而,随着深度学习的发展,研究者们逐渐发现其他类型的激活函数可能更适合某些特定的任务。 以下是几篇与Sigmoid激活函数相关的经典研究论文: #### 1. **Neural Networks and Backpropagation** 这是一篇早期介绍神经网络及其训练方法的经典文章。文中详细描述了如何利用Sigmoid作为激活函数进行反向传播算法的设计和优化。该论文奠定了现代深度学习的基础理论框架。 ```plaintext Rumelhart, D.E., Hinton, G.E., & Williams, R.J. (1986). Learning representations by back-propagating errors. ``` #### 2. **Understanding the Difficulty of Training Deep Feedforward Neural Networks** 此论文探讨了不同初始化策略对深层前馈神经网络的影响,并指出Sigmoid激活函数可能导致梯度消失问题。作者建议采用修正后的ReLU替代传统的Sigmoid以改善模型性能。 ```plaintext Glorot, X., & Bengio, Y. (2010). Understanding the difficulty of training deep feedforward neural networks. ``` #### 3. **Rectifier Nonlinearities Improve Neural Network Acoustic Models** 虽然本文主要讨论的是ReLU相对于传统激活函数的优势,但它也提到了Sigmoid存在的局限性和改进方向。这对于理解为什么Sigmoid不再广泛应用于当前主流架构具有重要意义。 ```plaintext Maas, A.L., Hannun, A.Y., & Ng, A.Y. (2013). Rectifier nonlinearities improve neural network acoustic models. ``` #### 4. **On the Properties of Neural Machine Translation: Encoder–Decoder Approaches** 在自然语言处理领域,这篇论文分析了基于编码器-解码器结构的机器翻译系统的特性。尽管重点在于LSTM单元的应用,但其中仍然涉及到了Sigmoid的作用机制以及其在门控控制中的表现形式。 ```plaintext Cho, K., Van Merriënboer, B., Gulcehre, C., Bahdanau, D., Bougares, F., Schwenk, H., & Bengio, Y. (2014). On the properties of neural machine translation: Encoder-decoder approaches. ``` --- ```python import numpy as np def sigmoid(x): """定义Sigmoid激活函数""" return 1 / (1 + np.exp(-x)) # 测试Sigmoid函数 input_values = np.array([-1, 0, 1]) output = sigmoid(input_values) print(output) ``` 上述代码展示了如何简单实现并测试Sigmoid函数的功能。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值