总结:学习的数值的稳定性和模型初始化
数值稳定性和模型初始化
我们处理数据时,数据总会有一个明显的分布,这得益于对数据进行的初步处理,并且也可以决定非激活函数该使用哪一类,该使用什么样的模型进行处理,如果处理不好的话,可能会导致各种问题
梯度消失和梯度爆炸
梯度消失
因此,更稳定的ReLU系列函数成为更优越的选择。
梯度爆炸
M = torch.normal(0, 1, size=(4,4)) print('一个矩阵 \n',M) for i in range(100): M = torch.mm(M,torch.normal(0, 1, size=(4, 4))) print('乘以100个矩阵后\n', M)一个矩阵tensor([[-0.7872,2.7090,0.5996,-1.3191],[-1.8260,-0.7130,-0.5521,0.1051],[1.1213,1.0472,-0.3991,-0.3802],[0.5552,0.4517,-0.3218,0.5214]])乘以100个矩阵后 tensor([[-2.1897e+26,8.8308e+26,1.9813e+26,1.7019e+26],[1.3110e+26,-5.2870e+26,-1.1862e+26,-1.0189e+26],[-1.6008e+26,6.4559e+26,1.4485e+26,1.2442e+26],[3.0943e+25,-1.2479e+26,-2.7998e+25,-2.4050e+25]])
打破对称性
现在做操作:
- 交换两个神经元的输入权重:w11↔w12
- 同步交换输出层对应权重:v1↔v2
得到新参数,网络输出完全不变,损失完全相等。
换句话说,我们在每一层的隐藏单元之间具有排列对称性。