Elenco completo delle funzioni di attivazione nelle reti neurali con pro / contro


95

Esistono documenti di riferimento che forniscono un elenco completo delle funzioni di attivazione nelle reti neurali insieme ai loro pro / contro (e idealmente alcuni suggerimenti per le pubblicazioni in cui hanno avuto successo o meno)?


Non ne so abbastanza di ANN, ma a meno che le funzioni di attivazione non differiscano sostanzialmente nella forma, sarà molto difficile distinguerle. Per una discussione su una situazione analoga, puoi vedere la mia risposta qui: Differenza tra logit e modelli probit .
gung - Ripristina Monica

1
no, fa una differenza abbastanza grande.
Viliami,

en.wikipedia.org/wiki/Activation_function è una buona risorsa; puoi usarne molti altri, incluso sin(x), vedi openreview.net/pdf?id=Sks3zF9eg .
Piotr Migdal

Per i tutorial video sulle funzioni di attivazione, visitare: quickkt.com/tutorials/artificial-intelligence/deep-learning/…
vinay kumar,

Risposte:


144

Inizierò a fare un elenco qui di quelli che ho imparato finora. Come ha detto @marcodena, i pro ei contro sono più difficili perché è soprattutto solo l'euristica imparata dal provare queste cose, ma immagino che almeno avere un elenco di ciò che sono non può far male.

Innanzitutto, definirò esplicitamente la notazione in modo che non ci sia confusione:

Notazione

Questa notazione è tratta dal libro di Neilsen .

Una rete neurale Feedforward è composta da molti strati di neuroni collegati tra loro. Accetta un input, quindi quell'ingresso "gocciola" attraverso la rete e la rete neurale restituisce un vettore di output.

Più formalmente, chiama l'attivazione ( come output) del neurone nello strato , dove è l' elemento nel vettore di input. j t h i t h a 1 j j t hajijthithaj1jth

Quindi possiamo mettere in relazione l'input del livello successivo con quello precedente tramite la seguente relazione:

aji=σ(k(wjkiaki1)+bji)

dove

  • σ è la funzione di attivazione,
  • k t h ( i - 1 ) t h j t h i t hwjki è il peso dal neurone nello strato al neurone nello strato ,kth(i1)thjthith
  • j t h i t hbji è il pregiudizio del neurone nello strato ejthith
  • j t h i t haji rappresenta il valore di attivazione del neurone nel livello .jthith

A volte scriviamo per rappresentare , in altre parole, il valore di attivazione di un neurone prima di applicare la funzione di attivazione .k ( w i j ka i - 1 k ) + b i jzjik(wjkiaki1)+bji

inserisci qui la descrizione dell'immagine

Per una notazione più concisa possiamo scrivere

ai=σ(wi×ai1+bi)

Per utilizzare questa formula per calcolare l'output di una rete feedforward per alcuni input , imposta , quindi calcola , dove è il numero di strati.a 1 = I a 2 , a 3 , , a m mIRna1=Ia2,a3,,amm

Funzioni di attivazione

(di seguito, scriveremo invece di per leggibilità)e xexp(x)ex

Identità

Conosciuta anche come funzione di attivazione lineare.

aji=σ(zji)=zji

Identità

Passo

aji=σ(zji)={0if zji<01if zji>0

Passo

Lineare a tratti

Scegli alcuni e , che è il nostro "intervallo". Tutto ciò che è inferiore a questo intervallo sarà 0 e tutto quanto maggiore di questo intervallo sarà 1. Qualsiasi altra cosa viene linearmente interpolata tra. formalmente:xminxmax

aji=σ(zji)={0if zji<xminmzji+bif xminzjixmax1if zji>xmax

Dove

m=1xmaxxmin

e

b=mxmin=1mxmax

Lineare a tratti

sigmoid

aji=σ(zji)=11+exp(zji)

sigmoid

Log-log complementare

aji=σ(zji)=1exp(exp(zji))

Log-log complementare

Bipolare

aji=σ(zji)={1if zji<0   1if zji>0

Bipolare

Sigmoide bipolare

aji=σ(zji)=1exp(zji)1+exp(zji)
Sigmoide bipolare

tanh

aji=σ(zji)=tanh(zji)

tanh

LeCun's Tanh

Vedi Backprop efficiente .

aji=σ(zji)=1.7159tanh(23zji)

LeCun's Tanh

Scaled:

TanC in scala di LeCun

Tanh duro

aji=σ(zji)=max(1,min(1,zji))

Tanh duro

Assoluto

aji=σ(zji)=∣zji

Assoluto

Rectifier

Conosciuta anche come Unità lineare rettificata (ReLU), Max o Funzione rampa .

aji=σ(zji)=max(0,zji)

Rectifier

Modifiche di ReLU

Queste sono alcune funzioni di attivazione con cui ho giocato che sembrano avere ottime prestazioni per MNIST per ragioni misteriose.

aji=σ(zji)=max(0,zji)+cos(zji)

ReLU cos

Scaled:

ReLU in scala

aji=σ(zji)=max(0,zji)+sin(zji)

ReLU sin

Scaled:

ReLU sin ridimensionato

Raddrizzatore liscio

Conosciuto anche come unità lineare rettificata liscia, Smooth max o Soft plus

aji=σ(zji)=log(1+exp(zji))

Raddrizzatore liscio

logit

aji=σ(zji)=log(zji(1zji))

logit

Scaled:

Logit ridimensionato

probit

aji=σ(zji)=2erf1(2zji1)
.

Dove è la funzione di errore . Non può essere descritto tramite funzioni elementari, ma puoi trovare il modo di approssimare il contrario su quella pagina di Wikipedia e qui .erf

In alternativa, può essere espresso come

aji=σ(zji)=ϕ(zji)
.

Dove è la funzione di distribuzione cumulativa (CDF). Vedi qui per i mezzi per approssimare questo.ϕ

probit

Scaled:

Probit ridimensionato

Coseno

Vedi lavelli da cucina casuali .

aji=σ(zji)=cos(zji)
.

Coseno

SoftMax

Conosciuto anche come esponenziale normalizzato.

aji=exp(zji)kexp(zki)

Questo è un po 'strano perché l'output di un singolo neurone dipende dagli altri neuroni in quello strato. Inoltre, diventa difficile da calcolare, poiché può essere un valore molto alto, nel qual caso probabilmente traboverà. Allo stesso modo, se è un valore molto basso, underflow e diventerà .zjiexp(zji)zji0

Per combattere questo, calcoleremo invece . Questo ci dà:log(aji)

log(aji)=log(exp(zji)kexp(zki))

log(aji)=zjilog(kexp(zki))

Qui dobbiamo usare il trucco log-sum-exp :

Diciamo che stiamo elaborando:

log(e2+e9+e11+e7+e2+e5)

Per prima cosa classificheremo i nostri esponenziali per grandezza:

log(e11+e9+e5+e2+e2+e7)

Quindi, poiché è il nostro massimo, moltiplichiamo per :e11e11e11

log(e11e11(e11+e9+e5+e2+e2+e7))

log(1e11(e0+e2+e6+e9+e13+e18))

log(e11(e0+e2+e6+e9+e13+e18))

log(e11)+log(e0+e2+e6+e9+e13+e18)

11+log(e0+e2+e6+e9+e13+e18)

Possiamo quindi calcolare l'espressione sulla destra e prenderne il registro. Va bene farlo perché quella somma è molto piccola rispetto a , quindi qualsiasi underflow su 0 non sarebbe stato abbastanza significativo da fare comunque la differenza. Il overflow non può verificarsi nell'espressione a destra perché ci viene garantito che dopo aver moltiplicato per , tutti i poteri saranno .log(e11)e110

Formalmente, chiamiamo . Poi:m=max(z1i,z2i,z3i,...)

log(kexp(zki))=m+log(kexp(zkim))

La nostra funzione softmax diventa quindi:

aji=exp(log(aji))=exp(zjimlog(kexp(zkim)))

Anche come sidenote, la derivata della funzione softmax è:

dσ(zji)dzji=σ(zji)=σ(zji)(1σ(zji))

Massimizzare

Anche questo è un po 'complicato. Fondamentalmente l'idea è che suddividiamo ogni neurone nel nostro strato massimo in molti sub-neuroni, ognuno dei quali ha i propri pesi e pregiudizi. Quindi l'input di un neurone va a ciascuno dei suoi sub-neuroni invece, e ogni sub-neurone emette semplicemente le loro (senza applicare alcuna funzione di attivazione). L' di quel neurone è quindi il massimo di tutte le uscite del suo sub-neurone.zaji

Formalmente, in un singolo neurone, diciamo che abbiamo sub-neuroni. Poin

aji=maxk[1,n]sjki

dove

sjki=ai1wjki+bjki

( è il prodotto punto )

Per aiutarci a pensare a questo, considera la matrice di peso per lo strato di una rete neurale che sta usando, diciamo, una funzione di attivazione sigmoidea. è una matrice 2D, in cui ogni colonna è un vettore per il neurone contenente un peso per ogni neurone nel livello precedente .WiithWiWjiji1

Se avremo sub-neuroni, avremo bisogno di una matrice di peso 2D per ogni neurone, poiché ogni sub-neurone avrà bisogno di un vettore contenente un peso per ogni neurone nel livello precedente. Ciò significa che è ora una matrice di peso 3D, dove ogni è la matrice di peso 2D per un singolo neurone . E poi è un vettore per il sub-neurone nel neurone che contiene un peso per ogni neurone nel livello precedente .WiWjijWjkikji1

Allo stesso modo, in una rete neurale che sta di nuovo usando, diciamo, una funzione di attivazione sigmoidea, è un vettore con un bias per ogni neurone nello strato .bibjiji

Per fare questo con i sub-neuroni, abbiamo bisogno di una matrice di bias 2D per ogni livello , dove è il vettore con un bias per ogni subneuron nel neurone.biibjibjkikjth

Avere una matrice di peso e un vettore di polarizzazione per ciascun neurone rende quindi molto chiare le espressioni di cui sopra, sta semplicemente applicando i pesi di ciascun sub-neurone alle uscite da strato , quindi applicando i loro pregiudizi e prendendone il massimo.wjibjiwjkiai1i1bjki

Reti di funzioni a base radiale

Le reti di funzioni a base radiale sono una modifica delle reti neurali Feedforward, dove invece di utilizzare

aji=σ(k(wjkiaki1)+bji)

abbiamo un peso per nodo nel livello precedente (come normale) e anche un vettore medio e un vettore di deviazione standard per ogni nodo in il livello precedente.wjkikμjkiσjki

Quindi chiamiamo la nostra funzione di attivazione per evitare di confonderla con i vettori di deviazione standard . Ora per calcolare dobbiamo prima calcolare uno per ciascun nodo nel livello precedente. Un'opzione è usare la distanza euclidea:ρσjkiajizjki

zjki=(ai1μjki=(ai1μjki)2

Dove è l' elemento di . Questo non usa . In alternativa c'è la distanza di Mahalanobis, che presumibilmente funziona meglio:μjkithμjkiσjki

zjki=(ai1μjki)TΣjki(ai1μjki)

dove è la matrice di covarianza , definita come:Σjki

Σjki=diag(σjki)

In altre parole, è la matrice diagonale con in quanto elementi diagonali. Definiamo qui e come vettori di colonna perché questa è la notazione che viene normalmente utilizzata.Σjkiσjkiai1μjki

Questi stanno davvero solo dicendo che la distanza di Mahalanobis è definita come

zjki=(ai1μjki)2σjki

Dove è l' elemento di . Nota che deve essere sempre positivo, ma questo è un requisito tipico per la deviazione standard, quindi non è così sorprendente.σjkithσjkiσjki

Se lo si desidera, la distanza di Mahalanobis è abbastanza generale da poter definire la matrice di covarianza come altre matrici. Ad esempio, se la matrice di covarianza è la matrice dell'identità, la nostra distanza di Mahalanobis si riduce alla distanza euclidea. è piuttosto comune, ed è noto come distanza euclidea normalizzata .ΣjkiΣjki=diag(σjki)

Ad ogni modo, una volta scelta la nostra funzione di distanza, possiamo calcolare viaaji

aji=kwjkiρ(zjki)

In queste reti scelgono di moltiplicarsi per pesi dopo aver applicato la funzione di attivazione per motivi.

Descrive come creare una rete con funzione di base radiale multistrato, tuttavia, di solito esiste solo uno di questi neuroni e il suo output è l'output della rete. È disegnato come neuroni multipli perché ogni vettore medio e ogni vettore di deviazione standard di quel singolo neurone è considerato un "neurone" e quindi dopo tutti questi output c'è un altro livello che prende la somma di quei valori calcolati moltiplicata per i pesi, proprio come sopra. Dividerlo in due strati con un vettore di "somma" alla fine mi sembra strano, ma è quello che fanno.μjkiσjkiaji

Vedi anche qui .

Funzione di base radiale Funzioni di attivazione della rete

gaussiana

ρ(zjki)=exp(12(zjki)2)

gaussiana

Multiquadratic

Scegli un punto . Quindi calcoliamo la distanza da a :(x,y)(zji,0)(x,y)

ρ(zjki)=(zjkix)2+y2

Questo è da Wikipedia . Non è limitato e può avere un valore positivo, anche se mi chiedo se c'è un modo per normalizzarlo.

Quando , questo è equivalente a assoluto (con uno spostamento orizzontale ).y=0x

Multiquadratic

Multiquadratico inverso

Come quadratico, tranne che capovolto:

ρ(zjki)=1(zjkix)2+y2

Multiquadratico inverso

* Grafica dai grafici di intmath usando SVG .


12
Benvenuti nel CV. +6 questo è incredibilmente informativo. Spero che ne vedremo altri simili in futuro.
gung - Ripristina Monica

1
c'è anche la funzione lineare rettificata regolare di form e probit. log(1+exp(x))
Memming

Ok, penso di aver aggiunto Logit, Probit e Log-log complementare, tuttavia non ho una conoscenza approfondita di questi argomenti, quindi potrei aver frainteso la loro forma scritta. È corretto?
Phylliida,

3
Questo sarebbe un documento interessante con un bel elenco di riferimenti. Ad esempio arxiv.org/abs/1505.03654 . Non esitate a contattarmi se decidete di scrivere un documento e volete altri riferimenti.
Hunaphu,

9
qualcuno dovrebbe aggiornarlo con Elu, Leaky ReLU, PReLU e RReLU.
Viliami,

24

Uno di questi elenchi, anche se non molto esaustivo: http://cs231n.github.io/neural-networks-1/

Funzioni di attivazione comunemente utilizzate

Ogni funzione di attivazione (o non linearità ) accetta un singolo numero ed esegue una determinata operazione matematica fissa su di esso. Esistono diverse funzioni di attivazione che potresti incontrare in pratica:

inserisci qui la descrizione dell'immagineinserisci qui la descrizione dell'immagine

Sinistra: la non linearità sigmoidea schiaccia i numeri reali tra 0 [0,1] Destra: la non linearità tanh schiaccia i numeri reali tra [-1,1].

Sigma. La non linearità sigmoidea ha la forma matematica ed è mostrata nell'immagine sopra a sinistra. Come accennato nella sezione precedente, prende un valore reale e lo "schiaccia" nell'intervallo tra 0 e 1. In particolare, i numeri negativi grandi diventano 0 e i numeri positivi grandi diventano 1. La funzione sigmoid ha visto storicamente un uso frequente poiché ha una buona interpretazione come la frequenza di sparo di un neurone: dal non sparare affatto (0) allo sparo completamente saturo alla frequenza massima presunta (1). In pratica, la non linearità sigmoidea è recentemente caduta in disgrazia e raramente viene mai utilizzata. Ha due principali inconvenienti:σ(x)=1/(1+ex)

  • I sigmoidi saturano e uccidono i gradienti . Una proprietà molto indesiderabile del neurone sigmoideo è che quando l'attivazione del neurone si satura alla coda di 0 o 1, il gradiente in queste regioni è quasi zero. Ricordiamo che durante la backpropagation, questo gradiente (locale) verrà moltiplicato per il gradiente dell'uscita di questo gate per l'intero obiettivo. Pertanto, se il gradiente locale è molto piccolo, "ucciderà" effettivamente il gradiente e quasi nessun segnale fluirà attraverso il neurone fino ai suoi pesi e ricorsivamente ai suoi dati. Inoltre, è necessario prestare particolare attenzione quando si inizializzano i pesi dei neuroni sigmoidi per prevenire la saturazione. Ad esempio, se i pesi iniziali sono troppo grandi, la maggior parte dei neuroni si satura e la rete imparerà a malapena.
  • Le uscite Sigmoid non sono centrate sullo zero . Ciò è indesiderabile poiché i neuroni negli strati successivi di elaborazione in una rete neurale (ne parleremo presto) riceveranno dati non centrati sullo zero. Ciò ha implicazioni sulla dinamica durante la discesa del gradiente, perché se i dati che entrano in un neurone sono sempre positivi (es. elementally in )), allora il gradiente sui pesi durante la backpropagazione diventerà tutti sono positivi o tutti negativi (a seconda del gradiente dell'intera espressione x>0f=wTx+bwf). Ciò potrebbe introdurre dinamiche a zig-zag indesiderabili negli aggiornamenti del gradiente per i pesi. Tuttavia, si noti che una volta sommati questi gradienti attraverso una serie di dati, l'aggiornamento finale per i pesi può avere segni variabili, mitigando in qualche modo questo problema. Pertanto, questo è un inconveniente ma ha conseguenze meno gravi rispetto al problema di attivazione saturo sopra.

Tanh. La non linearità del tanh è mostrata nell'immagine in alto a destra. Schiaccia un numero a valore reale nell'intervallo [-1, 1]. Come il neurone sigmoideo, le sue attivazioni sono saturate, ma a differenza del neurone sigmoideo la sua uscita è centrata sullo zero. Pertanto, in pratica la non linearità del tanh è sempre preferita alla non linearità sigmoidea. Si noti inoltre che il neurone tanh è semplicemente un neurone sigmoideo in scala, in particolare vale quanto segue: .tanh(x)=2σ(2x)1

inserisci qui la descrizione dell'immagineinserisci qui la descrizione dell'immagine

Sinistra: funzione di attivazione Unità lineare rettificata (ReLU), che è zero quando x <0 e quindi lineare con pendenza 1 quando x> 0. A destra: un diagramma di Krizhevsky et al. (pdf) documento che indica il miglioramento 6x della convergenza con l'unità ReLU rispetto all'unità tanh.

Relu. L'unità lineare rettificata è diventata molto popolare negli ultimi anni. Calcola la funzione . In altre parole, l'attivazione è semplicemente a soglia zero (vedi immagine sopra a sinistra). Esistono diversi pro e contro nell'utilizzo delle ReLU:f(x)=max(0,x)

  • (+) Si è scoperto che accelera notevolmente (ad esempio un fattore 6 in Krizhevsky et al. ) La convergenza della discesa gradiente stocastica rispetto alle funzioni sigmoide / tanh. Si sostiene che ciò sia dovuto alla sua forma lineare e non satura.
  • (+) Rispetto ai neuroni tanh / sigmoidi che comportano operazioni costose (esponenziali, ecc.), La ReLU può essere implementata semplicemente portando a zero una matrice di attivazioni.
  • (-) Sfortunatamente, le unità ReLU possono essere fragili durante l'allenamento e possono "morire". Ad esempio, un grande gradiente che fluisce attraverso un neurone ReLU potrebbe far aggiornare i pesi in modo tale che il neurone non si attiverà mai più su nessun punto dati. Se ciò accade, il gradiente che fluisce attraverso l'unità sarà per sempre zero da quel punto in poi. Cioè, le unità ReLU possono morire irreversibilmente durante l'allenamento poiché possono essere eliminate dal collettore di dati. Ad esempio, potresti scoprire che fino al 40% della tua rete può essere "morto" (cioè neuroni che non si attivano mai nell'intero set di dati di allenamento) se il tasso di apprendimento è impostato su un valore troppo alto. Con una corretta impostazione del tasso di apprendimento, questo è meno frequentemente un problema.

Perdita ReLU. Perdite ReLU sono un tentativo di risolvere il problema "morire ReLU". Invece che la funzione sia zero quando x <0, una ReLU che perde avrà invece una piccola pendenza negativa (di 0,01 o giù di lì). Ossia, la funzione calcola dove è una piccola costante. Alcune persone segnalano il successo con questa forma di funzione di attivazione, ma i risultati non sono sempre coerenti. La pendenza nella regione negativa può anche essere trasformata in un parametro di ciascun neurone, come visto nei neuroni PReLU, introdotto in Delving Deep in Rectifiers , da Kaiming He et al., 2015. Tuttavia, la coerenza del beneficio tra i compiti è attualmente poco chiaro.f(x)=1(x<0)(αx)+1(x>=0)(x)α

inserisci qui la descrizione dell'immagine

Maxout . Sono stati proposti altri tipi di unità che non hanno la forma funzionale cui viene applicata una non linearità sul prodotto punto tra pesi e dati. Una scelta relativamente popolare è il neurone Maxout (introdotto di recente da Goodfellow et al. ) Che generalizza la ReLU e la sua versione che perde. Il neurone Maxout calcola la funzione . Si noti che sia ReLU che Leaky ReLU sono un caso speciale di questo modulo (ad esempio, per ReLU abbiamof(wTx+b)max(w1Tx+b1,w2Tx+b2)w1,b1=0). Il neurone Maxout pertanto gode di tutti i vantaggi di un'unità ReLU (regime di funzionamento lineare, nessuna saturazione) e non presenta i suoi svantaggi (ReLU morente). Tuttavia, a differenza dei neuroni ReLU, raddoppia il numero di parametri per ogni singolo neurone, portando a un elevato numero totale di parametri.

Questo conclude la nostra discussione sui tipi più comuni di neuroni e sulle loro funzioni di attivazione. Come ultimo commento, è molto raro mescolare e abbinare diversi tipi di neuroni nella stessa rete, anche se non vi è alcun problema fondamentale nel farlo.

TLDR : " Che tipo di neurone dovrei usare? " Usa la non linearità ReLU, fai attenzione alle tue percentuali di apprendimento e probabilmente monitora la frazione di unità "morte" in una rete. Se questo ti riguarda, prova Leaky ReLU o Maxout. Non usare mai sigmoid. Prova tanh, ma aspettati che funzioni peggio di ReLU / Maxout.


Licenza:


la licenza MIT (MIT)

Copyright (c) 2015 Andrej Karpathy

L'autorizzazione è concessa, gratuitamente, a chiunque ottenga una copia di questo software e dei file di documentazione associati (il "Software"), per trattare il Software senza restrizioni, inclusi senza limitazione i diritti di utilizzo, copia, modifica, unione , pubblicare, distribuire, concedere in licenza e / o vendere copie del Software e consentire alle persone a cui il Software è fornito di farlo, fatte salve le seguenti condizioni:

L'avviso di copyright di cui sopra e questo avviso di autorizzazione devono essere inclusi in tutte le copie o parti sostanziali del Software.

IL SOFTWARE È FORNITO "COSÌ COM'È", SENZA ALCUN TIPO DI GARANZIA, ESPRESSA O IMPLICITA, COMPRESO MA NON LIMITATO ALLE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ A UNO SCOPO PARTICOLARE E SENZA VIOLAZIONE. IN NESSUN CASO GLI AUTORI OI TITOLARI DEL COPYRIGHT SARANNO RESPONSABILI DI QUALSIASI RECLAMO, DANNO O ALTRO RESPONSABILITÀ, SE IN AZIONE DI CONTRATTO, TORT O ALTRO, DERIVANTE DA, FUORI O IN CONNESSIONE CON IL SOFTWARE O L'UTILIZZO O ALTRE OFFERTE NEL SOFTWARE.*

Altri collegamenti:


10

Non penso che esista un elenco di pro e contro. Le funzioni di attivazione dipendono fortemente dall'applicazione e dipendono anche dall'architettura della rete neurale ( qui ad esempio si vede l'applicazione di due funzioni softmax, simili a quella sigmoidea).

Puoi trovare alcuni studi sul comportamento generale delle funzioni, ma penso che non avrai mai un elenco definito e definitivo (cosa chiedi ...).

Sono ancora uno studente, quindi segnalo quello che so finora:

  • qui trovi alcuni pensieri sui comportamenti di tanh e sigmoidi con backpropagation. I tanh sono più generici, ma i sigmoidi ... (ci sarà sempre un "ma")
  • In Deep Sparse Rectifier Neural Networks di Glorot Xavier et al, affermano che le unità di Raddrizzatore sono biologicamente più plausibili e hanno prestazioni migliori delle altre (sigmoide / tanh)

Questa è la risposta "corretta". Si può produrre un elenco ma i pro ei contro dipendono completamente dai dati. In effetti, l'apprendimento delle funzioni di attivazione è molto più ragionevole in teoria. La ragione per cui non c'è molta ricerca su questo è che il sigmoid "funziona". Alla fine, il tuo unico guadagno è la velocità di convergenza che spesso non è importante
runDOSrun

4

Solo per completezza della grande risposta di Danielle, ci sono altri paradigmi, in cui si 'casualmente ruota la ruota' sui pesi e / o sul tipo di attivazioni: macchine a stato liquido , macchine per l'apprendimento estremo e reti di stati a eco .

Un modo di pensare a queste architetture: il serbatoio è una sorta di kernel come nelle SVM o un grande strato nascosto in un semplice FFNN in cui i dati vengono proiettati su un po 'di iperspazio. Non esiste un apprendimento effettivo, il serbatoio viene rigenerato fino a quando non viene raggiunta una soluzione soddisfacente.

Vedi anche questa bella risposta .


2

Un articolo che esamina le recenti funzioni di attivazione è disponibile in

" Funzioni di attivazione: confronto delle tendenze nella pratica e nella ricerca per l'apprendimento profondo " di Chigozie Enyinna Nwankpa, Winifred Ijomah, Anthony Gachagan e Stephen Marshall

Le reti neurali profonde sono state utilizzate con successo in diversi domini emergenti per risolvere problemi complessi del mondo reale con architetture forse più approfondite (DL), attualmente in fase di sviluppo. Per raggiungere queste prestazioni all'avanguardia, le architetture DL utilizzano funzioni di attivazione (AF) per eseguire calcoli diversi tra i livelli nascosti e i livelli di output di una determinata architettura DL. Questo documento presenta un sondaggio sugli AF esistenti utilizzati nelle applicazioni di apprendimento profondo e mette in evidenza le recenti tendenze nell'uso delle funzioni di attivazione per le applicazioni di apprendimento profondo. La novità di questo documento è che raccoglie la maggior parte degli AF usati in DL e delinea le tendenze attuali nelle applicazioni e nell'uso di queste funzioni in implementazioni pratiche di deep learning contro i risultati della ricerca all'avanguardia. Questa raccolta aiuterà a prendere decisioni efficaci nella scelta della funzione di attivazione più adatta e appropriata per una determinata applicazione, pronta per la distribuzione. Questo documento è tempestivo perché la maggior parte degli articoli di ricerca su AF mette in evidenza lavori e risultati simili mentre questo documento sarà il primo, a compilare le tendenze delle applicazioni AF in pratica contro i risultati della ricerca dalla letteratura, trovati finora nella ricerca di apprendimento profondo.

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.