Cursus
Als we het hebben over optimalisatie, modeltraining of het begrijpen van de kromming van een loss-oppervlak, denken we meestal aan kostenfuncties en gradiënten. Terwijl de kostenfunctie uitlegt hoe goed ons model presteert, wijst de gradiënt, de eerste afgeleide, in de richting van de steilste verandering om het verlies te verkleinen. Maar gradiënten vertellen ons alleen de helling en niet hoe die helling zelf verandert.
Hier komt de vaak over het hoofd geziene Hessiaan-matrix in beeld. Het is een vierkante matrix van partiële afgeleiden van de tweede orde van een scalaire functie die vastlegt hoe de gradiënt evolueert en de kromming van het loss-oppervlak onthult. In data science wordt die belangrijk bij taken met geavanceerde optimalisatie-algoritmen, modeldiagnostiek en bij het beoordelen van de stabiliteit en convergentie van machinelearningmodellen.
De Hessiaan-matrix generaliseert het concept van de tweede afgeleide van eendimensionale functies naar meerdimensionale contexten. Ze codeert informatie over de lokale kromming van een functie om te kwantificeren hoe de functie buigt of kromt in de buurt van een gegeven punt. Ze helpt kritieke punten te analyseren, zoals minima, maxima en zadelpunten, en stuurt geavanceerde numerieke optimalisatietechnieken aan.
De focus van dit artikel is het begrijpen van de Hessiaan-matrix, die helpt te verklaren hoe optimalisatie-algoritmen zich gedragen en hoe snel ze convergeren. Ze is vooral nuttig bij complexe modellen met veel variabelen. Voor wie bekend is met gradiëntvectoren en Jacobiaan-matrices is de Hessiaan de volgende stap. Ze laat zien hoe functies zich gedragen in een hoog-dimensionale ruimte.
Wat is de Hessiaan-matrix?
Bekijk deze vergelijking as een tweemaal differentieerbare scalaire functie:
![]()
Dit betekent dat deze functie twee keer kan worden gedifferentieerd en één getal teruggeeft. De Hessiaan-matrix van f, genoteerd als Hf(x), is een n x n vierkante matrix die alle partiële afgeleiden van de tweede orde van f bevat.
Formeel is elk element van de Hessiaan-matrix gedefinieerd als:

Dit betekent dat de Hessiaan ons vertelt hoe de gradiënt (eerste afgeleide) van een functie verandert ten opzichte van elke invoervariabele.
Als alle tweede partiële afgeleiden van f continu zijn in een omgeving rond een punt, vertelt de stelling van Clairaut (ook wel de stelling van Schwarz) ons dat de gemengde partiële afgeleiden gelijk zijn, met andere woorden: de volgorde van differentiëren doet er niet toe:

Deze symmetrie-eigenschap betekent dat de Hessiaan-matrix in zulke gevallen symmetrisch is.
Belangrijk: de Hessiaan-matrix is alleen gedefinieerd voor scalaire functies, dat wil , functies die één getal teruggeven. Bij vectorwaardige functies, zoals hier:
![]()
strekt het concept van de tweede afgeleide zich uit tot een tensor van de derde orde in plaats van een matrix. Deze tensor legt vast hoe elk uitvoercomponent van F verandert met elk paar invoerwaarden.
Laat Rn -> R een tweemaal differentieerbare scalaire functie zijn. De Hessiaan-matrix van f is de n x n matrix gedefinieerd als:

Elk element Hij is de tweede partiële afgeleide:

Voorbeeld van een Hessiaan-matrix
Beschouw de functie:

Partiële afgeleiden van de eerste orde:

Partiële afgeleiden van de tweede orde:



Hessiaan-matrix

Evalueer bij (x,y) = (1,1)

Discriminant
![]()
Een negatieve discriminant impliceert dat het kritieke punt een zadelpunt is. Bekijk zeker de zadelpunttechniek in onze coursus, Introduction to Optimization in Python, om praktische toepassingen van de Hessiaan te leren.
Hier is hetzelfde voorbeeld geïmplementeerd 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)

Deze code gebruikt symbolische differentiatie om de Hessiaan-matrix te berekenen en deze op een specifiek punt te evalueren. Tools zoals SymPy fungeren als een praktische "Hessiaan-matrixcalculator" voor zowel onderwijs als toegepast onderzoek.
Discriminant en tweede-afgeleidentest
De tweede-afgeleidentest in meerdere dimensies classificeert kritieke punten met behulp van de Hessiaan-matrix:
Laat X0 een kritiek punt zijn waar dit geldt.
![]()
Laat de Hessiaan zijn
![]()
De interpretatie hangt af van de definiteness van de Hessiaan:
- Positief definiet (alle eigenwaarden > 0): X0 is een lokaal minimum.
- Negatief definiet (alle eigenwaarden < 0): X0 is een lokaal maximum.
- Ongedefinieerd (eigenwaarden met gemengd teken): X0 is een zadelpunt.
- Singulier (determinant nul): De test is niet doorslaggevend.
Laten we dit begrijpen met voorbeelden van deze vier gevallen:
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()

In de contourplot hierboven neemt de hoogte toe van “Blauw” als laagste naar “Rood” als hoogste.
Deze test is een uitbreiding van de tweede-afgeleidentest voor eendimensionale functies en wordt besproken samen met onderwerpen als Taylorreeksen en convexiteitoptimalisatie.
De Hessiaan-matrix in optimalisatie
De Hessiaan-matrix verschijnt natuurlijk in de tweedegraads Taylor-expansie van een scalaire functie:

Deze kwadratische benadering stelt Newton-achtige methoden in staat om efficiënt kritieke punten te vinden. Newtons methode werkt variabelen bij volgens:

In hoog-dimensionale settings kan het berekenen en opslaan van de volledige Hessiaan computationeel kostbaar zijn. Daarom benaderen quasi-Newtonmethoden zoals BFGS en L-BFGS de Hessiaan iteratief met behulp van gradiëntverschillen.
Bovendien kan het Hessiaan-vectorproduct Hv worden benaderd zonder de volledige matrix te berekenen, met behulp van eindige verschillen:

Deze benadering is vooral nuttig in deep-learningframeworks die automatische differentiatie gebruiken.
Toepassingen in machine learning en data science
In machine learning geeft de Hessiaan-matrix inzicht in de kromming van het verlieslandschap:
- In neurale netwerken kan het analyseren van de Hessiaan de aanwezigheid van zadelpunten en vlakke regio’s onthullen.
- Bij convexe optimalisatieproblemen helpt de Hessiaan convexiteit te verifiëren en tweede-ordesolvers te sturen.
- Bij het finetunen van modellen helpt kennis van de Hessiaan om leersnelheden aan te passen op basis van lokale kromming.
Naast optimalisatie wordt de Hessiaan gebruikt in:
- Statistische diagnostiek (bijv. Fisher-informatiematrix bij maximum likelihood-schatting).
- Computer vision, zoals de Determinant of Hessian (DoH) blobdetector, gebruikt voor featuredetectie.
- Moleculaire dynamica, met name in normalemode-analyse voor vibratiespectra.
Door de Hessiaan te begrijpen, kun je verder gaan dan gradient descent en meer geavanceerde algoritmen toepassen zoals BFGS, gebruikt in cursussen zoals Machine Learning Fundamentals in Python. Deze technieken zijn afhankelijk van geavanceerde calculusthema’s zoals Taylorreeksen en matrixalgebra.
Conclusie
De Hessiaan-matrix vangt informatie van de tweede orde over scalaire functies en biedt een rijk kader om kromming te analyseren, kritieke punten te identificeren en optimalisatieproblemen op te lossen. Terwijl gradiënten de richting aangeven, verfijnt de Hessiaan het begrip van vorm en scherpte, vooral in hoog-dimensionale problemen die vaak voorkomen in machine learning.
Voor wie al vertrouwd is met Jacobianen en gradiënten, biedt beheersing van de Hessiaan een vollediger beeld van algoritmegedrag en probleemstructuur.
Ik ben een AI-strateeg en -ethicus die op het snijvlak van data science, product en engineering werkt aan schaalbare machinelearningsystemen. Genoteerd als een van de "Top 200 Business and Technology Innovators" ter wereld, heb ik als missie machine learning te democratiseren en het jargon te doorbreken, zodat iedereen deel kan uitmaken van deze transformatie.
FAQs
Wat is de Hessiaan-matrix en waarom is die belangrijk in optimalisatie?
De Hessiaan-matrix is een vierkante matrix van partiële afgeleiden van de tweede orde van een scalaire functie. Ze legt de kromming van de functie vast, helpt de aard van kritieke punten te bepalen en stuurt optimalisatie-algoritmen voor betere convergentie.
Hoe verschilt de Hessiaan van de gradiënt en de Jacobiaan?
Waar de gradiënt de eerste afgeleiden geeft (richting van steilste stijging), en de Jacobiaan dit uitbreidt naar vectorwaardige functies, gaat de Hessiaan verder door te beschrijven hoe de gradiënt zelf verandert, wat inzicht geeft in de kromming van de functie in meerdere dimensies.
Wanneer is de Hessiaan-matrix symmetrisch?
De Hessiaan-matrix is symmetrisch wanneer alle tweede partiële afgeleiden continu zijn rond een punt, volgens de stelling van Clairaut (of Schwarz). Deze symmetrie vereenvoudigt zowel de theoretische analyse als de berekening.
Hoe wordt de Hessiaan gebruikt om kritieke punten te classificeren?
Met behulp van de tweede-afgeleidentest:
- Positief definiete Hessiaan → lokaal minimum
- Negatief definiete Hessiaan → lokaal maximum
- Ongedefinieerde Hessiaan → zadelpunt
- Determinant nul → test is niet doorslaggevend
Kan de Hessiaan worden berekend en gevisualiseerd met Python?
Ja, symbolische wiskundebibliotheken zoals SymPy maken het mogelijk om de Hessiaan-matrix te berekenen en op specifieke punten te evalueren. Deze tools zijn nuttig voor zowel het leren als voor praktische optimalisatietaken in data science en machine learning.

