Telegram: @ninachely


Пример 1

$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 $$