Trucco di kernel, per reti neurali


9

Ho imparato a conoscere reti neurali e SVM. I tutorial che ho letto hanno sottolineato l'importanza della kernelizzazione, per gli SVM. Senza una funzione del kernel, le SVM sono solo un classificatore lineare. Con la kernelizzazione, le SVM possono anche incorporare funzionalità non lineari, il che le rende un classificatore più potente.

Mi sembra che si possa anche applicare la kernelizzazione alle reti neurali, ma nessuno dei tutorial sulle reti neurali che ho visto ne ha mai parlato. Le persone usano comunemente il trucco del kernel con le reti neurali? Presumo che qualcuno debba averlo provato per vedere se fa una grande differenza. La kernelizzazione aiuta le reti neurali tanto quanto le SVM? Perché o perché no?

(Posso immaginare diversi modi per incorporare il trucco del kernel nelle reti neurali. Un modo sarebbe usare una funzione del kernel adatta per preelaborare l'input, un vettore in Rn , in un input di dimensione superiore, un vettore in Rm per . Per le reti neurali a più strati, un'altra alternativa sarebbe quella di applicare una funzione del kernel ad ogni livello della rete neurale.)mn


2
Il trucco del kernel funziona quando l'accesso computazionale ai punti dati è costituito dal calcolo dei prodotti interni. Non sono sicuro che sia il caso delle reti neurali.
Yuval Filmus,

Risposte:


6

Penso che potresti confondere la terminologia in un modo che sta confondendo il problema. Le SVM funzionano definendo un confine di decisione lineare, cioè un iperpiano. Possiamo definire questo iperpiano in termini di prodotti interni tra i punti. Pertanto, se definiamo questo prodotto interno in uno spazio ad alta dimensione, o addirittura infinito, quello che sembra un iperpiano in questo nuovo spazio è una linea non necessaria nello spazio delle caratteristiche originale. Quindi tutto è ancora lineare, l'unica cosa che abbiamo fatto è implicitamente (tramite il nuovo prodotto interno) incorporare i punti in uno spazio dimensionale superiore. Forse sai già tutto questo.

Ci sono 2 problemi da considerare rispetto alle reti neurali. Il primo è stato sviluppato da @Yuval Filmus, perché le reti neurali a strato nascosto dipendono da più dei soli prodotti interni tra i punti. Se rimuovi il livello nascosto, hai solo qualcosa come la regressione logistica, di cui esistono versioni kernel . Forse c'è un modo per aggirare questo, ma non lo vedo.

In secondo luogo, accenni a preelaborare l'input proiettando in uno spazio dimensionale superiore, ma non infinito. Le reti neurali definiscono una superficie di decisione e questa superficie non è vincolata a essere lineare. Ciò significa che il guadagno derivante dalla proiezione dei punti in uno spazio dimensionale più elevato sarà diverso, vale a dire che potrebbe rendere più semplice trovare un buon set di pesi, ma non abbiamo necessariamente reso il nostro modello più potente. Ciò deriva dal teorema di approssimazione universale che ci dice che, dato un numero sufficiente di unità nascoste, possiamo approssimare qualsiasi funzione (con alcune restrizioni). Quest'ultima affermazione è piuttosto vacua e in qualche modo odio menzionarla. Non dirti nulla su come trovare i pesi giusti non porta molto al tavolo dal punto di vista dell'applicazione.


Grazie. Sì. So che possiamo pensare agli SVM come a mappare gli input originali su uno spazio dimensionale superiore (o persino infinito), quindi fare un confine di decisione lineare in quello spazio dimensionale superiore. Quindi, possiamo farlo anche con le reti neurali? Possiamo mappare gli input su uno spazio dimensionale superiore, quindi trattarlo come l'input effettivo a una rete neurale? Presumo che possiamo (e presumo che potremmo farlo anche ad ogni livello, se volessimo). E, se possiamo, la mia vera domanda è: questo offre un grande miglioramento alle reti neurali (in pratica) come fa per le SVM? Perché o perché no?
DW

Conosco il teorema di approssimazione universale, ma questo non risponde davvero alla domanda (come hai indicato). Quello che mi interessa è quanto bene le opere neurali tendano a funzionare nella pratica. Mi chiedo se la preelaborazione degli input tramite un trucco di kernelizzazione potrebbe far sì che le reti neurali tendano a funzionare meglio nella pratica. Ovviamente non ci sono garanzie e ci saranno sempre situazioni in cui qualsiasi cosa tu possa fare per peggiorare le cose, ma in pratica mi chiedo il comportamento tipico (nello stesso senso in cui diciamo che la kernelizzazione tende a rendere significativamente più efficaci le SVM, in pratica).
DW

2
@DW Il motivo per cui la kernelizzazione rende gli SVM più efficaci è perché consente loro di definire limiti di decisione non lineari. Le reti neurali possono già definire limiti di decisione non lineari, quindi l'unico vantaggio di proiettare i tuoi dati in uno spazio dimensionale più elevato sarebbe quello di facilitare il problema di ottimizzazione.
alto,

1

Il trucco del kernel è possibile per SVM a causa di una proprietà speciale del processo di apprendimento per SVM. Le reti neurali non sembrano avere quella proprietà (per quanto posso dire).

X1,...,XnRdXioXioXioXj

KK(Xio,Xj)φ:RdRmm>dK(Xio,Xj)=φ(Xio)φ(Xj)φK(Xio,Xj)φ(Xio),φ(Xj)K(Xio,Xj)O(d)O(m) tempo.

XioXjK(Xio,Xj)Xio


1

Vorrei condividere alcune osservazioni che ho fatto. Dimensione dell'input: 144. Ho addestrato una rete neurale e durante l'allenamento, l'output degli strati nascosti è stato fornito come input per la regressione logistica e il valore medio della funzione di perdita dopo il montaggio del modello è stato tracciato.inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine

Possiamo vedere che con l'aumento della dimensione del livello, le caratteristiche o l'output dei livelli nascosti stanno diventando linearmente separabili. Mentre questo è lo scopo di apprendere il vettore delle caratteristiche del kernel , la rete neurale sembra farlo internamente. inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.