Rete neurale: per la classificazione binaria utilizzare 1 o 2 neuroni in uscita?


26

Supponiamo di voler fare una classificazione binaria (qualcosa appartiene alla classe A o alla classe B). Esistono alcune possibilità per farlo nel livello di output di una rete neurale:

  • Usa 1 nodo di output. L'uscita 0 (<0,5) è considerata in classe A e 1 (> = 0,5) è considerata in classe B (in caso di sigmoide)

  • Utilizzare 2 nodi di output. L'input appartiene alla classe del nodo con il valore / probabilità più alto (argmax).

Ci sono documenti scritti che (anche) discutono di questo? Quali sono le parole chiave specifiche su cui cercare?

Questa domanda è già stata posta in precedenza su questo sito, ad es. Vedere questo link senza risposte reali. Ho bisogno di fare una scelta (tesi di laurea), quindi voglio ottenere informazioni sui pro / contro / limiti di ogni soluzione.


Penso che l'OP della domanda collegata abbia un buon punto, l'unica differenza è che la scelta 2 ha un numero maggiore di parametri, è più flessibile ma più incline a un adattamento eccessivo.
dontloo,

1
In Udacity ML Nanodegree ho appreso che è meglio usare un nodo di output se il risultato si esclude a vicenda semplicemente perché la rete ha meno errori che può fare. Penso che non ci siano professionisti nell'usare 2 nodi di output in quel caso, ma non ho prove scientifiche per questo
CodingYourLife

Risposte:


25

Nel secondo caso probabilmente stai scrivendo della funzione di attivazione di softmax. Se questo è vero, il sigmoid è solo un caso speciale della funzione softmax. È facile da mostrare.

y=11+e-X=11+1eX=1eX+1eX=eX1+eX=eXe0+eX

Come vedi sigmoid è lo stesso di softmax. Puoi pensare di avere due uscite, ma una di esse ha tutti i pesi uguali a zero e quindi la sua uscita sarà sempre uguale a zero.

Quindi la scelta migliore per la classificazione binaria è quella di utilizzare un'unità di output con sigmoid invece di softmax con due unità di output, perché si aggiornerà più velocemente.


Quando dici che uno di loro ha tutti i pesi zero, vuoi dire che il modello non ha nemmeno preso in considerazione una classe durante l'allenamento? In pratica, possiamo davvero addestrare questo classificatore binario con una sola classe di dati di addestramento?
deadcode

X>0X<0X0

1
Nota che ci sono soluzioni degenerate del modulo exp(x+alpha) / (exp(alpha) + exp(x+alpha))- in realtà un numero infinito di esse - che producono tutte lo stesso risultato di classificazione di quello annotato con pesi tutti 0. I pesi probabilmente non si alleneranno per essere tutti zero, ma si alleneranno invece per essere degeneri con la soluzione che ha tutti i pesi 0. Evita le soluzioni degenerate (inutili e dispendiose) usando solo un neurone in uscita, a quanto pare.
Dan Nissenbaum il

2

Gli algoritmi di machine learning come i classificatori modellano statisticamente i dati di input, qui, determinando le probabilità di input appartenenti a diverse categorie. Per un numero arbitrario di classi, normalmente un modello softmax viene aggiunto al modello in modo che gli output abbiano proprietà probabilistiche in base alla progettazione:

y=SoftMax(un')1Σioe-un'io×[e-un'1,e-un'2,...,e-un'n]

0yio1 per tutti io
y1+y2+...+yn=1

un'

Questo è perfettamente valido per due classi, tuttavia, si può anche usare un neurone (invece di due) dato che il suo output soddisfa:

0y1 per tutti gli ingressi.
un'y

sigma(un')σ(un')11+e-un'

proprietà matematiche utili (differenziazione, essendo compreso tra 0 e 1, ecc.), efficienza computazionale e avente la giusta pendenza tale che l'aggiornamento dei pesi della rete avrebbe una piccola ma misurabile variazione nell'output a fini di ottimizzazione.

Conclusione

Non sono sicuro se il ragionamento di @ itdxer che mostra softmax e sigmoid sia equivalente se valido, ma ha ragione a scegliere 1 neurone in contrasto con 2 neuroni per i classificatori binari poiché sono necessari meno parametri e calcolo. Sono stato anche criticato per l'uso di due neuroni per un classificatore binario poiché "è superfluo".

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.