pytorch学习 激活函数和loss函数及其求导

文章目录

  • 1 激活函数
  • 1.1 sigmoid函数
    • 1.2 tanh函数
    • 1.3 Relu整形线性单元
    • 1.4softmax
  • 2 loss fuction
    • 2.1 均方差
      • 2.2.1 如何使用pytorch自动求导
    • 2.2 交叉cross熵entropy
  • 总结


# 前言 本文所有学习内容来自 [pytorch学这个就够了](https://www.bilibili.com/video/BV1Sr4y1N71H?p=29)

1 激活函数

激活函数包括sigmoid函数和tanh函数和relu函数和softmax函数(常与cross entropy搭配)。

1.1 sigmoid函数

pytorch学习 激活函数和loss函数及其求导_第1张图片
因为激活函数不可导,所以引入sigmoid函数也就是logistic函数。值域是[0,1],中间时0.5.
pytorch学习 激活函数和loss函数及其求导_第2张图片
sigmoid函数的导数
在这里插入图片描述
因为在sigmoid函数的后半段趋于平滑,所以导数趋近0,所以会出现参数一直得不到更新,loss函数也一直不能更新的情况,这种情况叫做梯度离散。
sigmoid函数在pytorch中的使用:
pytorch学习 激活函数和loss函数及其求导_第3张图片

1.2 tanh函数

tanh在RNN中用得比较多。值域是[-1,1]
pytorch学习 激活函数和loss函数及其求导_第4张图片
pytorch学习 激活函数和loss函数及其求导_第5张图片

1.3 Relu整形线性单元

pytorch学习 激活函数和loss函数及其求导_第6张图片
减少了梯度离散和梯度爆炸
pytorch学习 激活函数和loss函数及其求导_第7张图片
Leaky ReLUs
ReLU是将所有的负值都设为零,相反,Leaky ReLU是给所有负值赋予一个非零斜率。Leaky ReLU激活函数是在声学模型(2013)中首次提出的。以数学的方式我们可以表示为:
pytorch学习 激活函数和loss函数及其求导_第8张图片
ai是(1,+∞)区间内的固定参数。

1.4softmax

pytorch学习 激活函数和loss函数及其求导_第9张图片
暂略,RNN要用,用到再来学。

2 loss fuction

loss function包括MSE(均方差)、交叉cross熵entropy、

2.1 均方差

注意与L2 norm区分开,即MSE是L2 norm的平方。
pytorch学习 激活函数和loss函数及其求导_第10张图片
所以 MSE=torch.norm(y-pred,2).pow(2),第一个括号里的2指的是L2
pytorch学习 激活函数和loss函数及其求导_第11张图片

2.2.1 如何使用pytorch自动求导

法一:需要对需要求导的变量提前设置需要求导的属性,然后使用autograd.grad函数
pytorch学习 激活函数和loss函数及其求导_第12张图片
法二:backward()函数会自动后向传播。grad函数就能自动求导
pytorch学习 激活函数和loss函数及其求导_第13张图片

2.2 交叉cross熵entropy

常与softmax这种激活函数共用。
熵只是一种东西的不稳定度H§,注意p是一个向量。比如数字是0的概率为0.9,数字是1的概率为0.1,往后都是0,那么p为[0.9,0.1,0,0,…,0]
在这里插入图片描述
交叉熵是两种东西的不稳定度H(p,q)(就是 怎么说 有点概率比较的意思)
pytorch学习 激活函数和loss函数及其求导_第14张图片
上面两个公式都是计算交叉熵的公式。公式二表明,p和q的交叉熵等于p的熵加上p和q的kl散度。kl散度是一个如果p和q越相似,就越小的数。如果两者相同,kl散度就为0。
pytorch学习 激活函数和loss函数及其求导_第15张图片
那么对于one-hot encoding,也就是[1,0,0,…,0]的情况,如上图,p的熵为0,意味着如果你有个向量和[1,0,0,…,0]一样,那么你的p和q交叉熵就是0,就是loss为0,你达到了这个向量一定是1,不会有损失的成果。

总结

本文讲了pytorch中激活函数和loss函数及其求导。

你可能感兴趣的:(人工智能,深度学习,神经网络,pytorch)