Neural Tangent Kernel (NTK)
Il kernel tangente neurale (NTK) misura come le previsioni della rete reagiscono alle variazioni dei parametri, collegando l’addestramento delle reti neurali ai metodi basati su kernel.
Il kernel tangente neurale (NTK) è una funzione di similarità che misura come gli output della rete neurale per due input reagiscono alle stesse piccole variazioni dei parametri del modello. Le previsioni per gli input sono fortemente accoppiate quando i gradienti rispetto ai parametri sono allineati. Questo collega l’addestramento delle reti neurali ai metodi basati su kernel, che apprendono tramite similarità a coppie tra esempi.
Arthur Jacot, Franck Gabriel e Clément Hongler introdussero il termine nel 2018 in Kernel tangente neurale: convergenza e generalizzazione nelle reti neurali, definendo un quadro matematico per analizzare l’evoluzione delle previsioni durante l’addestramento.
Come funziona il kernel tangente neurale#
Per una rete neurale con output scalare, calcola la derivata dell’output rispetto a ogni parametro addestrabile. Queste derivate formano un vettore gradiente che descrive la sensibilità della previsione ai pesi del modello. Il kernel tangente neurale (NTK) tra due input è il prodotto scalare dei rispettivi vettori gradiente.
Su un dataset, questi valori a coppie formano una matrice kernel, detta anche matrice di Gram. La diagonale misura la sensibilità di ogni previsione alle variazioni dei parametri; gli elementi fuori diagonale descrivono l’accoppiamento tra esempi diversi. Per output multipli, ogni coppia di input produce un blocco che contiene le interazioni tra le coordinate di output, come avviene nel calcolo dell’NTK empirico.
Durante la discesa del gradiente, il kernel determina in che modo la riduzione dell’errore di previsione su un esempio modifica le previsioni sugli altri. I gradienti rilevanti sono le derivate degli output della rete; la retropropagazione fornisce gli strumenti per calcolarle. La funzione di perdita determina quindi la direzione e l’entità degli aggiornamenti che correggono l’errore.
Larghezza infinita, convergenza e generalizzazione#
La larghezza di una rete è il numero di unità nascoste oppure, in uno strato convoluzionale, di canali. Con la parametrizzazione NTK e ipotesi adeguate sull’inizializzazione e sull’addestramento, aumentando le larghezze degli strati nascosti fino all’infinito si ottiene un kernel limite deterministico che rimane costante durante l’addestramento. L’NTK empirico di una rete finita viene valutato sui parametri effettivi e può cambiare man mano che l’addestramento procede.
Nel regime a kernel costante, l’addestramento segue l’approssimazione al primo ordine della rete attorno all’inizializzazione. Si tratta di una rete linearizzata: le sue previsioni dipendono linearmente dalle variazioni dei parametri, pur mantenendo una dipendenza non lineare dagli input. Il termine correlato addestramento pigro descrive un regime in cui le feature tangenti cambiano poco. Nell’apprendimento delle feature, invece, queste evolvono in modo sostanziale durante l’ottimizzazione.
Con la perdita quadratica e il flusso del gradiente a kernel costante — il limite in tempo continuo di piccoli passi di gradiente — gli errori diminuiscono più rapidamente lungo gli autovettori del kernel con autovalori maggiori. Gli autovettori individuano schemi tra gli esempi, mentre gli autovalori determinano la velocità con cui vengono appresi. Questo spiega perché l’arresto anticipato agisce da regolarizzazione: limita l’adattamento alle componenti apprese lentamente, incluse quelle associate al rumore e all’overfitting. Le previsioni su input mai visti dipendono dalla loro similarità kernel con i dati di addestramento.
Applicazioni e concetti correlati#
I metodi NTK supportano la regressione basata su kernel e l’analisi della classificazione delle immagini. Il kernel tangente convoluzionale (CNTK) estende la costruzione alle reti neurali convoluzionali. Sanjeev Arora e i suoi collaboratori hanno utilizzato il calcolo esatto del CNTK per la classificazione su CIFAR-10, fornendo un equivalente basato su kernel dell’addestramento di reti convoluzionali finite.
Il kernel di processo gaussiano della rete neurale (NNGP) descrive la covarianza tra gli output di reti inizializzate casualmente nel limite di larghezza infinita. L’NTK descrive le dinamiche di addestramento guidate dai gradienti. Analogamente, il sondaggio lineare addestra un classificatore lineare su rappresentazioni congelate; la linearizzazione NTK usa come feature le derivate rispetto ai parametri addestrabili selezionati.
La selezione dei parametri modifica quindi il kernel tangente che governa l’addestramento. Nel fine-tuning di Ultralytics YOLO26, l’argomento freeze mantiene fissi gli strati selezionati, perciò i relativi parametri non contribuiscono alle direzioni di aggiornamento del kernel di addestramento effettivo.
Calcolo di un NTK empirico#
Questo esempio PyTorch calcola il kernel per due immagini di cifre scritte a mano tratte dal dataset digits incluso in scikit-learn. Installa le dipendenze con pip install torch scikit-learn.
import torch
from sklearn.datasets import load_digits
from torch import nn
torch.manual_seed(0)
digits = load_digits()
inputs = torch.tensor(digits.data[:2], dtype=torch.float32) / 16
model = nn.Sequential(nn.Linear(64, 8), nn.Tanh(), nn.Linear(8, 1))
parameters = tuple(model.parameters())
outputs = model(inputs)
# Ogni riga della Jacobiana contiene le derivate dei parametri per un output.
rows = []
for output in outputs[:, 0]:
gradients = torch.autograd.grad(output, parameters, retain_graph=True)
rows.append(torch.cat([gradient.flatten() for gradient in gradients]))
jacobian = torch.stack(rows)
kernel = jacobian @ jacobian.T
print(kernel)La matrice 2 x 2 stampata contiene le due autosensibilità e il loro accoppiamento tra esempi. Costruirla come jacobian @ jacobian.T rende l’NTK empirico con output scalare simmetrico e semidefinito positivo, con un rango limitato sia dal numero di esempi sia dal numero di parametri addestrabili.










