误差的计算
这里以三层的BP神经网络为例来讲解
第一层就是我们的输入层 两个节点分别是x1和x2
中间的就是隐层,这里我们有三个节点,比如b1节点为例子他的参数就是
上下标的意思分别是:下标的11的第一个1代表的是上一层的第几个节点,这里是第一个节点。第二个1代表的是本层中的第几个节点这里是第一个。上标代表的是b1,b2,b3这第一层.
中间的这个则是激活函数
这里我们的输出的计算在第一课也讲过,就是x1×对应的一个权重+x2×对应的一个权重+一个偏置,再用上我们的激活函数就可以
最后一层激活函数统一用的是softmax这里就没有写出来了
损失的计算
比如我们有两类,猫跟狗,我们可以使用softmax输出,不是猫就是狗
但要是是人跟男人那就不满足概率分布了,因为既可能归为男人也可能归为人
所以就用二分类问题了
大部分情况还是多分类问题
这里的H就是LOSS,就是我们损失的一个公式
误差的反向传播
在右边,我们要求的误差梯度,也就是求他的偏导,根据链式求导法则
看不懂的话,可以对应一下基本函数导数表
权重的更新
根据上面的计算,我们可以得到后面的权重更新
但这里我们所求的损失梯度的方向是否就是我们指向全局最优的一个方向呢,也就是说指向损失减小最快的一个方向呢?
一般都是分批次进行训练 比如每次取32张图片进行训练 那么batch就是32
优化器
优化器的作用是为了使网络更快的得到一个收敛
SGD:随机梯度下降法
就是我们更新后的参数就是更新前的参数
缺点:1、比如训练集中,样本的标注是错误的,那么它所求出来的损失梯度就会有问题,会出现梯度方向求出来产生变化。
2、可能就陷在某个局部出不来了
在原有的基础上加了一个动量部分,也就是说它除了计算当前的一个梯度之外,他还会将之前的梯度加入进来
比如在这里可能就不会考虑下一次的方向是而是,这样就会有效抑制样本噪声的干扰
这里的就是对我们的损失梯度进行平方求和,这样他的分母在训练过程中会越来越越大,这样就会导致越来越小,这样就是达到自适应学习率的目的。但他有个缺点就是有可能学习率下降的太快,可能还没收敛就停止训练。
比上面的优化器多了两个系数
是对一阶动量进行调整
是对二阶动量进行调整
一系列优化器,优化速度的快慢
常用的就是SGD、SGD+Momentum和Adam