Mi piacerebbe massimizzare una funzione con un parametro.Come eseguire l'algoritmo di discesa del gradiente quando lo spazio dei parametri è limitato?
Allora corro discesa del gradiente (o, salita in realtà): Parto da un parametro iniziale e continuare ad aggiungere il gradiente (volte qualche fattore tasso di apprendimento che diventa sempre più piccola), rivalutare il gradiente dato il nuovo parametro, e così via fino alla convergenza.
Ma c'è un problema: il mio parametro deve rimanere positivo, quindi non dovrebbe diventare < = 0 perché la mia funzione non sarà definita. La mia ricerca con gradiente a volte andrà in tali regioni (quando è stato positivo, il gradiente ha detto di andare un po 'più in basso e ha superato).
E per peggiorare le cose, il gradiente in tale punto potrebbe essere negativo, spingendo la ricerca verso valori di parametri ancora più negativi. (La ragione è che la funzione obiettivo contiene log, ma il gradiente no.)
Quali sono alcuni algoritmi buoni (semplici) che gestiscono questo problema di ottimizzazione vincolata? Spero solo una semplice correzione al mio algoritmo. O forse ignori il gradiente e fai qualche tipo di ricerca di linee per il parametro ottimale?
+1 per il metodo di penalità registro –