深度学习面试题

来源:互联网 发布:程序员表情包 编辑:程序博客网 时间:2024/05/17 01:25

1.梯度消失爆炸的原因

神经网络梯度不稳定性:前面层的梯度是来自于后面层上梯度的乘乘积,当存在过多的层就出现了内在本质的不稳定

梯度消失:sigmoid 导数最大值为1/4,abs(w)<1,前面层比后面层梯度变化更小,变化更慢,从而引起梯度消失问题

梯度爆炸:当权值过大,前面层比后面层梯度变化更快,会引起梯度爆炸问题。

如何解决梯度消失或爆炸:ReLU替代sigmoid

2. overfitting怎么解决

dropout:开始训练的时候我们随机删除一部分神经元,但是输入层和输出层不做变动。存储dropout的神经元,然后选择一个新的随机神经元子集去删除,更新网络权重和偏置。

通过不断的重复处理我们的网络将会学到一系列的权重和偏置系数。运行整个网络意味着两倍多的隐层神经元将被激活。为了抵消影响,我们将隐层的权重输出减半。
dropout处理很像一个大量处理不同网络的平均结果,通过平均可以排除掉过拟合。

regularization:L2 正则化 让权重W变小的效果,更小的W,表示网络的复杂度更低,对数据的拟合刚刚好,权值分布更加均匀,提高系统的泛化能力。

L1正则化:使参数优化到0


Batch Nomalization:

BN的基本思想其实相当直观:因为深层神经网络在做非线性变换前的激活输入值(就是那个x=WU+BU是输入)随着网络深度加深或者在训练过程中,其分布逐渐发生偏移或者变动,之所以训练收敛慢,一般是整体分布逐渐往非线性函数的取值区间的上下限两端靠近(对于Sigmoid函数来说,意味着激活输入值WU+B是大的负值或正值),所以这导致后向传播时低层神经网络的梯度消失,这是训练深层神经网络收敛越来越慢的本质原因,而BN就是通过一定的规范化手段,把每层神经网络任意神经元这个输入值的分布强行拉回到均值为0方差为1的标准正太分布而不是萝莉分布(哦,是正态分布),其实就是把越来越偏的分布强制拉回比较标准的分布,这样使得激活输入值落在非线性函数对输入比较敏感的区域,这样输入的小变化就会导致损失函数较大的变化,意思是这样让梯度变大,避免梯度消失问题产生,而且梯度变大意味着学习收敛速度快,能大大加快训练速度.

对于每个隐层神经元,把逐渐向非线性函数映射后向取值区间极限饱和区靠拢的输入分布强制拉回到均值为0方差为1的比较标准的正态分布,使得非线性变换函数的输入值落入对输入比较敏感的区域,以此避免梯度消失问题。因为梯度一直都能保持比较大的状态,所以很明显对神经网络的参数调整效率比较高,就是变动大,就是说向损失函数最优值迈动的步子大,也就是说收敛地快。NB说到底就是这么个机制,方法很简单,道理很深刻.

3.

原创粉丝点击