目录

softmax函数推导

Logsoftmax

Nllloss

CrossEntropyLoss


简介:nn.CrossEntropyLoss()是nn.logSoftmax()和nn.NLLLoss()的整合

  • softmax函数推导:

公式:pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

1.定义一个分类模型

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】   one-hot code形式

利用这个模型,就很容易的把逻辑上的分类问题转换成数学上的向量问题了。

通项式:pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

对于T向量中的每个元素来说,表达式就是pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

2.定义一个概率模型

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

 

概率和为一:pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】         pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

结合1和2两个例子:   pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】表示的是向量pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】中,第pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】个元素等于1的概率。

因此可以求得期望E:

                            pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】            

而向量pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】中只有第三项为1,其余均为0,所以:

 pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】            

即期望值等于概率分布:

 pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

3.引入一个指示函数概念

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

这个函数的意义是,当 函数括号内表达式为真时,函数值为1。当 数括号内表达式为假时,函数值为0。所以,T 向量中的某个元素pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】的值还可以表示成:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

即当y=i时: pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

利用这个概念,我们将多项式分布转换为指数分布表达式,这一堆东西看起来很复杂,其实并不难理解。看不懂也没关系,继续往下看后面的注释

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

其中:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

因此我们得到一个很有用的表达式:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

 

4.开始推导

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

我们对其进行变换,变换过程如下:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

对1式,我们对两边同时求和:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

根据文中第二部分结论 pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】 得出:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

因为1式中 pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】 ,联立两式的:

      pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

得出:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

Softmax结果表示概率,在【0,1】

根据第二部分我们知道, pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】表示的是向量pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】中,第pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】个元素等于1的概率。因此softmax计算出的最后结果为:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】代表的是一个概率值,对于一个分类问题来说,softmax函数的结果,表示一个“东西”属于每个类别的可能性。这也就是为什么softmax函数适用于解决分类问题的原因。

  • Logsoftmax

就是对softmax取对数,底数为e。

范围在【-∞,0】

  • Nllloss

NLLLoss的结果就是把经过log_softmax函数的值与标签对应的那个值拿出来求和,再求平均,最后取相反数

就是经过Softmax——Log_softmax——NllLoss。

Ps:使用了CrossEntropyLoss后模型的最后一层无需再用softmax**。

交叉熵原理:交叉熵刻画的是实际输出(概率)与期望输出(概率)的距离,也就是交叉熵的值越小,两个概率分布就越接近。假设概率分布p为期望输出,概率分布q为实际输出,H(p,q)为交叉熵,则:

pytorch损失函数之nn.CrossEntropyLoss()【内含softmax推导】

有借鉴其他博主文章,只是在撰写这篇博文时找不到当时看的文章了,如果原博主认为侵权,联系我即删除,谢谢!

 

相关文章:

  • 2021-11-27
  • 2022-12-23
  • 2021-11-21
  • 2021-10-15
  • 2021-04-26
  • 2022-12-23
  • 2021-06-07
  • 2021-12-25
猜你喜欢
  • 2022-12-23
  • 2021-12-19
  • 2022-12-23
  • 2022-01-23
  • 2021-07-20
  • 2021-07-10
相关资源
相似解决方案