Vai al contenuto principale

Matrice hessiana: una guida alle derivate di secondo ordine nell’ottimizzazione e oltre

Comprendi il ruolo della matrice hessiana nel calcolo multivariabile e nell’ottimizzazione. Scopri come viene usata per analizzare la curvatura, individuare i punti critici e guidare gli algoritmi nel machine learning.
Aggiornato 29 set 2026  · 8 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Quando parliamo di ottimizzazione, addestramento dei modelli o comprensione della curvatura di una superficie di perdita, di solito pensiamo alle funzioni di costo e ai gradienti. Mentre la funzione di costo spiega quanto bene si comporta il modello, il gradiente, che è la sua derivata prima, indica la direzione di variazione più ripida per ridurre la perdita. Tuttavia, i gradienti ci dicono solo la pendenza e non come cambia essa stessa.

Ed è qui che entra in gioco la spesso trascurata matrice hessiana. È una matrice quadrata di derivate parziali seconde di una funzione scalare che cattura come evolve il gradiente, rivelando la curvatura della superficie di perdita. In data science, diventa importante in compiti che coinvolgono algoritmi di ottimizzazione avanzati, diagnostica dei modelli, nonché per valutare la stabilità e la convergenza dei modelli di machine learning.

La matrice hessiana generalizza il concetto di derivata seconda dalle funzioni a variabile singola ai contesti multivariati. Codifica informazioni sulla curvatura locale di una funzione per quantificare come la funzione si piega o curva vicino a un punto dato. Aiuta ad analizzare i punti critici, come minimi, massimi e punti di sella, e guida tecniche di ottimizzazione numerica avanzate.

L’obiettivo di questo articolo è comprendere la matrice hessiana, che aiuta a capire come si comportano gli algoritmi di ottimizzazione e quanto velocemente convergono. È particolarmente utile quando si lavora con modelli complessi che coinvolgono molte variabili. Per chi ha familiarità con i vettori gradiente e le matrici jacobiane, l’Hessiana è il passo successivo. Ti dice come si comportano le funzioni in spazi ad alta dimensionalità.

Che cos’è la matrice hessiana?

Osserva questa equazione s come funzione scalare due volte derivabile:

Significa che questa funzione è due volte derivabile e restituisce un unico numero. La matrice hessiana di f, indicata con Hf(x), è una matrice quadrata n x n che contiene tutte le derivate parziali seconde di f.

Formalmente, ogni elemento della matrice hessiana è definito come:

Questo significa che l’Hessiana ci dice come cambia il gradiente (derivata prima) di una funzione rispetto a ciascuna variabile di input.

Se tutte le derivate parziali seconde di f sono continue in un intorno di un punto, il teorema di Clairaut (chiamato anche teorema di Schwarz) ci dice che le derivate parziali miste sono uguali, cioè l’ordine di derivazione non importa:

Questa proprietà di simmetria implica che, in tali casi, la matrice hessiana è simmetrica.

È importante notare che la matrice hessiana è definita solo per funzioni scalari, ossia, funzioni che restituiscono un unico numero. Quando si trattano funzioni a valori vettoriali, come segue:

allora il concetto di derivata seconda si estende a un tensore di terzo ordine anziché a una matrice. Questo tensore cattura come ogni componente di output di F cambia rispetto a ciascuna coppia di input.

Sia Rn -> R una funzione scalare due volte derivabile. La matrice hessiana di f è la matrice n x n definita come:

Ogni elemento Hij è la derivata parziale seconda:

Esempio di matrice hessiana

Considera la funzione:

Derivate parziali di primo ordine:

 

Derivate parziali di secondo ordine:

Matrice hessiana

Valutata in (x,y) = (1,1)

Discriminante

Un discriminante negativo implica che il punto critico è un punto di sella. Dai un’occhiata alla tecnica del punto di sella nel nostro corso, Introduction to Optimization in Python, per imparare le applicazioni pratiche dell’Hessiana.

Ecco lo stesso esempio implementato in Python:

import sympy as sp

x, y = sp.symbols('x y')
f = x**3 - 2*x*y - y**6

# Compute gradient
grad_f = [sp.diff(f, var) for var in (x, y)]

# Compute Hessian
hessian_f = sp.hessian(f, (x, y))

# Evaluate at point (1,1)
eval_hessian = hessian_f.subs({x: 1, y: 1})
determinant = eval_hessian.det()

print("Gradient:")
sp.pprint(grad_f)
print("")
print("Hessian matrix:")
sp.pprint(hessian_f)
print("")
print("Hessian at (1,1):")
sp.pprint(eval_hessian)
print("")
print("Discriminant:", determinant)

Questo codice usa la differenziazione simbolica per calcolare la matrice hessiana e valutarla in un punto specifico. Strumenti come SymPy fungono da pratico "calcolatore della matrice hessiana" sia per scopi didattici sia per la ricerca applicata.

Discriminante e test della derivata seconda

Il test della derivata seconda in più dimensioni classifica i punti critici usando la matrice hessiana:

Sia X0 un punto critico per cui questo è vero.

Sia l’Hessiana

L’interpretazione dipende dalla definitezza dell’Hessiana:

  • Definita positiva (tutti gli autovalori > 0): X0 è un minimo locale.
  • Definita negativa (tutti gli autovalori < 0): X0 è un massimo locale.
  • Indefinita (autovalori di segno misto): X0 è un punto di sella.
  • Singolare (determinante zero): Il test è inconcludente.

Capciamolo con esempi di questi quattro casi:

import numpy as np
import matplotlib.pyplot as plt
from sympy import symbols, diff, hessian, lambdify

# Define symbols
x, y = symbols('x y')

# List of 4 functions for different discriminant cases
functions = [
    ("x**2 + y**2", "Positive definite (local minimum)"),
    ("-x**2 - y**2", "Negative definite (local maximum)"),
    ("x**2 - y**2", "Indefinite (saddle point)"),
    ("x**4 + y**4", "Zero determinant (inconclusive)")
]

# Prepare plots
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
axes = axes.ravel()

for i, (func_str, title) in enumerate(functions):
    f = eval(func_str)
    
    # Compute gradients and Hessian
    fx = diff(f, x)
    fy = diff(f, y)
    H = hessian(f, (x, y))
    
    # Evaluate Hessian at (0,0) (critical point for all these functions)
    H0 = H.subs({x: 0, y: 0})
    det_H0 = H0.det()
    fxx0 = H0[0, 0]
    
    # Classification
    if det_H0 > 0 and fxx0 > 0:
        classification = "Local Minimum"
    elif det_H0 > 0 and fxx0 < 0:
        classification = "Local Maximum"
    elif det_H0 < 0:
        classification = "Saddle Point"
    else:
        classification = "Inconclusive"

    # Prepare function for plotting
    f_lamb = lambdify((x, y), f, 'numpy')
    X, Y = np.meshgrid(np.linspace(-2, 2, 100), np.linspace(-2, 2, 100))
    Z = f_lamb(X, Y)

    # Plot
    ax = axes[i]
    cp = ax.contourf(X, Y, Z, levels=50, cmap='coolwarm')
    ax.set_title(f"{title}\n{func_str}\nDet(H)={det_H0}, fxx={fxx0} → {classification}")
    ax.plot(0, 0, 'ko')  # critical point
    fig.colorbar(cp, ax=ax)

plt.tight_layout()
plt.show()

Hessian matrix in Python

Nel grafico a contorni sopra, l’altezza aumenta dal “Blu” (più basso) al “Rosso” (più alto).

Questo test è un’estensione del test della derivata seconda per le funzioni a variabile singola ed è trattato insieme a temi come le serie di Taylor e l’ottimizzazione convessa.

La matrice hessiana nell’ottimizzazione

La matrice hessiana emerge naturalmente nello sviluppo di Taylor al secondo ordine di una funzione scalare:

Questa approssimazione quadratica consente ai metodi di tipo Newton di trovare efficacemente i punti critici. Il metodo di Newton aggiorna le variabili secondo:

In contesti ad alta dimensionalità, calcolare e memorizzare l’Hessiana completa può essere costoso in termini computazionali. Per questo motivo, metodi quasi-Newton come BFGS e L-BFGS approssimano iterativamente l’Hessiana usando differenze di gradienti.

Inoltre, il prodotto Hessiana-vettore Hv può essere approssimato senza calcolare l’intera matrice usando differenze finite:

Questa approssimazione è particolarmente utile nei framework di deep learning che sfruttano la differenziazione automatica.

Applicazioni nel machine learning e nella data science

Nel machine learning, la matrice hessiana fornisce informazioni sulla curvatura del paesaggio di perdita:

  • Nelle reti neurali, analizzare l’Hessiana può rivelare la presenza di punti di sella e regioni piatte.
  • Nei problemi di ottimizzazione convessa, l’Hessiana aiuta a verificare la convessità e a guidare i risolutori di secondo ordine.
  • Nel fine-tuning dei modelli, la conoscenza dell’Hessiana aiuta ad adattare i tassi di apprendimento in base alla curvatura locale.

Oltre all’ottimizzazione, l’Hessiana è usata in:

  • Diagnostica statistica (ad es., matrice di informazione di Fisher nella massima verosimiglianza).
  • Computer vision, come il rilevatore DoH (Determinant of Hessian) per l’individuazione di feature.
  • Dinamica molecolare, in particolare nell’analisi dei modi normali per gli spettri vibrazionali.

Comprendere l’Hessiana permette ai professionisti di andare oltre il gradient descent e applicare algoritmi più sofisticati come BFGS, usati in corsi come Machine Learning Fundamentals in Python. Queste tecniche si basano su argomenti di analisi avanzata come le serie di Taylor e l’algebra delle matrici.

Conclusione

La matrice hessiana racchiude informazioni di secondo ordine sulle funzioni scalari e fornisce un quadro ricco per analizzare la curvatura, identificare i punti critici e risolvere problemi di ottimizzazione. Mentre i gradienti guidano la direzione, l’Hessiana affina la comprensione di forma e “acutezza”, soprattutto nei problemi ad alta dimensionalità comuni nel machine learning.

Per chi ha già dimestichezza con Jacobiani e gradienti, padroneggiare l’Hessiana offre una visione più completa del comportamento degli algoritmi e della struttura dei problemi.


Vidhi Chugh's photo
Author
Vidhi Chugh
LinkedIn

Sono una stratega ed eticista dell’AI che lavora all’intersezione tra data science, prodotto e ingegneria per creare sistemi di machine learning scalabili. Inserita tra i "Top 200 Business and Technology Innovators" al mondo, ho la missione di democratizzare il machine learning e di eliminare il gergo tecnico affinché tutti possano partecipare a questa trasformazione.

FAQ

Che cos’è la matrice hessiana e perché è importante nell’ottimizzazione?

La matrice hessiana è una matrice quadrata di derivate parziali seconde di una funzione scalare. Cattura la curvatura della funzione, aiutando a determinare la natura dei punti critici e a guidare gli algoritmi di ottimizzazione per una migliore convergenza.

In cosa l’Hessiana differisce da gradiente e Jacobiana?

Mentre il gradiente fornisce le derivate prime (direzione di massima salita), e la Jacobiana estende questo concetto alle funzioni a valori vettoriali, l’Hessiana va oltre descrivendo come cambia il gradiente stesso, offrendo una visione della curvatura della funzione in più dimensioni.

Quando la matrice hessiana è simmetrica?

La matrice hessiana è simmetrica quando tutte le derivate parziali seconde sono continue attorno a un punto, secondo il teorema di Clairaut (o di Schwarz). Questa simmetria aiuta a semplificare sia l’analisi teorica sia il calcolo.

Come si usa l’Hessiana per classificare i punti critici?

Usando il test della derivata seconda:

  • Hessiana definita positiva → minimo locale
  • Hessiana definita negativa → massimo locale
  • Hessiana indefinita → punto di sella
  • Determinante zero → test inconcludente

L’Hessiana può essere calcolata e visualizzata con Python?

Sì, librerie di matematica simbolica come SymPy permettono di calcolare e valutare la matrice hessiana in punti specifici. Questi strumenti sono utili sia per l’apprendimento sia per compiti pratici di ottimizzazione in data science e machine learning.

Argomenti
Data Science

Impara con DataCamp

{count, plural, one {Corso} other {Corsi}}

Algebra lineare per la Data Science in R

{hours} ore
21.8K
Questo corso è un'introduzione all'algebra lineare, uno dei temi matematici più importanti alla base della scienza dei dati.
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

{count, plural, one {blog} other {blogs}}

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

{count, plural, one {blog} other {blogs}}

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

{count, plural, one {blog} other {blogs}}

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

Mostra AltroMostra Altro