Pergunta sobre o derivado de vetor-matirix na propagação reversa
Digamos que eu tenha uma matriz como a abaixo:
$$ W = \begin{bmatrix} w_{1,1} & w_{1,2} \\ w_{2,1} & w_{2,2} \end{bmatrix} $$ $$ \vec{x} = \begin{bmatrix} x_1 \\ x_2 \end{bmatrix} $$ $$ \vec{y} = W\vec{x} = \begin{bmatrix} w_{1,1}x_1 + w_{1,2}x_2 \\ w_{2,1}x_1 + w_{2,2}x_2 \end{bmatrix} $$
Na retropropagação, é necessário calcular o $\partial {\vec{y}} \over \partial {W}$ atualizar $W$.
Mas, segundo a Wiki , não há consenso sobre a definição de uma derivada de um vetor por uma matriz.
Então, como posso obter o valor de $\partial {\vec{y}} \over \partial {W}$?
Respostas
Seja qual for a sua noção de $\frac{\partial y}{\partial W}$, parte dos dados transportados por este objeto é o conjunto de todas as derivadas parciais $\frac{\partial y}{\partial W_{ij}}$, e esses derivados devem formar todas as "entradas" de $\frac{\partial y}{\partial W}$. Nesta página wiki , o (s) autor (es) usam apenas essas derivadas parciais e não fazem qualquer referência a uma derivada "total"$\frac{\partial y}{\partial W}$.
Deixei $e_1,e_2$ denotam a base canônica de $\Bbb R^2$, ou seja, as colunas do $2 \times 2$matriz de identidade. Podemos ver que essas derivadas parciais são dadas por$$ \frac{\partial y}{\partial W_{ij}} = x_j e_i. $$ Para colocar as coisas em termos de entradas escalares, diríamos que $ \frac{\partial y_k}{\partial W_{ij}} = \delta_{ik} x_j, $ Onde $y_k$ denota o $k$ª entrada de $y$ e $\delta_{ik}$ denota um "delta de Kronecker".
Agora, em termos da derivada total / Frechet , podemos dizer o seguinte.$y(W)$ define uma função de $\Bbb R^{2 \times 2}$ para $\Bbb R^2$, então para qualquer $W \in \Bbb R^{2 \times 2}$, $D_Wy(X) = Dy(X)$ define um mapa linear de $\Bbb R^{2 \times 2}$ para $\Bbb R^2$; especificamente, para qualquer$H \in \Bbb R^{2 \times 2}$, temos $$ Dy(X)(H) = y(H) = Hx. $$ Embora não seja uma matriz de entradas, esta função $Dy$ é o operador que o array / tensor $\frac{\partial y}{\partial W}$representaria. Podemos recuperar as derivadas parciais avaliando as "derivadas direcionais"$d_Wy(X)(E_{ij})$, Onde $E_{ij} = e_ie_j^T$ é a matriz com um $1$ no $i,j$entrada e zeros em outro lugar. Na verdade, nós temos$$ Dy(X)(E_{ij}) = E_{ij} x = e_i (e_j^Tx) = x_j e_i. $$ A regra da cadeia nos diz o seguinte: para qualquer função $g:\mathcal Z \to \Bbb R^{2 \times 2}$, podemos calcular a derivada total de $y \circ g$do seguinte modo. Para qualquer$z \in \mathcal Z$, a derivada (um mapa linear de $\mathcal Z$ para $\Bbb R^{2}$) É dado por $$ D(y \circ g)(z) = Dy(g(z)) \circ Dg(z), $$ Onde $Dy(g(z))$ é um mapa linear de $\Bbb R^{2 \times 2} \to \Bbb R^2$ e $Dg(z)$ é um mapa linear de $\mathcal Z$ para $\Bbb R^{2 \times 2}$. Mais concretamente, se$h \in \mathcal Z$, então a derivada direcional "junto" $h$ deve ser dado por $$ D(y \circ g)(z)(h) = [Dy(g(z)) \circ Dg(z)](h) = [Dg(z)(h)] x. $$ Da mesma forma, para qualquer função $p: \Bbb R^2 \to \mathcal Z$, podemos calcular a derivada total de $p \circ y$do seguinte modo. Para qualquer$X \in \Bbb R^{2 \times 2}$, a derivada (um mapa linear de $\Bbb R^{2 \times 2}$ para $\mathcal Z$) É dado por $$ D(p \circ y)(X) = Dh(y(X)) \circ Dy(X), $$ Onde $Dh(y(X))$ é um mapa linear de $\Bbb R^2$ para $\mathcal Z$ e $Dy(X)$ é um mapa linear de $\Bbb R^{2 \times 2}$ para $\Bbb R^2$. Mais concretamente, se$H \in \Bbb R^{2 \times 2}$, então a derivada direcional "junto" $H$ deve ser dado por $$ D(p \circ y)(X)(H) = [Dp(y(X)) \circ Dy(X)](H) = Dp(y(X))(Hx). $$