J'ai une fonction de perte que je voudrais essayer de minimiser:Puis-je implémenter une descente de gradient pour une fonction de perte convexe arbitraire?
def lossfunction(X,b,lambs):
B = b.reshape(X.shape)
penalty = np.linalg.norm(B, axis = 1)**(0.5)
return np.linalg.norm(np.dot(X,B)-X) + lambs*penalty.sum()
descente de gradient, ou des méthodes similaires, pourraient être utiles. Je ne peux pas calculer analytiquement le gradient de cette fonction, aussi je me demande comment je peux calculer numériquement le gradient de cette fonction de perte pour implémenter une méthode de descente.
Numpy a une fonction gradient
, mais elle nécessite de passer un champ scalaire à des points pré-déterminés.