Me gustaría maximizar una función con un parámetro.¿Cómo ejecutar el algoritmo de descenso de gradiente cuando el espacio de parámetro está restringido?
Así que ejecuto el descenso del gradiente (o, en realidad, el ascenso): comienzo con un parámetro inicial y sigo agregando el gradiente (multiplicado por el factor de velocidad de aprendizaje que se vuelve cada vez más pequeño), reevalúa el gradiente dado el nuevo parámetro, y así sucesivamente hasta la convergencia.
Pero hay un problema: Mi parámetro debe permanecer positivo, por lo que no debe convertirse en < = 0 porque mi función no estará definida. Sin embargo, a veces mi búsqueda de degradado entra en dichas regiones (cuando era positiva, el gradiente indicaba que bajaba un poco y se rebasaba).
Y para empeorar las cosas, el gradiente en ese punto podría ser negativo, llevando la búsqueda hacia valores de parámetros aún más negativos. (La razón es que la función objetivo contiene registros, pero el gradiente no).
¿Cuáles son algunos algoritmos buenos (simples) que se ocupan de este problema de optimización restringida? Estoy esperando una solución simple a mi algoritmo. O tal vez ignorar el gradiente y hacer algún tipo de búsqueda de línea para el parámetro óptimo?
+1 para el método de penalización de registro –