Perché una funzione di attivazione non lineare deve essere utilizzata in una rete neurale di backpropagation?


139

Ho letto alcune cose sulle reti neurali e capisco il principio generale di una rete neurale a singolo strato. Comprendo la necessità di livelli aggiuntivi, ma perché vengono utilizzate le funzioni di attivazione non lineari?

Questa domanda è seguita da questa: che cos'è un derivato della funzione di attivazione utilizzata nella backpropagation?


migliore risposta di tutti qui nell'intelligenza artificiale
eusoubrasileiro

Risposte:


167

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

a sua volta, ciò consente di modellare una variabile di risposta (nota anche come variabile target, etichetta di classe o punteggio) che varia in modo non lineare con le sue variabili esplicative

non lineare significa che l'output non può essere riprodotto da una combinazione lineare degli input (che non è la stessa dell'output che si trasforma in una linea retta - la parola per questo è affine ).

un altro modo di pensarlo: senza una funzione di attivazione non lineare nella rete, un NN, indipendentemente da quanti strati avesse, si comporterebbe proprio come un percettrone a strato singolo, perché sommare questi livelli ti darebbe 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 utilizzata nel backprop ( tangente iperbolica ) valutata da -2 a 2:

inserisci qui la descrizione dell'immagine


15
Perché dovremmo voler eliminare la linearità?
corazza,

17
Se i dati che desideriamo modellare non sono lineari, dobbiamo tenerne conto nel nostro modello.
Doug

38
Risposta di una frase: << non importa quanti strati si comporterebbero proprio come un singolo percettrone (perché le funzioni lineari sommate ti danno solo una funzione lineare). >> . Bello!
Autonomo,

12
Questo è un po 'fuorviante - come ha detto eski, le funzioni di attivazione lineare rettificata hanno un enorme successo e se il nostro obiettivo è solo quello di modellare / funzioni approssimative, eliminare la non linearità in tutti i passaggi non è necessariamente la risposta giusta. Con abbastanza pezzi lineari, puoi approssimare quasi tutte le funzioni non lineari con un alto grado di precisione. Ho trovato questa una buona spiegazione del perché le unità lineari rettificate funzionano: stats.stackexchange.com/questions/141960/…
tegan,

11
@tegan raddrizzata lineare funzioni di attivazione non è lineare. Non sono sicuro di cosa abbia a che fare il tuo commento con la risposta.
endolith

49

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

inserisci qui la descrizione dell'immagine

Le funzioni di attivazione non possono essere lineari perché le reti neurali con una funzione di attivazione lineare hanno una profondità di solo uno strato, indipendentemente dalla complessità della loro architettura. L'input alle reti è in genere una trasformazione lineare (input * peso), ma il mondo reale e i problemi non sono lineari. Per rendere i dati in ingresso non lineari, utilizziamo il mapping non lineare chiamato funzione di attivazione. Una funzione di attivazione è una funzione decisionale che determina la presenza di una particolare caratteristica neurale. È mappato tra 0 e 1, dove zero significa assenza della funzione, mentre uno indica la sua presenza. Sfortunatamente, i piccoli cambiamenti che si verificano nei pesi non possono riflettersi nei valori di attivazione perché possono assumere solo 0 o 1. Pertanto, le funzioni non lineari devono essere continue e differenziabili in questo intervallo. Una rete neurale deve essere in grado di prendere qualsiasi input da -infinito 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 il necessità di funzione di attivazione. La non linearità è necessaria nelle funzioni di attivazione perché il suo scopo in una rete neurale è produrre un confine di decisione non lineare attraverso combinazioni non lineari di peso e input.


1
+ Uno, Quindi si può dedurre che la funzione non lineare viene utilizzata per stabilire un confine perfetto?
SIslam,

1
Si, esattamente. Invece di produrre solo 0 o 1, può produrre 0,4 o 0,78, rendendolo continuo oltre il limite.
Chibole,

3
Una rete neurale deve essere in grado di prendere qualsiasi input da -infinito a + infinito, ma dovrebbe essere in grado di mapparlo su un output compreso tra {0,1} o tra {-1,1} ... mi ricorda quella limitazione ReLU è che dovrebbe essere usato solo all'interno dei livelli nascosti di un modello di rete neurale.
Cloud Cho,

21

Se consentiamo solo funzioni di attivazione lineare in una rete neurale, l'output sarà solo una trasformazione lineare dell'input, che non è sufficiente per formare un approssimatore di funzioni universale . Una tale rete può essere semplicemente rappresentata come una moltiplicazione matriciale e non si sarebbe in grado di ottenere comportamenti molto interessanti da tale rete.

Lo stesso vale per il caso in cui tutti i neuroni hanno funzioni di attivazione affine (cioè una funzione di attivazione sulla forma f(x) = a*x + c, dove ae csono costanti, che è una generalizzazione delle funzioni di attivazione lineare), che si tradurrà in una trasformazione affine da input a output , che non è neanche molto eccitante.

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

Nota: un'eccezione interessante sono i gradienti sintetici di DeepMind , per i quali usano una piccola rete neurale per prevedere il gradiente nel passaggio di backpropagation dati i valori di attivazione e scoprono che possono cavarsela usando una rete neurale senza livelli nascosti e con solo attivazioni lineari.


1
Le funzioni di ordine superiore possono essere approssimate con funzioni di attivazione lineari utilizzando più livelli nascosti. Il teorema di approssimazione universale è specifico delle MLP con un solo strato nascosto.
eski,

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

4
@eski No, è possibile non approssimare funzioni di ordine superiore con sole funzioni di attivazione lineari, si può solo modello lineare (o affine, se si dispone di un nodo ulteriore costante in ogni, ma l'ultimo strato) funzioni e trasformazioni, non importa quanti strati voi avere.
Ciao Arrivederci

È corretto affermare che lo scopo principale della funzione di attivazione è consentire alla rete neurale di produrre un confine decisionale non lineare?
stackoverflowuser2010

@ stackoverflowuser2010 Sarebbe un modo per vederlo. Ma ci sono molto di più in una funzione di attivazione. L'articolo di Wikipedia sulle funzioni di attivazione elenca diverse funzioni di attivazione, tutte (tranne una) non lineari, e confronta le diverse qualità che una funzione di attivazione può avere.
Ciao Arrivederci

9

Una rete neurale feed-forward con attivazione lineare e qualsiasi numero di strati nascosti equivale a una semplice rete neurale neurale senza strato nascosto. Ad esempio, consideriamo la rete neurale in figura con due livelli nascosti e nessuna attivazione inserisci qui la descrizione dell'immagine

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

Possiamo fare l'ultimo passo perché la combinazione di più trasformazioni lineari può essere sostituita con una trasformazione e la combinazione di più termini di bias è solo un singolo bias. Il risultato è lo stesso anche se aggiungiamo qualche attivazione lineare.

Quindi potremmo sostituire questa rete neurale con una rete neurale a singolo strato, che può essere estesa a nstrati. Ciò indica che l'aggiunta di strati non aumenta affatto il potere di approssimazione di una rete neurale lineare. Abbiamo bisogno di funzioni di attivazione non lineari per approssimare le funzioni non lineari e la maggior parte dei problemi del mondo reale sono altamente complessi e non lineari. Infatti quando la funzione di attivazione non è lineare, una rete neurale a due strati con un numero sufficientemente grande di unità nascoste può essere dimostrata come un approssimatore di funzioni universale.


5

"Il presente documento si avvale del Teorema di Stone-Weierstrass e dello squasher del coseno di Gallant e White per stabilire che le architetture di rete feedforward multistrato standard che utilizzano le funzioni di schiacciamento abritrario possono approssimare virtualmente qualsiasi funzione di interesse a qualsiasi grado di accuratezza desiderato, purché sufficientemente nascosto le unità sono disponibili. " ( Hornik et al., 1989, Neural Networks )

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


3

Ci sono momenti in cui una rete puramente lineare può dare risultati utili. Supponiamo di avere una rete di tre strati con forme (3,2,3). Limitando lo strato intermedio a sole due dimensioni, si ottiene un risultato che è il "piano di adattamento ottimale" nello spazio tridimensionale originale.

Ma ci sono modi più facili per trovare trasformazioni lineari di questa forma, come NMF, PCA ecc. Tuttavia, questo è un caso in cui una rete multistrato NON si comporta allo stesso modo di un percettrone a singolo strato.


2

Per comprendere prima la logica dietro le funzioni di attivazione non lineare , è necessario comprendere perché vengono utilizzate le funzioni di attivazione. In generale, i problemi del mondo reale richiedono soluzioni non lineari che non sono banali. Quindi abbiamo bisogno di alcune funzioni per generare la non linearità. Fondamentalmente ciò che fa una funzione di attivazione è generare questa non linearità mentre si mappano i valori di input in un intervallo desiderato.

Tuttavia, le funzioni di attivazione lineare potrebbero essere utilizzate in un numero molto limitato di casi in cui non sono necessari livelli nascosti come la regressione lineare. Di solito, è inutile generare una rete neurale per questo tipo di problemi poiché, indipendentemente dal numero di strati nascosti, questa rete genererà una combinazione lineare di input che può essere eseguita in un solo passaggio. In altre parole, si comporta come un singolo strato.

Ci sono anche alcune proprietà più desiderabili per le funzioni di attivazione come la differenziazione continua . Dato che stiamo usando la backpropagation, la funzione che generiamo deve essere differenziabile in qualsiasi momento. Ti consiglio vivamente di controllare la pagina di Wikipedia per le funzioni di attivazione da qui per avere una migliore comprensione dell'argomento.


2

Diverse buone risposte sono qui. Sarà utile sottolineare il libro "Pattern Recognition and Machine Learning" di Christopher M. Bishop. È un libro a cui vale la pena fare riferimento per avere una visione più approfondita di diversi concetti relativi alla ML. Estratto da pagina 229 (sezione 5.1):

Se le funzioni di attivazione di tutte le unità nascoste in una rete sono considerate lineari, allora per tale rete possiamo sempre trovare una rete equivalente senza unità nascoste. Ciò deriva dal fatto che la composizione delle successive trasformazioni lineari è essa stessa una trasformazione lineare. Tuttavia, se il numero di unità nascoste è inferiore al numero di unità di input o output, le trasformazioni che la rete può generare non sono le trasformazioni lineari più generali possibili da input a output perché le informazioni vengono perse nella riduzione della dimensionalità unità nascoste. Nella Sezione 12.4.2, mostriamo che le reti di unità lineari danno origine all'analisi dei componenti principali. In generale, tuttavia, c'è scarso interesse per le reti multistrato di unità lineari.


1

Come ricordo, le funzioni sigmoid sono utilizzate perché la loro derivata che si adatta all'algoritmo 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.


7
La funzione vuole ancora essere monotonicamente crescente, come ricordo. Quindi, nessuna funzione.
Novak,

1

Una NN stratificata di diversi neuroni può essere utilizzata per imparare problemi inseparabili in modo lineare. Ad esempio la funzione XOR può essere ottenuta con due livelli con la funzione di attivazione a gradino.


0

Lasciami dare per spiegartelo il più semplice possibile:

Le reti neurali sono utilizzate nel riconoscimento di schemi corretti? E la ricerca di modelli è una tecnica molto non lineare.

Supponiamo per ragioni di argomento che usiamo una funzione di attivazione lineare y = wX + b per ogni singolo neurone e impostiamo qualcosa come se y> 0 -> classe 1 altrimenti classe 0.

Ora possiamo calcolare la nostra perdita utilizzando la perdita di errore quadrata e propagarla indietro in modo che il modello apprenda bene, giusto?

SBAGLIATO.

  • Per l'ultimo livello nascosto, il valore aggiornato sarà w {l} = w {l} - (alfa) * X.

  • Per il secondo ultimo livello nascosto, il valore aggiornato sarà w {l-1} = w {l-1} - (alfa) * w {l} * X.

  • Per l'ultimo livello nascosto, il valore aggiornato sarà w {i} = w {i} - (alfa) * w {l} ... * w {i + 1} * X.

Questo ci porta a moltiplicare insieme tutte le matrici di peso e quindi le possibilità: A) w {i} cambia a malapena a causa del gradiente di scomparsa B) w {i} cambia drammaticamente e in modo impreciso a causa dell'esplosione del gradiente C) w {i} cambia bene abbastanza per darci un buon punteggio

Nel caso C ciò significhi che il nostro problema di classificazione / previsione era molto probabilmente un semplice regressore lineare / logistico basato e non ha mai richiesto una rete neurale in primo luogo!

Non importa quanto sia robusto o ben sintonizzato il tuo NN, se usi una funzione di attivazione lineare, non sarai mai in grado di affrontare problemi di riconoscimento del pattern non lineari che richiedono


-3

Non è affatto un requisito. In effetti, la funzione di attivazione lineare rettificata è molto utile nelle reti neurali di grandi dimensioni. Il calcolo del gradiente è molto più veloce e induce la scarsità impostando un limite minimo a 0.

Per ulteriori dettagli, consultare: https://www.academia.edu/7826776/Mathematical_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks


Modificare:

Si è discusso se la funzione di attivazione lineare rettificata possa essere definita una funzione lineare.

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

Avrei potuto scegliere la funzione identità e sarebbe comunque vera, ma ho scelto ReLU come esempio per la sua recente popolarità.


8
Anche la funzione di attivazione lineare rettificata non è lineare (nonostante il nome). È solo lineare per valori positivi
Plankalkül

4
Tecnicamente hai ragione, 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 è nemmeno 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à di ReLU a renderli utili. Se fossero stati lineari, avrebbero avuto una funzione di attivazione sul modulo f(x) = a*x(perché questo è l'unico tipo di funzione di attivazione lineare che esiste), che è inutile come funzione di attivazione (a meno che non si combini con funzioni di attivazione non lineari ).
Ciao Arrivederci

10
L'unità lineare rettificata (ReLU) non è lineare, e non è solo un "dettaglio minore" a cui le persone stanno puntando, è una ragione importante e significativa per cui è utile iniziare. Una rete neurale con matrice di identità o un'unità lineare regolare utilizzata come funzione di attivazione non sarebbe in grado di modellare funzioni non lineari. Solo perché è lineare sopra 0 non significa che sia praticamente una funzione lineare. Una ReLU che perde è anche "lineare" sotto 0 ma non è ancora una funzione lineare e sicuramente non può essere semplicemente sostituita dalla funzione identità. La non linearità è sicuramente un requisito.
Essam Al-Mansouri

3
È reale un concetto chiamato funzione lineare a tratti.
eski,
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.