Task06:批量归一化和残差网络;凸优化;梯度下降
批量归一化和残差网络
关于BN:
1.相比起“标准化”,批量归一化运用于深度模型,欲保持NN中间输出数值的稳定性。
2.关于运用BN的位置:
- 在全连接层中的线性变换和激活函数之间
- 在卷积层的卷积计算和激活函数之间
3.全连接层BN细节:
- 加入了小的正常数epsilon保证分母非零,
- 引入了可学习参数(非超参):拉伸、偏移。这个感觉很妙,如果批量归一化损失掉了很多重要信息,这两个参数可以挽回一下让批量化无效。
- nn.BatchNorm1d(),参数为输出神经元个数
4.卷积层BN:
- 要注意的是若输出多通道,那要对各个通道分别来做BN,也有独立的拉伸偏移参数。
- nn.BatchNorm2d(),参数为通道数
5.训练与预测的BN有区别:前者以BATCH为单位,后者用移动平均来估算
关于ResNet:
1.主要是为了解决深层网络收敛速度慢和准确率不高的问题
2.残差块的数学看起来就是f(x)-x + x,“输入可通过跨层的数据线路”没有看懂
3.再次感叹nn.Sequential的一目了然,网络结构画出来,改一下参数网络代码就写好了,torch.optim也好用
4.DenseNet和ResNet区别在于跨层连接的运算:前者相加,后者连结
5.DenseNet中稠密块输出通道数=输入通道数+卷积层个数*卷积输出通道数
凸优化
1.优化和深度学习的目标区别在于:前者是降低训练集上的loss,后者则是降低测试集上的loss(也即泛化性)
2.优化时会遇到:局部最小值、鞍点、梯度消失的问题
- 局部最小值点很直观地能对梯度下降造成影响
- 鞍点,想一下薯片(考察海森阵的特征值大小来确定极值点还是鞍点:所有自变量一阶偏导数都为0,且Hessian矩阵特征值有正有负的点)
- 梯度消失:比如tanh函数值趋于1的地方,函数值变化非常缓慢
3.凸集合:
- 凸集合的并不一定是凸集
- 利用凸集合则可构造凸函数(无局部极小值,充要条件是二阶导数不小于零)
在评论区看到需要mark的书(南京大学:https://zhuanlan.zhihu.com/p/93616788)

4.最后的几种办法是针对有限制条件的优化问题:拉格朗日乘子法、惩罚项、投影
梯度下降
1.用1维泰勒展开来理解,沿着梯度方向的反方向减少自变量可以减少函数值,高维情形类似
2.“取learning rate是很有技巧的,有些自适应方法就不太需要,虽然这些方法平时不怎么用(因为计算量的问题),但是多少可以给我们一些启发”
3.牛顿法本身可以不设置学习率,但是“一般使用牛顿法时会加入一个步长变量使每一步迭代都满足Wolfe条件“具体参考最优化理论牛顿法。
4.随机梯度、梯度下降、小批量随机梯度下降
5.动态学习率:阶梯函数、指数函数、多项式函数
这些都是为了更快更好地收敛。
自我催眠一下,直接看代码调参数能最快地理解。
本文深入探讨了批量归一化(BN)在深度模型中的应用,解析其在全连接层和卷积层的具体实现,以及BN在训练和预测阶段的区别。同时,详细介绍了残差网络(ResNet)解决深层网络收敛难题的原理,并对比了其与DenseNet的差异。此外,文章还讲解了凸优化的基本概念,包括局部最小值、鞍点、梯度消失等问题,以及梯度下降法的不同变种和动态学习率策略。
37万+

被折叠的 条评论
为什么被折叠?



