Estoy trabajando en un proyecto de investigación independiente, y necesito el gradiente de una ecuación para el gradiente estocástico. He podido calcular el gradiente $\nabla_W x^TW^TWx$ que resultó ser
$ 2\begin{pmatrix} w_1^\top \cdot x\\ w_2^\top \cdot x\\ \vdots \\ w_n^\top \cdot x \end{pmatrix} x^\top$
donde $x \in \mathbb{R}^n$ y $w_i^\top$ es el $i^{\rm th}$ fila de $W$ , un $n\times n$ matriz. Este es un producto externo y produce un $n\times n$ matriz, según sea necesario. (También me di cuenta de que puedo escribirla como $2Wxx^\top$ .)
Ahora estoy tratando de calcular el siguiente gradiente más desafiante:
$\nabla_W x^TW^TWW^TWx = \nabla_W x^T(W^TW)^2x$
Puedo convertir el gradiente en esa forma matricial a la siguiente forma sumatoria:
$\nabla_W \left[\sum_{i=1}^{n}\sum_{j=1}^{n} x_ix_j \sum_{k=1}^{n} (w_i \cdot w_k) (w_k \cdot w_j) \right]$
donde aquí $w_i \in \mathbb{R}^n$ es un columna de $W$ . Para calcular los gradientes, estoy tratando de hacer $\partial/\partial w_{ij}$ para obtener el patrón de un componente. Sin embargo, incluso para eso, el álgebra se convierte en un completo trabajo. Por ejemplo, con $\partial/\partial w_{ij}$ Estoy recibiendo
$\sum_{i=1}^{n}\sum_{j=1}^n x_ix_j \frac{\partial}{\partial w_{ij}} \left( (w_i\cdot w_j)\|w_j\|_2^2 + \sum_{k=1, k\ne j}^{n} (w_i\cdot w_k)(w_k \cdot w_j) \right)$
¿Conoces una forma mejor de calcular los gradientes que pueda aprovechar el patrón del primer gradiente aquí, o quizás otro concepto del álgebra de gradientes? ¿O es hacer fuerza bruta el camino a seguir? (He repasado el álgebra, pero me resulta difícil ver cómo condensarlo bien). Tal vez sea $2(W^\top W)Wxx^\top$ ? Gracias por la ayuda que puedan prestarme.