其他分享
首页 > 其他分享> > 数值稳定性QA

数值稳定性QA

作者:互联网

1.nan,inf是怎么产生的以及怎么解决呢?答:inf(infinite)通常来说是你的学习率lr (learning rate)调的太大造成大,或者在你权重初始时(此时还没更新)的值太大了,炸掉了导致;nan一般是除0了,本来你梯度已经很小了,然后你又除0;解决的方法有上节课介绍的:合理初始化你的权重,激活函数别选错,学习率别选太大,建议:你把学习率一直往下调小,直到你的nan或inf不出现;另外你看一下你权重的初始,你初始的权重的均值当然是要等于0,方差的区间要取的比较小一点,方差一直往小走,走到你正确的出一些值,然后慢慢的把它调大,使得训练有进展。

2. relu加上那些可以学习的权重是如何拟合2次或更高次的曲线的?答:relu唯一干的事情就是把线性给破坏掉了;

3. 如果训练一开始,在验证集上准确率在提升,但是训练两个epoch后,突然验证集上准确率就变成50%左右了,之后一只稳定在50%,这是为什么呢?答:一般是你的权重坏掉了,基本上50%的话,那么权重里面就是乱七八糟的值了,相当于瞎猜了;(网友:是不是数据没打乱?或溢出了,或是不是因为没有偏移量并且用的signoim?)。一般来说是你的数值稳定性出了问题,你可以尝试学习率调小,如果不能通过调小学习率解决这个问题,那么更本质的问题可能是你模型的数值稳定性不行,很容易就跑歪了;之后会讲一些模型怎么样更稳定;也即大家为何要用ResNet,LSTM等这个那个模型,其实绝大部分的原因是让你的训练更稳定;而不会出现你这样的情况;

4. 如果在训练过程中网络层的输出的中间层特征元素的值突然变成nan了,是发生梯度爆炸了吗?什么原因呢?答:nan一般是梯度太大造成的,如果太小的话那么根本就train不动。就一直是个平的曲线了,就没什么进展。所以,这个情况一般是梯度的问题。

5. 当遇到一些复杂的数学公式,看文字描述也没什么感觉,怎么突破一下呢?答:深度学习的好处是让你不懂很多数学也能用很多东西,反正是神经网络,能可导/求导就行了;而传统的机器学习模型如SVM等你需要有很多数学优化知识,但反过来讲学深度学习也要学好数学,代码能力相对于你的数学能力的话简单的,数学能力就是理解能力;网友:relu学习到的方式应该是结合w,形成分段函数,对于不同的x输入 对应不同的线性表达式,用线性代替曲线。

6. sigmoid容易引起梯度消失,relu相对来说更好(可以让梯度消失的概率变低,但无法说一定可以解决梯度消失问题);因为梯度消失并不只是sigmoid这个地方产生的,也有可能是别的地方产生的。

7. 梯度爆炸是什么引起的?答:梯度爆炸一般不会是激活函数引起的,因为相对来说激活函数是一个比较平滑的曲线,梯度还行,梯度不会有太大的问题;梯度爆炸一般是你的每个层的输出值太大,n个很大的值累乘会导致梯度爆炸。

8.  LSTM通过指数和log这种操作单元使得里面不再是一个累乘的东西,

9. 为何乘法变加法会让训练跟稳定?乘法本质上不就是多个加法吗?如果加法起作用我们需要怎么做?训练用的网络是resnet. 答:100个1.5乘起来太大了,梯度会爆炸;100个1.5加起来就是150,没问题;这个100指你乘的个数;假设100层的话,全用乘法来算那么很容易要么太大要么太小,如果用加法,那么甚至你的输出是1000,10000都没关系;

10. 上次课所讲的让每层的方差是一个常数,指的是batch normlization吗?bn层为何要有γ和β?可以去掉吗?答:和batch normlization没有太多关系,batch normlization在某种程度上也许可以做一点东西;后续会讲到batch normlization,这个可以让你的输出,确实变成一个均值为0,方差为差不多为固定值的东西,但它不一定能保证你的梯度;还没有从这个角度考虑过batch normlization,之后讲到了再看一下。

11. 初始化参数或层输出等复合正态分布有利于学习,是有理论还是经验所得?答:其实不是必须要是正态分布,纯粹是说需要你的输出值是在一个合理的区间内;也即怎么让输出好用公式来推理呢?那么就假设他是一个随机正态分布,因为随机分布比较容易算均值和期望,所以我们假设是随机分布,但也不已经非得是正态分布,只要你的是均值为0,方差是一个固定值就行了,随便是什么分布都行。。之所以大家都用正态分布或均匀分布纯粹是因为这个东西算起来比较容易;数学做比较容易,实际上用什么都没关系。

12. 随机初始化有没有一种最好的/最推荐的概率分布来找到合适的初始随机值?答:Xavier是一个比较不错的很常用方法,(网友:X那个在tanh激活下比较好,但是relu下何凯明的初始化一般更优;)。

13. 有一些研究工作来可视化你的损失函数的等高线区间,但现在还是比较原始。

14. 在做假设时都要加入独立同分布的前提条件的原因是为了简单一点。

15. 如果不是独立同分布的话,内部协变量偏移(ics)和独立同分布如何相互影响?答:一般来说是条件独立同分布的话,

float16浮点数精度太低了,不要说梯度了,稍微复杂点的运算精度都很差

标签:学习,normlization,梯度,nan,稳定性,relu,batch,QA,数值
来源: https://www.cnblogs.com/Li-JT/p/15759867.html