Sembra che ci siano molti algoritmi di apprendimento automatico che si basano sulle funzioni del kernel. SVM e NN per nominarne solo due. Quindi qual è la definizione di una funzione del kernel e quali sono i requisiti per essere valida?
Sembra che ci siano molti algoritmi di apprendimento automatico che si basano sulle funzioni del kernel. SVM e NN per nominarne solo due. Quindi qual è la definizione di una funzione del kernel e quali sono i requisiti per essere valida?
Risposte:
Per x, y su S, alcune funzioni K (x, y) possono essere espresse come prodotto interno (di solito in uno spazio diverso). K viene spesso definito kernel o funzione kernel. La parola kernel è usata in vari modi in matematica, ma questo è l'uso più comune nell'apprendimento automatico.
Il trucco del kernel è un modo di mappare le osservazioni da un insieme generale S in uno spazio interno di prodotto V (dotato della sua norma naturale), senza mai dover calcolare esplicitamente la mappatura, nella speranza che le osservazioni acquisiscano una struttura lineare significativa in V Questo è importante in termini di efficienza (calcolo puntuale dei prodotti in uno spazio di dimensioni molto elevate molto rapidamente) e praticità (possiamo convertire algoritmi ML lineari in algoritmi ML non lineari).
Perché una funzione K sia considerata un kernel valido, deve soddisfare le condizioni di Mercer . Questo in termini pratici significa che dobbiamo garantire che la matrice del kernel (calcolando il prodotto del kernel di ogni punto dati che possiedi) sia sempre semi-definita positiva. Ciò garantirà che la funzione dell'obiettivo di allenamento sia convessa, una proprietà molto importante.
Da Williams, Christopher KI e Carl Edward Rasmussen. " Processi gaussiani per l'apprendimento automatico. " MIT Press 2, n. 3 (2006). Pagina 80 .
Inoltre, funzione kernel = kernel.
I kernel utilizzati negli algoritmi di machine learning in genere soddisfacevano più proprietà, come il semidefinito positivo.
Andando a provare per una spiegazione meno tecnica.
Innanzitutto, inizia con il prodotto punto tra due vettori. Questo ti dice quanto siano "simili" i vettori. Se i vettori rappresentano punti nel set di dati, il prodotto punto indica se sono simili o meno.
Ma, in alcuni (molti) casi, il prodotto punto non è la migliore metrica di somiglianza. Per esempio:
Quindi, invece di usare il prodotto dot, usi un "kernel" che è solo una funzione che prende due punti e ti dà una misura della loro somiglianza. Non sono sicuro al 100% delle condizioni tecniche che una funzione deve soddisfare per essere tecnicamente un kernel, ma questa è l'idea.
Una cosa molto bella è che il kernel può aiutarti a mettere la tua conoscenza del dominio nel problema, nel senso che puoi dire che due punti sono uguali a causa della ragione xyz che viene dalla conoscenza del dominio.