当前位置: 首页 > 网络应用技术

交叉渗透损失与KL分散损失之间的关系

时间:2023-03-05 23:15:01 网络应用技术

  撰写此博客的原因是要阅读WENET源代码的计算计算代码。损失代码中有CE损失和KL损失。

  实际上,Pytorch的Kldivloss在代码中被称为

  因为发出的输出是自我回归的形式,因此它可以自然而然地丢失,因此让我们看一下什么是跨熵损失。

  在这里,我想说的是,熵的含义是您可以获得多少有用的信息。这是一个很好的测量指标。如果问题的不确定性,关于他人的信息越大,熵的值就越大,则熵的值越大。如果此事件不确定,其他人告诉您,几乎没有有关此事的信息。

  熵的公式定义如下:

  $ o熵,h(p)= -dum p(i)*log(p(i))$ $

  交叉熵可以理解为实际预测分布p和预测分布q的函数。其公式如下:$ $ cross熵,h(p,q)= -SUM P(i)*log(i q(i i)(i i)(i)(i)(问(i i))))

  可以看出,只有$ log $的部分已更改。熵部分是真实分布,而在交叉渗透中的诱人分布q。通过交叉渗透的真实分布和预测分布之间的差距是相同的,然后交叉 - 熵等于普通熵,实际情况几乎不可能完全预测与真实分布相同,因此交叉熵将大于熵。横熵的部分超过熵称为相对熵或散射的KL。公式如下:

  (kl-divergence是kl分散的含义,而不是中间的减)$ $ crossntopy = entropy + kl-divergencen $ $ $ $ $ $ d_ {kl}(p || q)= h(p,q) -h(p)= -dum_i p_ilog(q_i) - ( - dum_i p_ilog(pi))$ $ $ $ $ $ $ d {kl}(p || q)= -ip_ilog_ilog(q_i)+sum_ip_ip_ilog(p_i)} {q_i {q_i} $ $

  在这里,我们只分析kldivloss。至于威内特的分析线,我将打开另一篇文章https://juejin.cn/post/70927732664928293/

  对于包含n个样品的批处理数据$ d(x,y)$,$ x $是神经网络的输出。y$是一个真实标签(默认为概率),$ x $和$ y $相同的尺寸。

  $ n $ $ l_ {n} $计算的样本的损失值如下:

  $ l {n} = y {n} cdoleft(log y {n} -x {n} ight)$

  可以通过类实现Pytorch,并且该函数也可以直接调用,并且代码被放弃。还原有四种类型的值,与$ ell(x,y)$相对应的不同返回。默认值为

  $ l =左{l {1},ldots,l {n} ight} $

  $ ell(x,y)= left {begin {array} {ll} l,&ext {if降低} = ext {'none'none'} operatAtorName {mean}(l)(l),&ext {if reduection} = ext = ext {'''Anderedge,of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of of的 ight。$代码将被调用。WENET在此处使用默认值,也就是说,列出了每个损失。

  交叉熵等于熵和散射的KL。交叉 - 熵是计算真实后测试分布与预测分布之间差距的函数。目标是减少此损失。