前言
前向传播:从输入到输出的过程
反向传播:将网络的输出与预期结果进行比较,并计算出错误,将该错误通过网络一次传播回来,并根据它们对错误的贡献量更新权重。
一、反向传播的过程
1、利用前向传播求出误差E
2、求出误差E对权重W的偏导数,
3、利用,权重更新公式 更新权重W,其中 α 是学习率
4、继续反向传播,更新更接近输入层的权重W,直到更新所有的权重W,
5、循环1,2,3,4过程,不断更新权重W,降低误差E,最终得到训练好的神经网络(即适合的权重W)
二、学习率
学习率:控制每次根据估计误差对模型权重更新的多少
以梯度下降为例:
三、优化器
简单来说,优化器可以优化损失函数,优化器的工作是以使损失函数最小化的方式更改可训练参数,损失函数指导优化器朝正确的方向移动。
优化器即优化算法是用来求取模型的最优解的,通过比较神经网络自己预测的输出与真实标签的差距,也就是Loss函数。为了找到最小的loss(也就是在神经网络训练的反向传播中,求得局部的最优解),通常采用的是梯度下降
采用不同优化器,权重更新的公式有所不同。
四、损失函数
预测值和真实值的差值就成为损失(当然损失值越小证明模型越是成功)
1:L1Loss函数
2:MSELoss函数
3:CrossEntropyLoss函数(交叉熵函数)
五、激活函数
神经网络的每层都只是做线性变换,多层输入叠加后也还是线性变换。因为线性模型的表达能力通常不够,所以这时候就体现了激活函数的作用了,激活函数可以引入非线性因素。
为什么通常Relu比sigmoid和tanh强,有什么不同?
Relu:f(x)=max(0,x)
1、相比Sigmoid和tanh,ReLU摒弃了复杂的计算(这里指的是幂运算),提高了运算速度;
2、对于深层的网络而言,Sigmoid和tanh函数反向传播的过程中,饱和区域非常平缓,接近于0,容易出现梯度消失的问题,减缓收敛速度。Relu的gradient大多数情况下是常数,有助于解决深层网络的收敛问题。
3、ReLU会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生
4、Relu的另一个优势是在生物上的合理性,它是单边的,相比sigmoid和tanh,更符合生物神经元的特征。ReLU更容易学习优化。因为其分段线性性质,导致其前传,后传,求导都是分段线性。而传统的sigmoid函数,由于两端饱和,在传播过程中容易丢弃信息