【动手学深度学习】Task06笔记汇总

本文深入探讨了批量归一化(BN)在深度模型中的应用,解析其在全连接层和卷积层的具体实现,以及BN在训练和预测阶段的区别。同时,详细介绍了残差网络(ResNet)解决深层网络收敛难题的原理,并对比了其与DenseNet的差异。此外,文章还讲解了凸优化的基本概念,包括局部最小值、鞍点、梯度消失等问题,以及梯度下降法的不同变种和动态学习率策略。

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.动态学习率:阶梯函数、指数函数、多项式函数

这些都是为了更快更好地收敛。

自我催眠一下,直接看代码调参数能最快地理解。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值