Telegram: @ninachely
$y = XW^T + b$
$X \in \mathbb{R}^{B \times N}$ — входной мини-батч объектов
$y \in \mathbb{R}^{B \times M}$
$W \in \mathbb{R}^{M \times N}$
$b \in \mathbb{R}^M$ — вектор сдвигов
$\frac{d\ell}{dy} \in \mathbb{R}^{B \times M}$ — входной градиент из следующего слоя
К каждой из $B$ строчек матрицы добавляем вектор $b$
$$ ⁍ $$
$$ \frac{d\ell}{db_j} = \sum\limits_{i=1}^{B} \frac{d\ell}{dy_{ij}} \cdot \underbrace{\frac{dy_{ij}}{db_j}}{=1} = \sum\limits{i=1}^{B} \left( \frac{d\ell}{dy} \right)_ij $$
Градиент по $b$:
$$ \frac{d\ell}{db} = \left( \frac{d\ell}{dy}\right).\text{sum}(0) $$
$$ \frac{d\ell}{dW_{jk}} = \sum\limits_{i=1}^{B} \frac{d\ell}{dy_{ij}} \cdot \underbrace{\frac{dy_{ij}}{dw_{jk}}}{=X{ik}} = \sum\limits_{i=1}^{B} \left(\frac{d\ell}{dy}\right){ij} \cdot X{ik} $$
$$ \frac{d\ell}{dW} = \left( \frac{d\ell}{dy}\right)^t \cdot X $$
$$ \left(\left(\frac{d\ell}{dy}\right).\text{reshape}(B, M, 1) * X.\text{reshape}(B, 1, N)\right).\text{sum}(0) $$
$$ \frac{d\ell}{dX_{ik}} = \sum\limits_{j=1}^{M} \frac{d\ell}{dy_{ij}} \cdot \underbrace{\frac{dy_{ij}}{dx_{ik}}}{W{jk}} = \sum\limits_{i=1}^{B} \left(\frac{d\ell}{dy}\right){ij} \cdot W{jk} $$
$$ \frac{d\ell}{dX} = \left( \frac{d\ell}{dy}\right) \cdot W $$