Softmax 反向传播公式推导

Softmax 反向传播公式推导

标签(空格分隔): Caffe源代码


Softmax是深度学习最常见的激活函数,能够将输入按照某一维度进行归一化,输出(0, 1)的值

Softmax函数形式为:

f(xi)=exij=1Kexj f ( x i ) = e x i ∑ j = 1 K e x j

现在我们对Softmax函数进行求导,分为两种情况:
(1)当 k=i k = i 时,

fxk=fxi=exi×j=1Kexje2xi(j=1Kexj)2=exi×(j=1Kexjexi)(j=1Kexj)2=exij=1Kexj×j=1Kexjexij=1Kexj ∂ f ∂ x k = ∂ f ∂ x i = e x i × ∑ j = 1 K e x j − e 2 x i ( ∑ j = 1 K e x j ) 2 = e x i × ( ∑ j = 1 K e x j − e x i ) ( ∑ j = 1 K e x j ) 2 = e x i ∑ j = 1 K e x j × ∑ j = 1 K e x j − e x i ∑ j = 1 K e x j

显然,上面式子可以化简成如下:

fxk=f(xk)(1f(xk)) ∂ f ∂ x k = f ( x k ) ( 1 − f ( x k ) )

(2)当 ki k ≠ i

fxk=exi×exk(j=1Kexj)2=f(xi)f(xk) ∂ f ∂ x k = − e x i × e x k ( ∑ j = 1 K e x j ) 2 = − f ( x i ) f ( x k )

两者结合起来就是:

fxk=ikf(xi)f(xk)+f(xk)(1f(xk))=f(xk)i=1Kf(xk)f(xi) ∂ f ∂ x k = − ∑ i ≠ k f ( x i ) f ( x k ) + f ( x k ) ( 1 − f ( x k ) ) = f ( x k ) − ∑ i = 1 K f ( x k ) f ( x i )

那么在Caffe代码中怎么进行反向传播的呢?

你可能感兴趣的:(深度学习与计算机视觉,caffe源代码)