如果损失函数的计算过程不涉及模型输出,那么损失函数的梯度如何对模型参数更新起作用?

这个问题来源于细粒度分类的一篇paper:

 

paper

其中问题在paper的4.1,4.2部分,描述的是该网络的损失函数

 

首先它提出了第一个函数用于突出类内的差异,

 

图片说明

 
 
对人脸识别或者细粒度分类有了解的应该对这个损失函数很熟悉,这个其实就是CenterLoss,其中的f(xn)是模型的输出。

然后问题在于第二个损失函数:

图片说明

可以看出该函数只是跟center有关,模型输出并不参与计算。

而centerloss的center是在loss.backward()之后对其进行修改,那么第二个损失函数也应该类似,也就是说在loss.backward()之前,模型输出不参与第二个损失函数的任何计算,只参与backward()之后更新center的步骤

那么按照反向传播的链式法则,第二个损失函数应该对模型参数更新没有影响,那这个函数就没有作用了。

但是在论文中依然提到了其关于模型输出的梯度:

图片说明

这里我就非常不理解了。

有人能够帮助我理解一下吗

https://blog.csdn.net/zhy8623080/article/details/73188671