I gradienti sono probabilmente il concetto fondamentale più importante nel machine learning. In questo post esploreremo il concetto di gradienti, cosa li fa svanire ed esplodere e come tenerli a freno.
A chi è utile? Inizio a Data scientist intermedi. Includerò alcuni riferimenti matematici che potrebbero essere utili per i lettori più avanzati.
Cosa otterrai da questo post? Una comprensione concettuale approfondita dei gradienti, della loro relazione con l’apprendimento automatico, dei problemi che derivano dai gradienti e degli approcci utilizzati per mitigare tali problemi.
Fare clic sui collegamenti per accedere a sezioni specifiche
1) Cos’è un gradiente?
2) Gradienti effettivi (matematicamente)
3) Gradienti in un modello semplice (un esempio)
4) Cosa sono i gradienti che esplodono e svaniscono?
5) Perché i gradienti che esplodono e svaniscono sono dannosi?
6) Come risolviamo i gradienti che esplodono e svaniscono?
Immagina di avere una superficie con colline e valli. Questa superficie è definita da una funzione multidimensionale (una funzione con più input).
"""
Making a 3d surface with hills and vallys, for demonstrative purposes
"""import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import numpy as np
#creating wide figure
fig, ax = plt.subplots(subplot_kw={"projection": "3d"})
# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = 0.2*np.sin(X+Y + R) - 1*np.sin(X/2)
# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.viridis,
linewidth=0, antialiased=False)
plt.show()
Un gradiente ti dice: per ogni punto della superficie, sia la direzione per raggiungere un punto più alto della superficie, sia la pendenza della superficie in quel punto.
Fonte: towardsdatascience.com