Writing / KERNELIZED AI · Compute · Autograd · MATH
Max Kernel: Forward and Backward Pass (MATH) The forward and backward mathematics of a max-reduction kernel using indexed tensor notation.
Shivam Pandey 30 March 2025 2 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 = m a x s 1 ( A s 2 s 1 ) B_{s_2} = max_{s_1}(A_{s_2 s_1}) B s 2 = ma x s 1 ( A s 2 s 1 ) is a max operation over s1 index set of A , and the resulting index set is the index set of A A A reduced over s 1 s_1 s 1 s.t. B ∈ R s 2 B \in \mathbb{R}^{s_2} B ∈ R s 2
Max (Reduction) operation
B s 2 = max s 1 ( A s 2 s 1 ) = A s 2 s 1 m ∣ s 1 m = a r g m a x s 1 ( A s 2 s 1 ) \begin{aligned}B_{s_2} = \max_{s_1}(A_{s_2 s_1}) = A_{s_2 s^m_1} \big|_{s^m_1 = argmax_{s_1}(A_{s_2 s_1})}
\end{aligned} B s 2 = s 1 max ( A s 2 s 1 ) = A s 2 s 1 m s 1 m = a r g ma x s 1 ( A s 2 s 1 )
Backward Pass:
Here we will deduce the pullback of A A A under the max \max max operation, w.r.t. B B B .
∂ B s 2 ∂ A s 2 ′ s 1 ′ = ∂ A s 2 s 1 m ∂ A s 2 ′ s 1 ′ = 1 s 2 = s 2 ′ ⋅ 1 s 1 m = s 1 ′ \begin{aligned}\frac{\partial B_{s_2}}{\partial A_{s'_2 s'_1}} = \frac{\partial A_{s_2 s^m_1}}{\partial A_{s'_2 s'_1}} = \mathbb{1}_{s_2 = s'_2} \cdot \mathbb{1}_{s^m_1 = s'_1}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ B s 2 = ∂ A s 2 ′ s 1 ′ ∂ A s 2 s 1 m = 1 s 2 = s 2 ′ ⋅ 1 s 1 m = s 1 ′
Full reduction: With Loss Drivative
Let’s assume the output B s 2 B_{s_2} B s 2 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 = ∂ O s 3 ∂ B s 2 dB_{s_3 s_2} = \frac{\partial O_{s_3}}{\partial B_{s_2}} d B s 3 s 2 = ∂ B s 2 ∂ 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 ∂ O s 3 ∂ B s 2 ∂ B s 2 ∂ A s 2 ′ s 1 ′ = ∑ s 2 d B s 3 s 2 1 s 2 = s 2 ′ ⋅ 1 s 1 m = s 1 ′ = d B s 3 s 2 ′ 1 s 1 m = s 1 ′ ∣ s 1 m = a r g m a x s 1 ( A s 2 ′ s 1 ) \begin{aligned}\frac{\partial O_{s_3}}{\partial A_{s'_2 s'_1}} = \sum_{s_2} \frac{\partial O_{s_3}}{\partial B_{s_2}} \frac{\partial B_{s_2}}{\partial A_{s'_2 s'_1}} = \sum_{s_2} dB_{s_3 s_2} \mathbb{1}_{s_2 = s'_2} \cdot \mathbb{1}_{s^m_1 = s'_1} = dB_{s_3 s'_2} \mathbb{1}_{s^m_1 = s'_1} \big|_{s^m_1 = argmax_{s_1}(A_{s'_2 s_1})}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ O s 3 = s 2 ∑ ∂ B s 2 ∂ O s 3 ∂ A s 2 ′ s 1 ′ ∂ B s 2 = s 2 ∑ d B s 3 s 2 1 s 2 = s 2 ′ ⋅ 1 s 1 m = s 1 ′ = d B s 3 s 2 ′ 1 s 1 m = s 1 ′ s 1 m = a r g ma x s 1 ( A s 2 ′ s 1 )
∂ O s 3 ∂ A s 2 ′ s 1 ′ = d B s 3 s 2 ′ 1 s 1 m = s 1 ′ ∣ s 1 m = a r g m a x s 1 ( A s 2 ′ s 1 ) \begin{aligned}
\frac{\partial O_{s_3}}{\partial A_{s'_2 s'_1}} = dB_{s_3 s'_2} \mathbb{1}_{s^m_1 = s'_1} \big|_{s^m_1 = argmax_{s_1}(A_{s'_2 s_1})}
\end{aligned} ∂ A s 2 ′ s 1 ′ ∂ O s 3 = d B s 3 s 2 ′ 1 s 1 m = s 1 ′ s 1 m = a r g ma x s 1 ( A s 2 ′ s 1 )
Application in Attention: Specialize the Expressions
Setup:
S i j = S i j p − max j ( S i j p ) 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 d S ϕ i j = ∂ O ϕ ∂ S i j ∈ R ϕ × M × N = P i j [ d P i j − d P i : T ∘ P i : ] \begin{aligned}S_{ij} = S^p_{ij} - \max_j(S^p_{ij}) \\
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} \\
dS_{\phi ij} = \frac{\partial O_{\phi}}{\partial S_{ij}} \in \mathbb{R}^{\phi \times M \times N} = P_{ij} \left[dP_{ij} - dP_{i:}^T \circ P_{i:} \right]
\end{aligned} S ij = S ij p − j max ( S ij p ) 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 d S ϕ ij = ∂ S ij ∂ O ϕ ∈ R ϕ × M × N = P ij [ d P ij − d P i : T ∘ P i : ]
Differentiation
∂ O ϕ ∂ S i ′ j ′ p = ∑ i j ∂ O ϕ ∂ S i j ∂ S i j ∂ S i ′ j ′ p = ∑ i j d S ϕ i j ( 1 i j = i ′ j ′ − 1 i = i ′ 1 j m = j ′ ∣ a r g m a x j ( S i ′ j p ) ) = d S i ′ j ′ − ∑ j d S i ′ j 1 j m = j ′ ∣ j m = a r g m a x j ( S i ′ j p ) = d S i ′ j ′ − 1 j m = j ′ ∣ j m = a r g m a x j ( S i ′ j p ) ∑ j d S i ′ j \begin{aligned}\frac{\partial O_{\phi}}{\partial S^p_{i'j'}} = \sum_{ij} \frac{\partial O_{\phi}}{\partial S_{ij}} \frac{\partial S_{ij}}{\partial S^p_{i'j'}} = \sum_{ij} dS_{\phi ij} (\mathbb{1}_{ij = i'j'} - \mathbb{1}_{i = i'} \mathbb{1}_{j^m = j'} \big|_{argmax_{j}(S^p_{i'j})}) \\
= dS_{i'j'} - \sum_{j} dS_{i'j} \mathbb{1}_{j^m = j'} \big|_{j^m={argmax_{j}(S^p_{i'j})}} = dS_{i'j'} - \mathbb{1}_{j^m = j'} \big|_{j^m={argmax_{j}(S^p_{i'j})}} \sum_{j} dS_{i'j}
\end{aligned} ∂ S i ′ j ′ p ∂ O ϕ = ij ∑ ∂ S ij ∂ O ϕ ∂ S i ′ j ′ p ∂ S ij = ij ∑ d S ϕ ij ( 1 ij = i ′ j ′ − 1 i = i ′ 1 j m = j ′ a r g ma x j ( S i ′ j p ) ) = d S i ′ j ′ − j ∑ d S i ′ j 1 j m = j ′ j m = a r g ma x j ( S i ′ j p ) = d S i ′ j ′ − 1 j m = j ′ j m = a r g ma x j ( S i ′ j p ) j ∑ d S i ′ j
Replacing d S i j dS_{ij} d S ij :
∂ O ϕ ∂ S i ′ j ′ p = d S i ′ j ′ − 1 j m = j ′ ∣ j m = a r g m a x j ( S i ′ j p ) ∑ j d S i ′ j \begin{aligned}\frac{\partial O_{\phi}}{\partial S^p_{i'j'}} = dS_{i'j'} - \mathbb{1}_{j^m = j'} \big|_{j^m={argmax_{j}(S^p_{i'j})}} \sum_{j} dS_{i'j} \\
\end{aligned} ∂ S i ′ j ′ p ∂ O ϕ = d S i ′ j ′ − 1 j m = j ′ j m = a r g ma x j ( S i ′ j p ) j ∑ d S i ′ j