梯度

深度学习损失求梯度公式 梯度和损失函数_梯度

导数是个标量,反应的是变化的程度,即“大小”

深度学习损失求梯度公式 梯度和损失函数_深度学习损失求梯度公式_02

         

深度学习损失求梯度公式 梯度和损失函数_神经网络_03

显然,位于这两平面的不同的两个点的位置的函数值的变化程度是不一样的,即导数不同

同样,偏微分,即偏导数,也是标量,只不过它是在自变量的方向上的变换的程度(自变量不只一个)


梯度是一个向量
梯度就是所有的偏微分,带上其方向的向量

深度学习损失求梯度公式 梯度和损失函数_神经网络_04


深度学习损失求梯度公式 梯度和损失函数_深度学习损失求梯度公式_05

这里箭头所代表的方向和大小就是梯度

箭头的长度就是梯度的大小,陡峭的地方长度大,平缓的地方长度小

损失函数的梯度

损失函数是预测值y与已知答案y_的差距


损失函数有很多种,这里介绍两种常见的损失函数

MSE(Mean Squared Error)均方差



用pytorch来自动求梯度




交叉熵

用于分类中使用的

即可用于二分类,也可用于多分类,并且一般与softmax这个激活函数搭配起来使用的


softmax激活函数

soft version of max

一般是和交叉熵搭配起来使用的

深度学习损失求梯度公式 梯度和损失函数_梯度_06

对于我们的输出,比如三个节点的输出,2.0,1.0和0.1

如果把数值转换成一个概率的话,我们希望概率最大的那个值做我们预测的label,因此我们希望把2.0所在的值的索引作为我们预测值的label。

但是我们的probability是有一个范围的,即[0,1],我们希望把一个值转换成probability的话,必须把它人为地压缩在这样一个空间。我们前面讲的sigmoid函数可以把值压缩到[0,1]的区间,但我们还有一个要求是所有输出节点的概率和为1,如果用sigmoid函数的话,比如是个三分类问题,那么输出节点的概率和是等于3了,所以不行

因此,我们引进了softmax函数

  • 输出值的区间[0,1]
  • 所有输出节点的概率和为1

softmax还有额外的一个作用,这也是为什么叫softmax的原因。

我们可以看到,刚开始2和1的差距只有两倍然后经过softmax之后,0.7到0.2变成了3.5倍的差距。所以softmax会把原来大的放的更大,把原来小一点的压缩在一个比较密集的空间,这就是一个soft version of max的操作,会拉大差距