1.2 卷积神经网络基础补充

反向传播以及误差的计算


- x1和x2为输入层
- 中间的为隐藏层
- w11,第一个1代表上一个层的第一个节点,第二个1表示本层的第一个节点
- 上标括号的1代表第一层,中间的代表激活函数
实例:输出的计算

x1×对应的权重+x2×对应的权重+偏置,通过激活函数统一相乘得到输出

中间节点的输出以及下面节点的输出,b1为偏置(此案例没有使用激活函数)
计算多类损失过程中,一般最后一层激活函数统一用softmax作为激活函数
softmax的计算过程

图中输出的y1、y2并不符合任意一个分布,想要满足一个概率分布,要进行softmax处理
表达式在右下角o1、o2等
发现:
经过softmax激活处理后所有的输出满足概率分布,即和等于1(o1+o2=1)
损失计算

一般计算损失使用:交叉熵损失(一般有两种表达式)
根据最终层的输出函数决定使用哪一种表达式
1.针对多类问题,一般采用softmax输出,所有输出节点满足概率和为1的分布规律,大部分使用
2.针对二分类问题,一般采用sigmoid输出,每一个输出节点之间互不相干,即每一个输出不会满足任何一种分布规律
对于二分类问题,理论上使用sigmoid和softmax没有区别,因为数学表达式的形式是一样的。
对于多分类非互斥问题,使用sigmoid更合适。
对于多分类互斥问题,使用softmax更合适。
PS:Oi*为真实标签值,Oi为预测值,默认log是以e为底等于ln
区别:
若猫和狗的分类,得到的输出是唯一的(不是狗就是猫)
若输出包含人类、男人等等,它的输出不满足概率分布,需要使用二分类问题进行处理。
Loss损失公式

误差的反向传播

以求W11(2)的误差梯度为例(求偏导)



对每一个偏导进行计算
权重的更新

- 左边是求得的损失函数的梯度
- 右边为更新的权重(新值=旧值-设置的学习率×损失梯度)
求得的损失梯度的方向是否是指向全局最优的方向?

目标点:全局最优点
左边:
在实际应用中往往不可能一次性将所有数据载入内存(算力不够等问题),一般使用分批次训练方法进行训练
数据集随机的分成n等份,每份取x张图(正整数),即batch=x
每求一个批次进行一次误差的计算以及反向传播(常用SGD优化器)
右边:
如果使用分批次样本进行求解,损失梯度指向当前批次最优方向(局部最优≠全局最优)
方向不够平稳,要引入优化器
优化器
目的:使网络更快的得到收敛

SGD优化器

每一批数据随机进行分批次,对于一批数据求得的方向可能不同(是随机的)
缺点:
1.易受样本噪声影响
2.可能陷入局部最优解
SGD+Momentum优化器(增加动量部分)

除了计算当前的梯度,还会将之前的梯度加入进来左下角实例
有效抑制样本噪声的干扰
Adagrad优化器(自适应学习率)
主要调整学习率

缺点:学习率下降很快,可能没有达到收敛就停止了
RMSProp优化器(是Adagrad的改良版)
相比Adagrad添加了两个系数,控制衰减速度

Adam优化器
包含了一阶动量和二阶动量

一些列优化器优化速度的快慢

要看实际情况进行选择