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

11

Ogni esempio di rete neurale per il riconoscimento di immagini che 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 sia probabilmente per semplicità di spiegazione, ma mi chiedo come una tale rete neurale possa essere programmata per dare un output più specifico. Ad esempio, diciamo che stavo 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 ciò deve essere possibile, ma ho difficoltà a capire come. Sembra che sia dovuto all'algoritmo di addestramento di backpropogation dell'errore, mentre ti alleni su un nodo di uscita (cioè "Questo è un cane") e i pesi dei neuroni sono cambiati, quindi lo stato ideale per un altro nodo di uscita che hai precedentemente addestrato (cioè, "Questo è un uccello") inizierà a deviare, e viceversa. Quindi addestrare la rete a riconoscere una categoria potrebbe sabotare qualsiasi allenamento fatto per un'altra categoria, limitandoci quindi a un semplice "Sì" o "No".

Questo rende impossibile riconoscere un simile riconoscimento? O sto fraintendendo l'algoritmo? Le uniche due cose che posso pensare sono:

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

  • Crea una sorta di metodologia formativa ridicolmente complicata che richiederebbe una matematica incredibilmente avanzata e produrrebbe in qualche modo uno stato di peso neurone ideale per tutti i possibili output (in altre parole, insert math magic here ).

(Nota a margine 1: sto osservando specificamente i percettroni multistrato come una sorta di rete neurale.)

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

    
posta asteri 18.02.2013 - 16:01
fonte

3 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 sono anche utilizzate nel riconoscimento della scrittura a mano, in cui l'output può essere uno di un intero intervallo di caratteri: l'intero alfabeto, i numeri e la punteggiatura.

Per concentrarti maggiormente sul tuo esempio, riconoscendo gli animali, direi che è possibile. È principalmente un'estensione dell'esempio di riconoscimento della calligrafia; stai riconoscendo le caratteristiche di una forma e confrontandole 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 solitamente mappata su un insieme di linee e curve - semplice e piacevole. Le facce degli animali sono difficili da riconoscere, quindi hai bisogno della logica di elaborazione delle immagini per estrarre elementi come occhi, naso, bocca, contorno del cranio ruvido, ecc. Tuttavia, hai solo chiesto se è possibile, non come, quindi la risposta è sì.

La tua migliore scommessa è 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 relative alla dimensione relativa, alla forma e alla spaziatura delle varie caratteristiche del viso) viene confrontato con un "prototipo" o modello che definisce quella classe di cose. Se la differenza tra l'input sensoriale e il modello memorizzato è inferiore a una certa soglia (definita da un "parametro di vigilanza"), si presume che l'oggetto osservato sia un membro del gruppo rappresentato dal modello; se non è possibile trovare alcuna corrispondenza, il sistema dichiara che si tratta di un tipo mai visto in precedenza. La cosa bella di questo tipo di rete è che quando riconosce che un oggetto è, per esempio, un cavallo, può imparare di più sul riconoscimento dei cavalli in modo che possa distinguere tra, ad esempio, un cavallo in piedi e un cavallo che dorme, ma quando vede qualcosa di nuovo, può iniziare a conoscere la nuova cosa fino a quando può dire "Non so di cosa si tratta, ma so che è la stessa cosa di questa altra cosa che ho visto in precedenza".

EDIT:

(Nell'interesse della completa divulgazione: sto ancora ricercando personalmente questo per un progetto, quindi la mia conoscenza è ancora incompleta e forse un po 'spenta nei luoghi.)

how does this tie in with backpropogation setting weights for one output node ruining the weights for another, previously-trained node?

Da quello che ho letto finora, il paradigma ART è leggermente diverso; è diviso in due sezioni: una che impara gli input e una che impara le uscite per loro. Ciò significa che quando si imbatte in un set di input che non corrisponde, un neurone non impegnato viene attivato e regolato in modo da corrispondere all'ingresso, in modo tale che il neurone attiverà una corrispondenza la volta successiva. I neuroni in questo strato sono solo per il riconoscimento. Una volta che questo strato trova una corrispondenza, gli input vengono passati al livello sottostante, che è quello che calcola la risposta. Per la tua situazione, questo strato sarebbe molto semplice. Il sistema che sto guardando è imparare a guidare. Questo è in realtà due tipi di apprendimento; uno sta imparando a guidare in una varietà di situazioni, e l'altro sta imparando a riconoscere la situazione. Ad esempio, devi imparare come guidare su una strada scivolosa, ma devi anche imparare a sentire quando la strada su cui stai guidando è scivolosa.

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

    
risposta data 18.02.2013 - 16:36
fonte
3

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

It seems like due to the training algorithm of backpropogation of error, as you train up one exit node (i.e., "This is a dog") and the weights of the neurons are changed, then the ideal state for another exit node that you previously trained (i.e., "This is a bird") will begin to deviate, and vice versa. So training the network to recognize one category would sabotage any training done for another category, thus limiting us to a simple "Yes" or "No" design.

Bene, penso che la tua ipotesi sia sbagliata qui; se capisco correttamente, hai un NN con un output per categoria che stai cercando di classificare. Idealmente, ti piacerebbe che funzionassero in modo quasi indipendente, in modo che la classificazione "cane" e "uccello" non sparasse contemporaneamente. Quindi, durante l'allenamento, ciò che accadrà è che quando si sta addestrando l'NN con un risultato "cane", il backpropagation proverà a garantire che "l'uccello" e altri neuroni di uscita non producano falsi positivi. Quindi, teoricamente, funzionerà benissimo, contrariamente al tuo commento; il rinforzo di un risultato negativo per "uccello" è corretto.

Tuttavia, il tuo problema sarà la scalabilità di questo approccio. Man mano che si aggiungono altre categorie alla rete, la formazione diventerà più complessa in un modo almeno lineare (ma probabilmente molto peggiore). Per questo motivo, molte persone usano un approccio in cui i NN individuali vengono formati per ogni categoria; questo mantiene le cose abbastanza semplici e relativamente scalabili. Il meta livello di come sono combinati dipende da te. Potresti semplicemente passare in rassegna tutti gli NN e vedere quelli che producono risultati positivi, potresti creare NN euristici di medio livello che cercano di restringere il tipo di animale per te, oppure potresti 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; puoi lasciare che un gigantesco NN lo capisca da solo (ma potrebbe non funzionare bene con la tecnologia odierna), oppure puoi architettare i tuoi NN a mano per riflettere questo, il che potrebbe produrre risultati migliori.

EDIT: per rispondere alla domanda del titolo, ovviamente gli NN possono fornire più risposte sì / no. Nei modelli "standard", ciascun neurone di uscita genera di solito sì / no (sebbene questo comportamento possa essere modificato, se tu fossi così inclinato), 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 in qualsiasi modo tu voglia. Un esempio abbastanza visivo di output non binari sarebbe una Mappa auto-organizzante , che in genere ha un output 2D.

    
risposta data 20.02.2013 - 07:03
fonte
1

Risposta breve e non molto rigida: sì, ogni NN può fornire più informazioni che solo yes o no . È dovuto alla soglia. Se il peso è superiore a qualche soglia, la risposta è una delle classi di classificazione, se è inferiore la risposta è la seconda classe di classificazione. In sostanza:

    0..threshold 
    threshold..1

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

    
risposta data 18.02.2013 - 19:12
fonte

Leggi altre domande sui tag