2012-03-20 16 views

risposta

102

Lo scopo della funzione di attivazione è di introdurre non linearità nella rete

a sua volta, questo permette di modellare una variabile di risposta (alias bersaglio variabile, etichetta di classe, o score) che varia in modo non lineare con le sue variabili esplicative

non lineare significa che l'uscita non può essere riprodotto da una combinazione lineare degli ingressi (che non è la stessa uscita che rende ad una retta - la parola questo è affine).

altro modo pensare esso: senza funzione di attivazione non lineare nella rete, un NN, indipendentemente dal numero di strati aveva, sarebbe comportarsi come un perceptron singolo strato, perché sommando questi strati sarebbe darti solo un'altra funzione lineare (vedi definizione appena sopra).

>>> in_vec = NP.random.rand(10) 
>>> in_vec 
    array([ 0.94, 0.61, 0.65, 0. , 0.77, 0.99, 0.35, 0.81, 0.46, 0.59]) 

>>> # common activation function, hyperbolic tangent 
>>> out_vec = NP.tanh(in_vec) 
>>> out_vec 
array([ 0.74, 0.54, 0.57, 0. , 0.65, 0.76, 0.34, 0.67, 0.43, 0.53]) 

Una funzione di attivazione comune utilizzato in backprop (tangente iperbolica) valutata tra -2 e 2:

enter image description here

+8

Perché dovremmo eliminare la linearità? – corazza

+12

Se i dati che vogliamo modellare non sono lineari, dobbiamo tenerne conto nel nostro modello. – doug

+0

OK, lo capisco adesso, grazie! – corazza

1

quanto ricordo - Funzione Sigmoidea vengono utilizzati perché il loro derivato che si inserisce nel algoritmo di BP è facile da calcolare, qualcosa di semplice come f (x) (1-f (X)). Non ricordo esattamente la matematica. In realtà è possibile utilizzare qualsiasi funzione con derivati.

+4

La funzione vuole ancora aumentare monotonicamente, come ricordo. Quindi, non * qualsiasi * funzione. – Novak

+1

Sì, hai ragione; Non ho ricordato esattamente – Anton

2

"Il presente documento fa uso della Pietra Weierstrass Teorema e lo spacciatore coseno di Gallant e White per stabilire che le architetture di rete feedforward standard multistrato che utilizzano funzioni di schiacciamento abritrario possono approssimare virtualmente qualsiasi funzione di interesse a qualsiasi grado desiderato di accuratezza , a condizione che siano disponibili molte unità nascoste. " (Hornik et al., 1989, http://weber.ucsd.edu/~hwhite/pub_files/hwcv-028.pdf)

Una funzione di schiacciamento è ad esempio una funzione di attivazione non lineare che si associa a [0,1] come la funzione di attivazione sigmoide.

-3

Non è affatto un requisito. In effetti, lo rectified linear activation function è molto utile nelle grandi reti neurali. Il calcolo del gradiente è molto più veloce, e induce scarsità impostando un limite minimo a 0.

Vedere quanto segue per maggiori dettagli: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks


Edit:

Ci sono state alcune discussione sul se la funzione di attivazione lineare rettificata può essere chiamata una funzione lineare.

Sì, è tecnicamente una funzione non lineare perché non è lineare nel punto x = 0, tuttavia, è comunque corretto dire che è lineare in tutti gli altri punti, quindi non penso che sia utile to nitpick here,

Avrei potuto scegliere la funzione di identità e sarebbe ancora vero, ma ho scelto ReLU come esempio a causa della sua recente popolarità.

+6

Anche la funzione di attivazione lineare rettificata è non lineare (nonostante il suo nome). È solo lineare per valori positivi –

+3

Sei tecnicamente corretto, non è lineare su tutto il dominio, in particolare su x = 0 (in realtà è lineare per x <0, poiché f (x) = 0 è una funzione lineare). Inoltre non è differenziabile, quindi la funzione gradiente non è completamente calcolabile, ma in pratica questi aspetti tecnici sono facili da superare. – eski

+4

Non è solo tecnicamente corretto, ha anche ragione nella pratica (o qualcosa del genere). È la non linearità della ReLU che li rende utili. Se fossero stati lineari, avrebbero avuto una funzione di attivazione sulla forma 'f (x) = a * x' (perché questo è l'unico tipo di funzione di attivazione lineare che esiste), che è _useless_ come funzione di attivazione (a meno che non lo si combini con le funzioni di attivazione non lineare). – HelloGoodbye

0

Un NN stratificato di diversi neuroni può essere utilizzato per apprendere problemi linearmente inseparabili. Ad esempio la funzione XOR può essere ottenuta con due livelli con la funzione di attivazione passo.

10

Se si abilitano solo funzioni di attivazione lineare in una rete neurale, l'uscita sarà semplicemente un linear transformation dell'input, che non è sufficiente per formare un universal function approximator. Una rete di questo tipo può essere semplicemente rappresentata come una moltiplicazione di matrice e non sarà possibile ottenere comportamenti molto interessanti da tale rete.

La stessa cosa vale per il caso in cui tutti i neuroni hanno funzioni di attivazione affine (cioè una funzione di attivazione della maschera f(x) = a*x + c, dove a e c sono costanti, che è una generalizzazione di funzioni di attivazione lineari), che sarà solo provocare un affine transformation dall'input all'output, che non è neanche molto eccitante.

Una rete neurale può contenere molto bene i neuroni con funzioni di attivazione lineare, ad esempio nello strato di output, ma questi richiedono la compagnia di neuroni con una funzione di attivazione non lineare in altre parti della rete.

+1

Le funzioni di ordine superiore possono essere approssimate con le funzioni di attivazione lineare utilizzando più livelli nascosti. Il teorema di approssimazione universale è specifico per le MLP con un solo livello nascosto. – eski

+0

In realtà, credo che tu abbia ragione nella tua affermazione sulle funzioni di attivazione affine che portano a una trasformazione affine, ma il fatto che la trasformazione sia appresa attraverso il backpropagation (o qualsiasi altro mezzo) lo rende non del tutto inutile per quanto riguarda la domanda originale . – eski

+3

@eski No, non puoi _not_ approssimare le funzioni di ordine superiore con solo le funzioni di attivazione lineare, puoi solo modellare le funzioni e le trasformazioni lineari (o affini, se hai un nodo costante addizionale in ogni ma ultimo strato), indipendentemente da quanti strati hai. – HelloGoodbye

25

È possibile utilizzare una funzione di attivazione lineare. Tuttavia in occasioni molto limitate. In effetti, per capire meglio le funzioni di attivazione è importante guardare la minima quadratura ordinaria o semplicemente la regressione lineare. Una regressione lineare mira a trovare i pesi ottimali che si traducono in un effetto verticale minimo tra le variabili esplicative e target, quando si combinano con l'input. In breve, se l'output previsto è in linea con la regressione lineare come mostrato di seguito, è possibile utilizzare le funzioni di attivazione lineare: (Figura in alto). Ma nella seconda figura sotto la funzione lineare non produrrà i risultati desiderati: (figura centrale) Tuttavia, una funzione non lineare come mostrato sotto produrrebbe i risultati desiderati: (figura inferiore) enter image description here

funzioni di attivazione non può essere lineare in quanto le reti neurali con funzione di attivazione lineare sono efficaci solo uno strato profondo, indipendentemente dalla complessità loro architettura siamo. Gli input alle reti sono solitamente trasformazioni lineari (input * weight), ma il mondo reale ei problemi non sono lineari. Per rendere i dati in arrivo non lineari, utilizziamo la mappatura non lineare chiamata funzione di attivazione. Una funzione di attivazione è una funzione decisionale che determina la presenza di particolari funzionalità neurali. È mappato tra 0 e 1, dove zero significa che la funzione non è presente, mentre uno indica che la funzione è presente. Sfortunatamente, le piccole modifiche che si verificano nei pesi non possono essere riflesse nel valore di attivazione perché possono prendere solo 0 o 1. Pertanto, le funzioni non lineari devono essere continue e differenziabili tra questo intervallo. Una rete neurale deve essere in grado di prendere qualsiasi input da -infinity a + infinito, ma dovrebbe essere in grado di mapparlo su un output che varia tra {0,1} o tra {-1,1} in alcuni casi - quindi la necessità della funzione di attivazione. La non-linearità è necessaria nelle funzioni di attivazione perché il suo scopo in una rete neurale è di produrre un limite di decisione non lineare attraverso combinazioni non lineari del peso e degli input.

+0

+ Uno, Quindi è possibile dedurre che la funzione non lineare è utilizzata per stabilire un confine perfetto? – SIslam

+0

Sì, esattamente. In costante produzione di 0 o 1, può produrre 0,4 o 0,78, rendendolo continuo all'intervallo di limiti. – user7479

+0

Una rete neurale deve essere in grado di prendere qualsiasi input da -infinity a + infinito, ma dovrebbe essere in grado di mapparlo su un output che varia tra {0,1} o tra {-1,1} ... ricorda me che la limitazione di ReLU è che dovrebbe essere usato solo all'interno di strati nascosti di un modello di rete neurale. –

Problemi correlati