分类:
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、常用的非线性激励函数
1.Sigmoid
优点:输出可以映射到[0,1]
缺点:一次求导后梯度损失了75%,梯度损失严重
2.Than
优点:输出可以映射到[-1,1]
缺点:梯度损失明显
3.Relu
特性:正向截断负值,损失大量特征,但由于特征数量足够,仍然足够推动机器进行学习
通过引入非线性层使得神经网络能够拟合非线性问题。
【问题】是否存在线性回归网络?
答:没有,存粹的线性问题并不存在多层网络的概念,由其线性特性,只需要一层便能表示“多层”的
二、神经网络构建
1、神经元的并联和串联
从第一层神经元的最后一层的神经元,每一个神经元的数值由前一层神经元数值,神经元参数W,b以及激励函数共同决定。
2.神经网络优化:链式法则
计算梯度
Output->last layer
Layer->layer
Layer->parameter
3.训练过程中调参技巧
刚开始适用较大的学习率,加快收敛,后期使得学习率衰减,提高训练精度。
三、神经网络的“配件”
1.常见的损失函数
影响深度学习性能的最重要参数之一,是外部世界(标签)对神经网络模型训练的直接指导,合适的损失函数能确保深度学习模型收敛,设计合理的损失函数是研究工作中主要内容之一
1.1Sofmax
例:一组数据【1,2,3,4,1,2,3】----》【0.024,0.064,0.175,0.475,0.024,0.064,0.175】
对Loss的影响:指数型的性质将放大数据间的区别,因此对于分类问题的预测结果更为清晰
1.2Cross entropy(交叉熵)
缺点:当Yn=0时,会造成损失无限大。
用途:目标为[0,1]区间的回归问题以及生成问题(如针对一张图片的生成问题,刚开始生成0到1间的回归值,之后再乘以255得到像素级彩色图片)单独将某些预测值取出或者赋予不同大小的参数
1.3损失函数设计
1.3.1看中某一个属性
1.3.2合并多个loss:多目标训练任务,设置合理的Loss结合方式(如FAST-RCNN中融合两个Loss(分类与空间位置的回归))
1.3.3神经网络融合:不同神经网络loss结合,共同loss对网络进行训练指导
2.学习率
1.性质:学习率大时候收敛快,学习率小时精度高
2.学习率的选择:固定,步进
3.惯性因子
对新出现的梯度方向,优化方向会沿着之前已经得到的优化方向前进,不会直接变为新方向,只会微调
4.过拟合
过度关注训练数据,从模型上的体现便是过于关注某些神经元,权重过高,导致模型灵活性下降,下图中黑色曲线比绿色更高
4.1应对方法:
4.1.1正则化,在考虑损失函数的设计时,同时考虑模型,得到模型较小请款下的最优决策函数
4.1.2Dropout:对隐藏层中的神经元训练过程中进行随机丢弃,这样训练得到的结果各神经元参数分布将比较均匀,不容易过拟合
4.1.3Fine-tuning:利用已经训练好的模型,对其中某些层参数固定,训练一小部分参数,对整个网络进行微调,示例如下
4.2面试题Dropout ,Pooling区别?
Pooling的本质是降维(降维的原因是经过ReLU后,很多数据值为0,不对训练有效果,因此通过最大/平均降维进行抛弃)
Dropout本质是:正则化