也就是说s对w求导时x的第一个下标是s的第一个下标x的第二个下标是w的第一个下标

那就是公式2中分母的下标k与wij的就相等时而其他都与wij无关,此外我们也有可能遇到不知道根据公式来进行编程根本原因在于公式和编程并不是同样的语言这是有差别的我们如何跨越这个差别呢 如果你有以上两个困惑希望本文和下一篇博客能助你一臂之力, 首先说明求导不只是链式法则这么简单,也就是说s对w求导时x的第一个下标是s的第一个下标x的第二个下标是w的第一个下标,第二个问题将会在下篇博客详细说明, 我们将公式9根据公式2化简一下再带入公式6可以得到公式10也就是情况一下的最终一个样本的梯度 其中用了一个简写也就是求和的项简写了请留意, 以下一步一步的写 根据公式2将后面展开可得 化简一下可以得到 根据公式2继续化简 对上式去括号操作 继续求导并且根据公式2化简得公式11 可以看出这与上面的情况一相差在最后一项上而前面一项是相等的,k表示有多少分类, 最后根据公式4计算所有样本的损失 也就是将所有样本的损失求平均数,我们常常不知道需要对谁求导如何从最后的损失函数一步一步的计算到每一个参数上, 说明这里的x和w的下标表示x的某一行和w的某一列相乘在逐项相加得到s, 前面我们已经说到情况二下公式2中的y和wij的j是相等的, 一般情况下我们直接使用pnj * xni即可, 实际上我们通常为了保证我们的程序正确会写一个数值求导正确情况下两者不会相差很多, 注意以上下标是独立系统与下面的推导过程没有必然关系 这里特别指ij 其他字母的含义基本相同,知道的请跳过这一节直接看下一节,那么实际上这里公式2的分子就不是wij的函数, 我们细说一下由公式1ij是公式1中的下标当sij与wij有关系建立在这个j相等的情况但是公式2的分子并不一定就满足这个关系的什么情况满足呢那就是样本n的正确分类的下标j和wij中的下标j相等时否则这就没有关系, 进一步考虑到e的s次方s与wij的关系因此针对情况一有公式8 继续对第二项展开有公式9 这里还是细细说一下这个过程始终记住一点那就是中间变量与wij是什么关系可以根据公式看出来,根据公式1当且仅当s的下标中是ij时才会与wij有关而对sij对wij求导时得到的就是xii(两个i不一样的含义)只需要把公式1中的x和w的下标中的点号换成i即可,当然这里我们需要再将s的下标i换成n这样才能满足以上的推导, 不失一般性这里对最后一项进行继续推导然后将其相加, 情况2比情况1复杂在公式2的分母上其余相同因此对其求导过程如下 这里先使用ynj(nj是下标)表示样本为n时第j个分类的真实值要么是0要么是11表示真实分类就是这个j. 情况一根据1\u)求导情况二则根据v/u)来求导因此有一点差别。

然后再根据s计算每一个类的概率如下公式2 这里采用的下标和公式1不相同其中n表示样本的个数y表示样本为n时的正确分类标号, 基本求导法则 所谓梯度就是求损失函数对参数w的导数将其用在更新参数w上达到优化的目的, 我们知道梯度计算遵循着链式法则而基本求导公式也是需要的防止有人忘记我先给出这里将会用到的基本求导公式, 以下开始正式求梯度 计算整个损失函数对w下标为ij的导数, 而当wij中j是当前样本n的正确分类时要多减去xni, 这时候计算知道 所以公式11进一步计算可得最终的求导公式公式12 综合两个情况 情况二比情况一多减去一项, 这里x表示输入w表示权重参数, 有公式5 这里Ln表示样本为n时的损失函数, 本文主要针对第一个问题, 写成pnj是因为我们计算过程中会产生这个数而且这样写起来也更整齐, 因此我们需要分为两种情况来进一步计算公式6的后半部分, 根据链式法则 考虑到总损失为每个样本损失的平均数且每个样本的损失都与wij相关 这个说明很有必要假如某个损失与wij无关我们就不用对它进行求导了, 实际上我们也可以先认为他们相关然后进一步处理这里我先不这么做 情况一公式2中的分子与wij无关 也就是以下公式中y与j不相等 公式2中分母必然与wij有关且只有一个与wij有关, , 同样的由于pny是和wij的函数有公式6 结合公式2前一部分有有公式7 后一个部分我们继续来考虑pny的上下两项是否都是wij的函数肯定的回答是这不一定由公式2和1可知如果公式2中分子的下标y不是j, 接下来我们一起探讨一下怎么求后面的一项毕竟这还无法完全理解清楚因为这还是一个导数也不是输入或者中间求到的某个数, 损失函数的计算 首先说明本文解决的是softmax的多分类器的梯度求导以下先给出损失函数的计算方式 这里将最终的loss分为4步进行计算如下所示当然这里不解释为什么是这样的计算方式。

以上既是多分类器softmax的梯度求导公式。

注意到本文并不限制训练样本的数量训练样本的特征数以及最后分为几类, 本文的理论推导将会在下一篇博客中写明如何进行计算,。

后话 其实个人感觉梯度的计算还是挺难的而且本文只是推导公式还没有真正的编程计算。

这个公式就是先将s进行e次方计算然后归一化求得该样本正确分类下的概率p. 根据p可以计算出每一个样本的损失如公式3 这个公式说明每一个样本的损失仅仅是正确分类对应的概率值的log函数这里准确说应该是ln函数也就是以自然对数为底的这样计算导数更方便后面会以ln为版本进行计算, 情况二公式2中的分子是wij的函数 注意到这里公式2中pny的下标y和wij的下标j是相等的也就是yj。

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

转载注明出处:http://acg.inmoke.com/zixun/Lolita/50391.html