天天看點

softmax和softamxLoss求導公式推導SoftmaxSoftmaxloss重點

Softmax

定義

f(xi)=exi∑jexj f ( x i ) = e x i ∑ j e x j

求導

df(xk)dxi=exi∑jexj+exi−1(∑jexj)2exi=f(xi)−f(xi)2=f(xi)(1−f(xi))  if k=i d f ( x k ) d x i = e x i ∑ j e x j + e x i − 1 ( ∑ j e x j ) 2 e x i = f ( x i ) − f ( x i ) 2 = f ( x i ) ( 1 − f ( x i ) )     i f   k = i

df(xk)dxi=??  if k !=i d f ( x k ) d x i = ? ?     i f   k   ! = i

Softmaxloss

定義

L(xi)=−∑kyklogfk(xi) L ( x i ) = − ∑ k y k l o g f k ( x i ) 其中 y=(y0,y1,...,yn) y = ( y 0 , y 1 , . . . , y n ) , yi∈{0,1} y i ∈ { 0 , 1 } 是 xi x i 類别描述, 比如常見的one hot encoding中,對一個樣本 xi x i , y y 隻有一個元素值為1,其他都是0,是以假設xixi标簽中隻有 yi=1 y i = 1 ,則求和号可以去掉有

L(xi)=−logfi(xi)=−logexi∑jexj=−xi+log∑jexj L ( x i ) = − l o g f i ( x i ) = − l o g e x i ∑ j e x j = − x i + l o g ∑ j e x j

求導1

直接利用展開式 L(xi)=−xi+log∑jexj L ( x i ) = − x i + l o g ∑ j e x j

dLdxi=−1+exi∑jexj=f(xi)−1 d L d x i = − 1 + e x i ∑ j e x j = f ( x i ) − 1

求導2

從原始公式 L(xi)=−logfi(xi) L ( x i ) = − l o g f i ( x i )

dLdxi=dLdfidfidxi=−1fi(xi)f(xi)(1−f(xi))=f(xi)−1 d L d x i = d L d f i d f i d x i = − 1 f i ( x i ) f ( x i ) ( 1 − f ( x i ) ) = f ( x i ) − 1

PS: fi() f i ( ) 的下标似乎應該去掉???

重點

鍊式法則是和複合函數求導關聯, f(g(x)) f ( g ( x ) ) 是複合函數, f(x)g(x) f ( x ) g ( x ) 不是符合函數

df(g(x))x=dfdgdgdx d f ( g ( x ) ) x = d f d g d g d x

d(f(x)g(x))dx=df(x)dxg(x)+dg(x)dxf(x) d ( f ( x ) g ( x ) ) d x = d f ( x ) d x g ( x ) + d g ( x ) d x f ( x )

繼續閱讀