首先,回顾高数中对于梯度的定义
梯度是一个向量,表示某一函数在该点处的方向导数沿着该方向取得最大值,即函数在该点处沿着该方向(此梯度的方向)变化最快,变化率最大(为该梯度的模)
设二元函数 在平面区域 上具有一阶连续偏导数,则对于每一个点 都可定出一个向量 该函数就称为函数 在点 的梯度,记作 或
即有:
其中 称为(二维的)向量微分算子或Nabla算子
所以
设 是方向 上的单位向量
则可得其方向导数为:
可以发现方向导数的大小,即梯度与方向向量的点乘
所以当方向 与梯度方向一致时,有
余弦值 ,此时方向导数 取得最大值
且最大值就为梯度的模,即
因此,函数在一点沿梯度方向的变化率是最大的,且最大值为在该点处梯度的模
损失函数用来衡量预测值和真实值之间的区别,也就是衡量模型的好坏
损失函数越小,表示模型的鲁棒性越好
损失函数的作用:计算神经网络每次迭代的前向计算结果(预测值)与真实值的差距,从而指导下一步的训练向正确的方向进行
损失函数的具体步骤:
1.用随机值初始化前向计算公式的参数;
2.代入样本,计算输出的预测值;
3.用损失函数计算预测值和标签值(真实值)的误差;
4.根据损失函数的导数,沿梯度最小方向将误差回传,修正前向计算公式中的各个权重值;
5.goto 2,直到损失函数值达到一个满意的值就停止迭代
几种简单的损失函数:
绝对值损失(L1 Loss)
其公式为:
其中 为真实值, 为预测值
可以发现该函数在零点处不可导
均方损失(L2 Loss)
其公式为:
除以 是求导后系数部分为 1
鲁棒损失(Huber’s Robust Loss)
其公式为: