Writing / KERNELIZED AI · Compute · Autograd · MATH
SoftMax Kernel: Forward and Backward Pass (MATH) A compact derivation of softmax forward and backward operations for later kernel work.
Shivam Pandey 30 March 2025 4 min read
A ∈ R s 2 s 1 A \in \mathbb{R}^{s_2 s_1} A ∈ R s 2 s 1 where s 2 s_2 s 2 and s 1 s_1 s 1 are the index set, for example in a 5D tensor A ∈ R i j k l m A \in \mathbb{R}^{ijklm} A ∈ R ij k l m a possible index set could be s 2 = { i , j } s_2 = \{ i, j \} s 2 = { i , j } and s 1 = { k , l , m } s_1 = \{k, l, m \} s 1 = { k , l , m } .
B s 2 s 1 = s o f t m a x s 1 ( A s 2 s 1 ) B_{s_2 s_1} = softmax_{s_1}(A_{s_2 s_1}) B s 2 s 1 = so f t ma x s 1 ( A s 2 s 1 ) is a softmax operation over s1 index set of A, and the resulting index set still remains same as A s.t. B ∈ R s 2 s 1 B \in \mathbb{R}^{s2s1} B ∈ R s 2 s 1
Softmax Operation
B s 2 s 1 = s o f t m a x s 1 ( A s 2 s 1 ) \begin{aligned}B_{s_2 s_1} = softmax_{s_1}(A_{s_2 s_1})
\end{aligned} B s 2 s 1 = so f t ma x s 1 ( A s 2 s 1 )
I s 2 s 1 1 = exp ( A s 2 s 1 ) \begin{aligned}I^1_{s_2 s_1} = \exp{(A_{s_2 s_1})}
\end{aligned} I s 2 s 1 1 = exp ( A s 2 s 1 )
I s 2 2 = ∑ s 1 I s 2 s 1 1 \begin{aligned}I^2_{s_2} = \sum_{s1}I^1_{s_2 s_1}
\end{aligned} I s 2 2 = s 1 ∑ I s 2 s 1 1
Softmax:
B s 2 s 1 = I s 2 s 1 1 I s 2 2 = exp ( A s 2 s 1 ) ∑ s 1 exp ( A s 2 s 1 ) \begin{aligned}B_{s_2 s_1} = \frac{I^1_{s_2 s_1}}{I^2_{s_2}} = \frac{\exp{(A_{s_2 s_1})}}{\sum_{s1}\exp{(A_{s_2 s_1})}}
\end{aligned} B s 2 s 1 = I s 2 2 I s 2 s 1 1 = ∑ s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 )
Backward Pass:
Here we will just look at the backward pass of the softmax kernel alone, as it will help us understand a much wider concept of having a multidimensional loss function instead of a scalar loss .
Fortunately this also simplifies the problem for us as we won’t have to account for any pullbacks for the output B s 2 s 1 B_{s_2 s_1} B s 2 s 1 itself.
∂ B s 2 s 1 ∂ A s 2 ′ s 1 ′ ∈ R s 2 s 1 s 2 ′ s 1 ′ \begin{aligned}\frac{\partial B_{s_2 s_1}}{\partial A_{s'_2 s'_1}} \in \mathbb{R}^{s_2 s_1 s'_2 s'_1}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ B s 2 s 1 ∈ R s 2 s 1 s 2 ′ s 1 ′
Derivation:
∂ B s 2 s 1 ∂ A s 2 ′ s 1 ′ = 1 ∑ s 1 exp ( A s 2 s 1 ) ∂ exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ + exp ( A s 2 s 1 ) ∂ ∑ s 1 1 / e x p ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ \begin{aligned}\frac{\partial B_{s_2 s_1}}{\partial A_{s'_2 s'_1}} = \frac{1}{\sum_{s_1}\exp{(A_{s_2 s_1})}} \frac{\partial \exp{(A_{s_2 s_1})}}{\partial A_{s'_2 s'_1}} + \exp(A_{s_2 s_1})\frac{\partial \sum_{s_1} 1/exp(A_{s_2 s_1})}{\partial A_{s'_2 s'_1}}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ B s 2 s 1 = ∑ s 1 exp ( A s 2 s 1 ) 1 ∂ A s 2 ′ s 1 ′ ∂ exp ( A s 2 s 1 ) + exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ ∂ ∑ s 1 1/ e x p ( A s 2 s 1 )
1 ∑ s 1 exp ( A s 2 s 1 ) ∂ exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ = exp ( A s 2 s 1 ) ∑ s 1 exp ( A s 2 s 1 ) A s 2 s 1 A s 2 ′ s 1 ′ = exp ( A s 2 s 1 ) ∑ s 1 exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) \begin{aligned}\frac{1}{\sum_{s_1}\exp{(A_{s_2 s_1})}} \frac{\partial \exp{(A_{s_2 s_1})}}{\partial A_{s'_2 s'_1}} = \frac{\exp(A_{s_2 s_1})}{\sum_{s_1}\exp{(A_{s_2 s_1})}} \frac{A_{s_2 s_1}}{A_{s'_2 s'_1}} = \frac{\exp(A_{s_2 s_1})}{\sum_{s_1}\exp{(A_{s_2 s_1})}} \mathbb{1}_{(s_2 s_1) = (s'_2 s'_1)}
\end{aligned} ∑ s 1 exp ( A s 2 s 1 ) 1 ∂ A s 2 ′ s 1 ′ ∂ exp ( A s 2 s 1 ) = ∑ s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ) A s 2 ′ s 1 ′ A s 2 s 1 = ∑ s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ )
exp ( A s 2 s 1 ) ∂ ∑ s 1 1 / e x p ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ = − exp ( A s 2 s 1 ) [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 ∂ ∑ s 1 exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ \begin{aligned}\exp(A_{s_2 s_1})\frac{\partial \sum_{s_1} 1/exp(A_{s_2 s_1})}{\partial A_{s'_2 s'_1}} = -\frac{\exp(A_{s_2 s_1})}{[\sum_{s_1} exp(A_{s_2 s_1})]^2} \frac{\partial \sum_{s_1} \exp(A_{s_2 s_1})}{\partial A_{s'_2 s'_1}}
\end{aligned} exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ ∂ ∑ s 1 1/ e x p ( A s 2 s 1 ) = − [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ ∂ ∑ s 1 exp ( A s 2 s 1 )
∂ ∑ s 1 exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ = ∑ s 1 ∂ exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ = ∑ s 1 exp ( A s 2 s 1 ) ∂ A s 2 s 1 ∂ A s 2 ′ s 1 ′ = ∑ s 1 exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) = exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′ \begin{aligned}\frac{\partial \sum_{s_1} \exp(A_{s_2 s_1})}{\partial A_{s'_2 s'_1}} = \sum_{s_1} \frac{\partial \exp(A_{s_2 s_1})}{\partial A_{s'_2 s'_1}} = \sum_{s_1} \exp(A_{s_2 s_1}) \frac{\partial A_{s_2 s_1}}{\partial A_{s'_2 s'_1}} \\ = \sum_{s_1} \exp(A_{s_2 s_1}) \mathbb{1}_{(s_2 s_1) = (s'_2 s'_1)} = \exp(A_{s_2 s'_1}) \mathbb{1}_{s_2 = s'_2}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ ∑ s 1 exp ( A s 2 s 1 ) = s 1 ∑ ∂ A s 2 ′ s 1 ′ ∂ exp ( A s 2 s 1 ) = s 1 ∑ exp ( A s 2 s 1 ) ∂ A s 2 ′ s 1 ′ ∂ A s 2 s 1 = s 1 ∑ exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) = exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′
Final Derivative Simplification:
∂ B s 2 s 1 ∂ A s 2 ′ s 1 ′ = exp ( A s 2 s 1 ) ∑ s 1 exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − exp ( A s 2 s 1 ) [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′ = exp ( A s 2 s 1 ) ∑ s 1 exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 1 s 2 = s 2 ′ = B s 2 s 1 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − B s 2 s 1 B s 2 s 1 ′ 1 s 2 = s 2 ′ \begin{aligned}
\frac{\partial B_{s_2 s_1}}{\partial A_{s'_2 s'_1}} = \frac{\exp(A_{s_2 s_1})}{\sum_{s_1}\exp{(A_{s_2 s_1})}} \mathbb{1}_{(s_2 s_1) = (s'_2 s'_1)} - \frac{\exp(A_{s_2 s_1})}{[\sum_{s_1} exp(A_{s_2 s_1})]^2} \exp(A_{s_2 s'_1}) \mathbb{1}_{s_2 = s'_2} \\ = \frac{\exp(A_{s_2 s_1})}{\sum_{s_1}\exp{(A_{s_2 s_1})}} \mathbb{1}_{(s_2 s_1) = (s'_2 s'_1)} - \frac{\exp(A_{s_2 s_1}) \exp(A_{s_2 s'_1})}{[\sum_{s_1} exp(A_{s_2 s_1})]^2} \mathbb{1}_{s_2 = s'_2} \\
= B_{s_2 s_1} \mathbb{1}_{(s_2 s_1) = (s'_2 s'_1)} - B_{s_2 s_1}B_{s_2 s'_1} \mathbb{1}_{s_2 = s'_2}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ B s 2 s 1 = ∑ s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′ = ∑ s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′ = B s 2 s 1 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − B s 2 s 1 B s 2 s 1 ′ 1 s 2 = s 2 ′
∂ B s 2 s 1 ∂ A s 2 ′ s 1 ′ = B s 2 s 1 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − B s 2 s 1 B s 2 s 1 ′ 1 s 2 = s 2 ′ \begin{aligned}
\frac{\partial B_{s_2 s_1}}{\partial A_{s'_2 s'_1}} = B_{s_2 s_1} \mathbb{1}_{(s_2 s_1) = (s'_2 s'_1)} - B_{s_2 s_1}B_{s_2 s'_1} \mathbb{1}_{s_2 = s'_2}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ B s 2 s 1 = B s 2 s 1 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − B s 2 s 1 B s 2 s 1 ′ 1 s 2 = s 2 ′
Full reduction: With Loss Drivative
Let’s assume the output B s 2 s 1 B_{s_2 s_1} B s 2 s 1 being used by some frisky function to generate loss O s 3 O_{s_3} O s 3 and somehow we have the pullback of B B B w.r.t. O O O as d B s 3 s 2 s 1 = ∂ O s 3 ∂ B s 2 s 1 dB_{s_3 s_2 s_1} = \frac{\partial O_{s_3}}{\partial B_{s_2 s_1}} d B s 3 s 2 s 1 = ∂ B s 2 s 1 ∂ O s 3 , and now we are interested in find out what’s the pullback of A s 2 ′ s 1 ′ A_{s'_2 s'_1} A s 2 ′ s 1 ′ w.r.t. O s 3 O_{s_3} O s 3 i.e. ∂ O s 3 ∂ A s 2 ′ s 1 ′ \frac{\partial O_{s_3}}{\partial A_{s'_2 s'_1}} ∂ A s 2 ′ s 1 ′ ∂ O s 3 .
∂ O s 3 ∂ A s 2 ′ s 1 ′ = ∑ s 2 s 1 ∂ O s 3 ∂ B s 2 s 1 ∂ B s 2 s 1 ∂ A s 2 ′ s 1 ′ = ∑ s 2 s 1 d B s 3 s 2 s 1 [ exp ( A s 2 s 1 ) ∑ s 1 exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 1 s 2 = s 2 ′ ] = d B s 3 s 2 ′ s 1 ′ exp ( A s 2 ′ s 1 ′ ) ∑ s 1 exp ( A s 2 ′ s 1 ) − ∑ s 2 s 1 d B s 3 s 2 s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 1 s 2 = s 2 ′ \begin{aligned}\frac{\partial O_{s_3}}{\partial A_{s'_2 s'_1}} = \sum_{s_2 s_1} \frac{\partial O_{s_3}}{\partial B_{s_2 s_1}}\frac{\partial B_{s_2 s_1}}{\partial A_{s'_2 s'_1}} \\
= \sum_{s_2 s_1} dB_{s_3 s_2 s_1} \left[ \frac{\exp(A_{s_2 s_1})}{\sum_{s_1}\exp{(A_{s_2 s_1})}} \mathbb{1}_{(s_2 s_1) = (s'_2 s'_1)} - \frac{\exp(A_{s_2 s_1}) \exp(A_{s_2 s'_1})}{[\sum_{s_1} exp(A_{s_2 s_1})]^2} \mathbb{1}_{s_2 = s'_2} \right] \\
= dB_{s_3 s'_2 s'_1} \frac{\exp(A_{s'_2 s'_1})}{\sum_{s_1}\exp{(A_{s'_2 s_1})}} - \sum_{s_2 s_1} dB_{s_3 s_2 s_1} \frac{\exp(A_{s_2 s_1}) \exp(A_{s_2 s'_1})}{[\sum_{s_1} exp(A_{s_2 s_1})]^2} \mathbb{1}_{s_2 = s'_2}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ O s 3 = s 2 s 1 ∑ ∂ B s 2 s 1 ∂ O s 3 ∂ A s 2 ′ s 1 ′ ∂ B s 2 s 1 = s 2 s 1 ∑ d B s 3 s 2 s 1 [ ∑ s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ) 1 ( s 2 s 1 ) = ( s 2 ′ s 1 ′ ) − [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′ ] = d B s 3 s 2 ′ s 1 ′ ∑ s 1 exp ( A s 2 ′ s 1 ) exp ( A s 2 ′ s 1 ′ ) − s 2 s 1 ∑ d B s 3 s 2 s 1 [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′
∑ s 2 s 1 d B s 3 s 2 s 1 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 1 s 2 = s 2 ′ = ∑ s 1 d B s 3 s 2 ′ s 1 exp ( A s 2 ′ s 1 ) exp ( A s 2 ′ s 1 ′ ) [ ∑ s 1 e x p ( A s 2 ′ s 1 ) ] 2 = exp ( A s 2 ′ s 1 ′ ) [ ∑ s 1 e x p ( A s 2 ′ s 1 ) ] 2 ∑ s 1 [ d B s 3 s 2 ′ s 1 exp ( A s 2 ′ s 1 ) ] \begin{aligned}\sum_{s_2 s_1} dB_{s_3 s_2 s_1} \frac{\exp(A_{s_2 s_1}) \exp(A_{s_2 s'_1})}{[\sum_{s_1} exp(A_{s_2 s_1})]^2} \mathbb{1}_{s_2 = s'_2} = \sum_{s_1} dB_{s_3 s'_2 s_1} \frac{\exp(A_{s'_2 s_1}) \exp(A_{s'_2 s'_1})}{[\sum_{s_1} exp(A_{s'_2 s_1})]^2} \\
= \frac{\exp(A_{s'_2 s'_1})}{[\sum_{s_1} exp(A_{s'_2 s_1})]^2} \sum_{s_1} [dB_{s_3 s'_2 s_1} \exp(A_{s'_2 s_1})]
\end{aligned} s 2 s 1 ∑ d B s 3 s 2 s 1 [ ∑ s 1 e x p ( A s 2 s 1 ) ] 2 exp ( A s 2 s 1 ) exp ( A s 2 s 1 ′ ) 1 s 2 = s 2 ′ = s 1 ∑ d B s 3 s 2 ′ s 1 [ ∑ s 1 e x p ( A s 2 ′ s 1 ) ] 2 exp ( A s 2 ′ s 1 ) exp ( A s 2 ′ s 1 ′ ) = [ ∑ s 1 e x p ( A s 2 ′ s 1 ) ] 2 exp ( A s 2 ′ s 1 ′ ) s 1 ∑ [ d B s 3 s 2 ′ s 1 exp ( A s 2 ′ s 1 )]
∂ O s 3 ∂ A s 2 ′ s 1 ′ = d B s 3 s 2 ′ s 1 ′ exp ( A s 2 ′ s 1 ′ ) ∑ s 1 exp ( A s 2 ′ s 1 ) − exp ( A s 2 ′ s 1 ′ ) [ ∑ s 1 e x p ( A s 2 ′ s 1 ) ] 2 ∑ s 1 [ d B s 3 s 2 ′ s 1 exp ( A s 2 ′ s 1 ) ] = d B s 3 s 2 ′ s 1 ′ B s 2 ′ s 1 ′ − B s 2 ′ s 1 ′ 1 ∑ s 1 e x p ( A s 2 ′ s 1 ) ∑ s 1 [ d B s 3 s 2 ′ s 1 exp ( A s 2 ′ s 1 ) ] = d B s 3 s 2 ′ s 1 ′ B s 2 ′ s 1 ′ − B s 2 ′ s 1 ′ ∑ s 1 [ d B s 3 s 2 ′ s 1 B s 2 ′ s 1 ] = B s 2 ′ s 1 ′ [ d B s 3 s 2 ′ s 1 ′ − ∑ s 1 [ d B s 3 s 2 ′ s 1 B s 2 ′ s 1 ] ] \begin{aligned}\frac{\partial O_{s_3}}{\partial A_{s'_2 s'_1}}
= dB_{s_3 s'_2 s'_1} \frac{\exp(A_{s'_2 s'_1})}{\sum_{s_1}\exp{(A_{s'_2 s_1})}} - \frac{\exp(A_{s'_2 s'_1})}{[\sum_{s_1} exp(A_{s'_2 s_1})]^2} \sum_{s_1} [dB_{s_3 s'_2 s_1} \exp(A_{s'_2 s_1})] \\
= dB_{s_3 s'_2 s'_1} B_{s'_2 s'_1} - B_{s'_2 s'_1}\frac{1}{\sum_{s_1} exp(A_{s'_2 s_1})} \sum_{s_1} [dB_{s_3 s'_2 s_1} \exp(A_{s'_2 s_1})] \\
= dB_{s_3 s'_2 s'_1} B_{s'_2 s'_1} - B_{s'_2 s'_1} \sum_{s_1} [dB_{s_3 s'_2 s_1} B_{s'_2 s_1}] = B_{s'_2 s'_1} [dB_{s_3 s'_2 s'_1} - \sum_{s_1} [dB_{s_3 s'_2 s_1} B_{s'_2 s_1}]]
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ O s 3 = d B s 3 s 2 ′ s 1 ′ ∑ s 1 exp ( A s 2 ′ s 1 ) exp ( A s 2 ′ s 1 ′ ) − [ ∑ s 1 e x p ( A s 2 ′ s 1 ) ] 2 exp ( A s 2 ′ s 1 ′ ) s 1 ∑ [ d B s 3 s 2 ′ s 1 exp ( A s 2 ′ s 1 )] = d B s 3 s 2 ′ s 1 ′ B s 2 ′ s 1 ′ − B s 2 ′ s 1 ′ ∑ s 1 e x p ( A s 2 ′ s 1 ) 1 s 1 ∑ [ d B s 3 s 2 ′ s 1 exp ( A s 2 ′ s 1 )] = d B s 3 s 2 ′ s 1 ′ B s 2 ′ s 1 ′ − B s 2 ′ s 1 ′ s 1 ∑ [ d B s 3 s 2 ′ s 1 B s 2 ′ s 1 ] = B s 2 ′ s 1 ′ [ d B s 3 s 2 ′ s 1 ′ − s 1 ∑ [ d B s 3 s 2 ′ s 1 B s 2 ′ s 1 ]]
∂ O s 3 ∂ A s 2 ′ s 1 ′ = B s 2 ′ s 1 ′ [ d B s 3 s 2 ′ s 1 ′ − ∑ s 1 d B s 3 s 2 ′ s 1 B s 2 ′ s 1 ] \begin{aligned}
\frac{\partial O_{s_3}}{\partial A_{s'_2 s'_1}} = B_{s'_2 s'_1} \left[dB_{s_3 s'_2 s'_1} - \sum_{s_1} dB_{s_3 s'_2 s_1} B_{s'_2 s_1}\right]
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ O s 3 = B s 2 ′ s 1 ′ [ d B s 3 s 2 ′ s 1 ′ − s 1 ∑ d B s 3 s 2 ′ s 1 B s 2 ′ s 1 ]
Application in Attention: Specialize the Expressions
Setup:
P i j = s o f t m a x ( S i j ) S i j ∈ R M × N P i j ∈ R M × N O ϕ ∈ R d P ϕ i j = ∂ O ϕ ∂ P i j ∈ R ϕ × M × N ⟹ Known \begin{aligned}P_{ij} = softmax(S_{ij}) \\
S_{ij} \in \mathbb{R}^{M \times N} \\
P_{ij} \in \mathbb{R}^{M \times N} \\
O_{\phi} \in \mathbb{R} \\
dP_{\phi ij} = \frac{\partial O_{\phi}}{\partial P_{ij}} \in \mathbb{R}^{\phi \times M \times N} \implies \text{Known}
\end{aligned} P ij = so f t ma x ( S ij ) S ij ∈ R M × N P ij ∈ R M × N O ϕ ∈ R d P ϕ ij = ∂ P ij ∂ O ϕ ∈ R ϕ × M × N ⟹ Known
Differentiation:
∂ O ϕ ∂ S i ′ j ′ = ∑ i j ∂ O ϕ ∂ P i j ∂ P i j ∂ S i ′ j ′ = P i ′ j ′ [ d P ϕ i ′ j ′ − ∑ j d P ϕ i ′ j P i ′ j ] = P i ′ j ′ [ d P i ′ j ′ − ∑ j d P i ′ j P i ′ j ] = P i ′ j ′ [ d P i ′ j ′ − d P i ′ : T ∘ P i ′ : ] = P × [ d P − B M M ( d P i ′ 1 j , P i ′ j 1 ) ] \begin{aligned}\frac{\partial O_{\phi}}{\partial S_{i'j'}} = \sum_{ij} \frac{\partial O_{\phi}}{\partial P_{ij}}\frac{\partial P_{ij}}{\partial S_{i'j'}} = P_{i'j'} \left[dP_{\phi i'j'} - \sum_{j} dP_{\phi i'j} P_{i'j} \right] \\
= P_{i'j'} \left[dP_{i'j'} - \sum_{j} dP_{i'j} P_{i'j} \right] = P_{i'j'} \left[dP_{i'j'} - dP_{i':}^T \circ P_{i':} \right] \\
= P \times \left[dP - BMM(dP_{i'1j, P_{i'j1}}) \right]
\end{aligned} ∂ S i ′ j ′ ∂ O ϕ = ij ∑ ∂ P ij ∂ O ϕ ∂ S i ′ j ′ ∂ P ij = P i ′ j ′ [ d P ϕ i ′ j ′ − j ∑ d P ϕ i ′ j P i ′ j ] = P i ′ j ′ [ d P i ′ j ′ − j ∑ d P i ′ j P i ′ j ] = P i ′ j ′ [ d P i ′ j ′ − d P i ′ : T ∘ P i ′ : ] = P × [ d P − B M M ( d P i ′ 1 j , P i ′ j 1 ) ]
∂ O ϕ ∂ S i ′ j ′ = P i ′ j ′ [ d P i ′ j ′ − d P i ′ : T ∘ P i ′ : ] \begin{aligned}
\frac{\partial O_{\phi}}{\partial S_{i'j'}} = P_{i'j'} \left[dP_{i'j'} - dP_{i':}^T \circ P_{i':} \right]
\end{aligned} ∂ S i ′ j ′ ∂ O ϕ = P i ′ j ′ [ d P i ′ j ′ − d P i ′ : T ∘ P i ′ : ]