激活函数与Loss的梯度 (2)

  

激活函数与Loss的梯度

  输出值在[-1, 1]之间

  在RNN里面用得比较多

  * tanh的求导推导过程

  

激活函数与Loss的梯度

  * tanh在pytorch中的实现

  

激活函数与Loss的梯度

  3)relu(Rectified Liner Unit,调整的线性流单元)

  

激活函数与Loss的梯度

  * 被大量的实验证明,relu函数很适合做deep learning。

  因为:z<0时,梯度是0,z>0时,梯度是1。因为在向后传播时候,因为梯度是1,所以对于搜索最优解,梯度计算时候非常方便,也不会被放大和缩小,很难出现梯度弥散和梯度爆炸的情况。所以在神经网络中优先使用此函数。

  * relu在pytorch中的实现

  

激活函数与Loss的梯度

三、Loss以及Loss的梯度 1、MSE(mean square error):均方差

  

激活函数与Loss的梯度

   pytorch中mse的求解方法:torch.norm().pow(2)  # 要记得平方

  * MSE求导

  

激活函数与Loss的梯度

  * 使用pytorch自动求导   1)法一:

  使用torch.autograd.grad()

  

激活函数与Loss的梯度

 

  2)法二:

  使用mse.backward()

  

激活函数与Loss的梯度

  * 注意w.norm(),w.grad(),w.grad().norm()的区别:

  w.norm()是均方差的平方根

  w.grad()是导数

  w.grad().norm()是导数的均方差的平方根

2、Cross Entropy Loss:

  

激活函数与Loss的梯度

   Softmax:

  

激活函数与Loss的梯度

  * softmax特点:

  1)输出的所有值的范围是0~1

  2)所有概率之和等于1。(注:sigmoid函数,所有概率的和一般是不等于1的)

  输出概率最大值的 索引。

  3)会将原有值之间的差距拉大。

  * softmax求导:

  

激活函数与Loss的梯度

  

激活函数与Loss的梯度

  1)当i=j时

  

激活函数与Loss的梯度

  2)当i ≠ j时

  

激活函数与Loss的梯度

  3)综合

  

激活函数与Loss的梯度

  * softmax在pytorch中的实现

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjsww.html