¿Cómo se usa el descenso de gradiente para encontrar la solución aproximada de un sistema lineal de ecuaciones [matemáticas] A x = b [/ matemáticas]?

En forma de álgebra matricial Ax = b Supongo que si A es la matriz coeficiente yx es el vector de incógnitas cuando resuelven el resultado en el vector b. Para aclarar esto un poco, tenemos un sistema de ecuaciones que significa que tenemos más de un modelo que mapea un vector desconocido particular xa b.

En los problemas clásicos de Machine Learning, es el inverso, tenemos que identificar el modelo (ecuación) A que mapea la matriz x (valores conocidos) para llevarnos a b

Usando el algoritmo de descenso de gradiente, calculamos el vector de coeficiente x para una matriz de valores conocidos x que da como resultado b, esto se supone que queremos ajustar x en un solo modelo.

es decir, en ML, el algoritmo de descenso de gradiente se usa para formular un modelo particular (enfatizo) que mapea los valores conocidos dados X al vector b

Dado este conocimiento, puede usar la misma lógica sin cambios para calcular incógnitas. El algoritmo de descenso de gradiente ahora trata el vector x como el vector de coeficiente y la matriz real A ahora se trata como una matriz de valores conocidos x, que dan como resultado b.

La función de costo es efectivamente una función del vector x y el algoritmo de descenso de gradiente trabajará para optimizar los valores de x en lugar de los coeficientes.

Para resumir, el algoritmo sigue siendo el mismo, pero la optimización ahora se realiza en el vector x.

Daré una respuesta impulsada por una idea (desarrolle sus propias ecuaciones). Primero convierta la igualdad en una diferencia vectorial, que desea tener cerca de cero.

Luego, para cada entrada en el vector que debería ser cero, elija (¡muchas opciones diferentes posibles aquí!) Una función convexa que es cero solo en cero.

Ahora combine estas funciones, tal vez tomando su suma (pero una combinación convexa también funcionaría. Ahora tiene una función convexa que es cero solo cuando se mantiene la igualdad del vector. Ahora calcule gradientes y haga GD.

O incluso mejor: elija cada vez una sola función, calcule su gradiente y haga SGD para obtener una solución rápida y barata (y aproximada).

Puedes usar el pseudoinverso de Moore-Penrose para encontrar el valor de x.

Puedo dar diferentes enfoques para resolver esta tarea en MATLAB.

Puede aplicar directamente la siguiente ecuación:

[matemáticas] x = A \ b [/ matemáticas]

Donde x son sus parámetros, cuyos valores desea encontrar. A es la entrada del sistema yb es la salida deseada o sin procesar del sistema.

Puede encontrar más información sobre su aplicación en los siguientes enlaces: Resolver sistemas de ecuaciones lineales Ax = B para x y pseudoinverso de matriz de Moore-Penrose


También puede usar Buscar mínimo de función multivariable sin restricciones utilizando el método sin derivadas en MATLAB.

Necesita hacer make 2 funciones primero. Una función que define su conjunto de ecuaciones que desea resolver o su función de transferencia. Segunda función para encontrar el error de suma cuadrática (SSE).

Y luego debe llamarlos utilizando el algoritmo fminsearch y reduce el gradiente y ajusta los valores de los parámetros según el método Nelder-Mead. Puede definir los valores de umbral y la especificación de la manera que desee en el algoritmo fminsearch.