27 votos

Derivada de un vector con respecto a una matriz

Sea $W$ una matriz de $n\times m$ y $\textbf{x}$ un vector de $m\times1$. ¿Cómo calculamos lo siguiente entonces?

$$\frac{dW\textbf{x}}{dW}$$

Gracias de antemano.

31voto

Keith Puntos 31

La cantidad en cuestión es un tensor de $3^{er}$ orden.

Un enfoque es utilizar la notación de índices $$\eqalign{ f_i &= W_{ij} x_j \cr\cr \frac{\partial f_i}{\partial W_{mn}} &= \frac{\partial W_{ij}}{\partial W_{mn}} \,x_j \cr &= \delta_{im}\delta_{jn} \,x_j \cr &= \delta_{im}\,x_n \cr }$$ Otro enfoque es la vectorización $$\eqalign{ f &= W\,x \cr &= I\,W\,x \cr &= (x^T\otimes I)\,{\rm vec}(W) \cr &= (x^T\otimes I)\,w \cr\cr \frac{\partial f}{\partial w} &= (x^T\otimes I) \cr }$$

8voto

user1858991 Puntos 11

Si bien es cierto que la respuesta correcta es un tensor de tercer grado, en el contexto de (Feed-Forward)NN, al tomar este gradiente como parte de la regla de la cadena donde tienes una salida final que es una pérdida escalar, los cálculos pueden simplificarse enormemente y representarse como un producto externo, donde $\frac{d\textbf{x}W}{dW} = \textbf{x}^T \cdot \_\_$

Específicamente, si $L$ es la pérdida, y $z=\textbf{x}W+b$ (o $\textbf{a}W+b$ para cualquier "entrada"/activación aguas abajo), donde $\textbf{x}$ (o $\textbf{a}$) son vectores fila, entonces:

$$\frac{\partial L}{\partial W} = \frac{\partial L}{\partial z} \frac{\partial z}{\partial W} =\frac{\partial L}{\partial z} \frac{\partial (\textbf{x}W+b)}{\partial W} = \textbf{x}^T\cdot\frac{\partial L}{\partial z} $$

Estoy en el proceso de hacer un video de YouTube con más explicaciones. Actualizaré esto tan pronto como se publique.

EDITAR: aquí está el video, la parte relacionada comienza en el minuto 09:00

-14voto

secmask Puntos 2529

Para caso independiente:

Si $\mathbf{x}$ es independiente de $W$, este problema se puede calcular de la siguiente manera.

$$\cfrac{\partial W\mathbf{x}}{\partial W}= \cfrac{\partial}{\partial W} \begin{bmatrix} w_{11} & w_{12} & \cdots & w_{1m} \\ w_{21} & w_{22} & \cdots & w_{2m} \\ \vdots & \vdots & \ddots & \vdots \\ w_{n1} & w_{n2} & \cdots & w_{nm} \end{bmatrix} \mathbf{x} $$

$$ = \begin{bmatrix} \cfrac{\partial w_{11}}{\partial w_{11}} & \cfrac{\partial w_{12}}{\partial w_{12}} & \cdots & \cfrac{\partial w_{1m}}{\partial w_{1m}} \\ \cfrac{\partial w_{21}}{\partial w_{21}} & \cfrac{\partial w_{22}}{\partial w_{22}} & \cdots & \cfrac{\partial w_{2m}}{\partial w_{2m}} \\ \vdots & \vdots & \ddots & \vdots \\ \cfrac{\partial w_{n1}}{\partial w_{n1}} & \cfrac{\partial w_{n2}}{\partial w_{n2}} & \cdots & \cfrac{\partial w_{nm}}{\partial w_{nm}} \end{bmatrix} \mathbf{x} $$

Por lo tanto, todos los elementos son $1$. Finalmente, el resultado es el siguiente.

$$ \cfrac{\partial W\mathbf{x}}{\partial W}= (\mathbf{x}^{\text{T}}\mathbf{1_{m}}) \mathbf{1_{n}} $$

Luego, $\mathbf{1_{k}} \in \mathbf{R}^{k}$ es

$$\mathbf{1_{k}}=[1 \ 1 \ \cdots 1]^{\text{T}}$$

Para caso dependiente:

Si $\mathbf{x}$ es dependiente de $W$, es más difícil que en el caso independiente. De igual manera,

$$ \cfrac{\partial W\mathbf{x}}{\partial W}= (\mathbf{x}^{\text{T}}\mathbf{1_{m}}) \mathbf{1_{n}} + W \cfrac{\partial F(W) }{ \partial W}\mathbf{x}_{0} $$

Entonces, $\mathbf{x}$ puede ser reemplazado de la siguiente manera

$$\mathbf{x}=F(W)\mathbf{x}_{0}$$

donde, $F(W) \in \mathbf{R}^{m \times n}$ es una función de matriz, cuyos parámetros son $W$, y $\mathbf{x}_{0} \in \mathbf{R}^{m}$ es independiente de $W$.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X