Una rete neurale può fornire più di risposte "sì" o "no"?


11

Ogni esempio di rete neurale per il riconoscimento di immagini di cui ho letto produce una semplice risposta "sì" o "no". Un nodo di uscita corrisponde a "Sì, questo è un volto umano" e uno corrisponde a "No, questo non è un volto umano".

Capisco che questo è probabilmente per semplicità di spiegazione, ma mi chiedo come una tale rete neurale possa essere programmata per fornire un output più specifico. Ad esempio, supponiamo che stia classificando gli animali. Invece di dire "Animale" o "Non un animale", vorrei risposte come "Cane", "Pesce", "Uccello", "Serpente", ecc., Con un nodo di uscita finale "Non un animale / I" non riconoscerlo ".

Sono sicuro che questo deve essere possibile, ma ho difficoltà a capire come. Sembra dovuto all'algoritmo di addestramento della backpropogation dell'errore, mentre ti alleni un nodo di uscita (cioè "Questo è un cane") e i pesi dei neuroni vengono cambiati, quindi lo stato ideale per un altro nodo di uscita che in precedenza addestrato (cioè "Questo è un uccello") inizierà a deviare e viceversa. Quindi addestrare la rete a riconoscere una categoria significherebbe sabotare qualsiasi addestramento fatto per un'altra categoria, limitandoci così a un semplice design "Sì" o "No".

Questo rende impossibile un simile riconoscimento? O sto fraintendendo l'algoritmo? Le uniche due cose che mi vengono in mente sono:

  • O potremmo formare una rete neurale per ogni cosa che vogliamo classificata e in qualche modo usarla per costruire una super-rete più grande (quindi, ad esempio, una rete per "cane", una rete per "uccello", ecc., Che in qualche modo aggiungere insieme per creare la super-rete per "animali"); o,

  • Crea una sorta di metodologia di allenamento ridicolmente complicata che richiederebbe una matematica incredibilmente avanzata e in qualche modo produrrebbe uno stato di peso neurone ideale per tutte le possibili uscite (in altre parole insert math magic here).

(Nota a margine 1: guardo in particolare ai percetroni multistrato come una specie di rete neurale.)

(Nota a margine 2: per la prima "possibile soluzione" puntata, avere ogni specifica rete neurale e iterare attraverso di esse fino a quando non riceviamo una risposta "Sì" non è abbastanza buona. So che potrebbe essere fatto abbastanza facilmente, ma è semplice funzionale programmazione piuttosto che apprendimento automatico. Voglio sapere se è possibile avere una rete neurale per alimentare le informazioni e ricevere la risposta appropriata.)

Risposte:


15

Per rispondere solo al tuo titolo, sì. Le reti neurali possono dare risposte non booleane. Ad esempio, le reti neurali sono state utilizzate per prevedere i valori del mercato azionario, che è una risposta numerica e quindi più di un semplice sì / no. Le reti neurali vengono anche utilizzate nel riconoscimento della grafia, in cui l'output può essere uno di un intero intervallo di caratteri: l'intero alfabeto, i numeri e la punteggiatura.

Per concentrarmi maggiormente sul tuo esempio - riconoscere gli animali - direi che è possibile. È principalmente un'estensione dell'esempio di riconoscimento della grafia; stai riconoscendo le caratteristiche di una forma e le stai confrontando con forme "ideali" per vedere quali corrispondenze. I problemi sono tecnici, piuttosto che teorici. La scrittura a mano, quando viene eseguita attraverso il software di riconoscimento, viene in genere mappata su un insieme di linee e curve: piacevole e semplice. I volti degli animali sono più difficili da riconoscere, quindi avresti bisogno di una logica di elaborazione delle immagini per estrarre elementi come occhi, naso, bocca, ruvido contorno del cranio ecc. Tuttavia, hai solo chiesto se è possibile, non come, quindi la risposta è sì.

La tua scommessa migliore è probabilmente quella di dare un'occhiata a cose come la teoria della risonanza adattiva. Il principio generale è che l'input sensoriale (in questo caso, le metriche sulla dimensione, forma e spaziatura relative delle varie caratteristiche facciali) viene confrontato con un "prototipo" o modello che definisce quella classe di cose. Se la differenza tra l'ingresso sensoriale e il modello ricordato è al di sotto di una certa soglia (come definita da un "parametro di vigilanza"), si presume che l'oggetto da osservare sia un membro del gruppo rappresentato dal modello; se non viene trovata alcuna corrispondenza, il sistema dichiara che è un tipo mai visto prima. La cosa bella di questo tipo di rete è che quando riconosce che un oggetto è, diciamo, un cavallo, può imparare di più sul riconoscimento dei cavalli in modo da poter dire la differenza tra, diciamo,

MODIFICARE:

(Nell'interesse di una completa divulgazione: sto ancora ricercando questo me stesso per un progetto, quindi la mia conoscenza è ancora incompleta e forse un po 'fuori posto.)

in che modo questo si collega con i pesi di impostazione della backpropogation per un nodo di output rovinando i pesi per un altro nodo precedentemente addestrato?

Da quello che ho letto finora, il paradigma ART è leggermente diverso; è diviso in due sezioni: una che impara gli input e una che impara gli output per loro. Ciò significa che quando si imbatte in un set di input che non corrisponde, un neurone senza commit viene attivato e regolato in modo da corrispondere all'input, in modo tale che il neurone innescherà una corrispondenza la volta successiva. I neuroni in questo strato sono solo per il riconoscimento. Una volta che questo livello trova una corrispondenza, gli input vengono passati al livello sottostante, che è quello che calcola la risposta. Per la tua situazione, questo livello sarebbe probabilmente molto semplice. Il sistema che sto guardando sta imparando a guidare. In realtà si tratta di due tipi di apprendimento; uno sta imparando a guidare in una varietà di situazioni e l'altro sta imparando a riconoscere la situazione. Per esempio,

Questa idea di apprendere nuovi input senza rovinare comportamenti precedentemente appresi è nota come dilemma di stabilità / plasticità. Una rete deve essere abbastanza stabile per mantenere il comportamento appreso, ma abbastanza plastica da poter insegnare cose nuove quando le circostanze cambiano. Questo è esattamente ciò che le reti ART intendono risolvere.


Grazie per l'ottima risposta! Quindi, in che modo ciò si collega ai pesi di impostazione della backpropogation per un nodo di output rovinando i pesi per un altro nodo precedentemente addestrato? O sto pensando a questo nel modo sbagliato?
asteri,

@Jeff ho aggiunto un po 'alla mia risposta. Non è particolarmente dettagliato, temo - lo sto ancora imparando da solo. Tuttavia, la tua domanda si riferisce al dilemma di stabilità / plasticità, in quanto vuoi essere in grado di formare una rete per riconoscere qualcosa di nuovo senza dimenticare come riconoscere qualcosa che già conosce, e la teoria della risonanza adattiva è mirata proprio a risolvere quel problema, quindi probabilmente vale la pena esaminarlo.
anaximander,

3

La risposta di anaximander è abbastanza buona, ho pensato di commentare questa parte della tua domanda:

Sembra dovuto all'algoritmo di addestramento della backpropogation dell'errore, mentre ti alleni un nodo di uscita (cioè "Questo è un cane") e i pesi dei neuroni vengono cambiati, quindi lo stato ideale per un altro nodo di uscita che in precedenza addestrato (cioè "Questo è un uccello") inizierà a deviare e viceversa. Quindi addestrare la rete a riconoscere una categoria significherebbe sabotare qualsiasi addestramento fatto per un'altra categoria, limitandoci così a un semplice design "Sì" o "No".

Bene, penso che il tuo presupposto sia sbagliato qui; se ho capito bene, hai un NN con un output per categoria che stai cercando di classificare. Idealmente, ti piacerebbe che funzionassero quasi in modo indipendente, in modo che la classificazione "cane" e "uccello" non sparino allo stesso tempo. Quindi davvero, durante l'allenamento, ciò che accadrà è che quando si allena l'NN con un risultato "cane", la backpropagazione cercherà di garantire che "l'uccello" e altri neuroni di output non producano falsi positivi. Quindi, teoricamente, funzionerà perfettamente, contrariamente al tuo commento; il rafforzamento di un risultato negativo per "uccello" è corretto.

Tuttavia, il tuo problema sarà la scalabilità di questo approccio. Man mano che aggiungi più categorie alla rete, la formazione diventerà più complessa almeno in modo lineare (ma probabilmente molto peggio). Per questo motivo, molte persone usano un approccio in cui le singole NN sono addestrate per ogni categoria; questo mantiene le cose abbastanza semplici e relativamente scalabili. Il meta-livello di come questi sono combinati dipende da te. Potresti semplicemente passare in rassegna tutti gli NN e vedere quali producono output positivi, potresti creare NN euristici di medio livello che provano a restringere il tipo di animale per te o potresti anche avere un NN gigante che combina i singoli NN come neuroni . In sostanza, quello che sto cercando di dire è che hai una conoscenza preliminare della struttura del problema: le classificazioni individuali sono molto probabilmente distinte l'una dall'altra;

EDIT: per rispondere alla domanda sul titolo, ovviamente le NN possono fornire più di risposte sì / no. Nei modelli "standard", ogni neurone in uscita genera tipicamente sì / no (anche se questo comportamento potrebbe essere modificato, se si fosse così propensi), rappresentando un bit di informazione; ma proprio come con il tuo computer, i bit possono essere combinati per fornire una gamma di valori discreti, che possono essere interpretati come desideri. Un esempio abbastanza visivo di output non binari sarebbe una mappa auto-organizzante , che in genere ha un output 2D.


Grazie per la tua risposta. Sapevo di poter avere tutti i nodi di output che desideravo, ma ero preoccupato che, a causa della natura della backpropogation dell'algoritmo di errore (adeguando tutti i pesi in base al risultato desiderato), l'apprendimento di una classificazione avrebbe disimparato un altro.
asteri,

1

Risposta breve e non molto rigida: sì, ogni NN può fornire più informazioni di un semplice yeso no. È dovuto alla soglia. Se i pesi sono superiori a una certa soglia, la risposta è una delle classi di classificazione, se è inferiore la risposta è la seconda classe di classificazione. Fondamentalmente:

    0..threshold 
    threshold..1

L'output di Neuron è nell'intervallo [0..1] (o [-1,1] dipende) e non si desidera ottenere risposta se l'output è inferiore o superiore alla soglia ma l'output (output può facilmente convertirsi in intervallo 0..1 e questo significa%)

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.