Come risolvere questo problema - Rete neurale? Fuzzy? Altro?

5

Ciao, ho un problema di programmazione che vorrei risolvere usando una tecnica di intelligenza artificiale. Non so davvero da dove cominciare. Vorrei qualche consiglio su quale metodologia seguire.

Diciamo che ho 10.000 immagini di persone a caso, e ho bisogno di rilevare le persone anziane nelle immagini. Potrei avere algoritmi come rilevatore di rughe, rilevatore di occhiali, rilevatore di bastoncelli, rivelatore di denti mancanti, rilevatore di skateboard, rilevatore di Playstation, ecc. Ogni algoritmo esegue una scansione indipendentemente e emette un numero da 0 a 10 sulla probabilità che pensa che l'immagine contenga articolo. Supponiamo che funzioni. Potrebbero esserci 100 diversi algoritmi.

Il mio set di 10.000 immagini sarebbe diviso da un essere umano in due gruppi, quelli che contengono una persona anziana e quelli che non lo fanno.

Ora ho bisogno di sviluppare un sistema che tenga la serie di valori dai moduli dell'algoritmo, quando viene data un'immagine da analizzare e calcola un singolo valore che rappresenta la probabilità che un'immagine contenga o meno persone anziane.

Durante l'allenamento mi piacerebbe che fosse in grado di creare automaticamente regole analizzando tutti gli output degli algoritmi. Ad esempio:

  • Se il rilevatore di rughe, il rilevatore di occhiali, il rilevatore di bastoni da passeggio e il rilevatore di denti mancanti emettono un numero elevato, emettono un numero elevato.

  • Se i rilevatori di rughe, occhiali, bastone e denti sono alti, ma anche i rilevatori di playstation e skateboard sono alti, l'output non è né basso né alto.

  • il rilevatore di mani e il rilevatore di indumenti dovrebbero essere essenzialmente ignorati in quanto i vecchi e i giovani hanno entrambi (si spera)

Quale tipo di tecnologia dovrei implementare per il sistema di creazione automatica delle regole? Questo è meglio risolto da un sistema di rete neurale? Un sistema a logica fuzzy? Qualcos'altro?

Grazie per qualsiasi consiglio.

    
posta TripleAntigen 06.10.2013 - 03:05
fonte

2 risposte

2

Dai un'occhiata ad ada boost (richiamo adattativo). L'idea è di utilizzare un classificatore debole indipendente (i tuoi rilevatori) e combinarli in modo intelligente. Raramente va così:

  • Cerca innanzitutto di valutare i diversi rivelatori per rilevare e utilizzare una combinazione lineare ottimale di essi per classificare i dati.
  • Quindi cerca di trovare un'altra combinazione in grado di fornire una migliore discriminazione sui casi di errore del primo passaggio
  • Continua così per qualsiasi numero di pass che vuoi

Quindi hai n combinazione applicata in cascata, che ti dà una versione "potenziata" dei tuoi rivelatori. Ogni passaggio sarà espresso come 0.25 * wrinkle - 0.1 * playstation + ... . Ora penso che tu abbia bisogno di molti rivelatori per far risplendere questo metodo.

Vedi qui per un esempio di rilevamento di volti usando adaboost.

    
risposta data 06.10.2013 - 22:15
fonte
2

Sembra che questo sarebbe adatto per una rete neurale, probabilmente un tipo di feedforward standard.

Non sono sicuro di quanto tu sappia sulle reti neurali, ma le tue "regole" che scopre non saranno in un formato leggibile dall'uomo. Quindi se vuoi eseguire le immagini e ordinarle, lo farà; ma se stai cercando di ottenere un elenco di regole che puoi vedere, probabilmente stai meglio scegliendo un algoritmo diverso.

Hai menzionato in un commento che ti piacerebbe vedere quali rivelatori non stanno contribuendo molto. Dopo che la rete è stata addestrata, puoi guardare i pesi e vedere quali input non stanno facendo molto. In alternativa credo che ci siano alcune varianti di reti neurali che possono automaticamente sfoltire gli input; non la mia area di conoscenza, ma vale la pena esaminare.

Devo dire che le reti neurali possono essere poco pratici, c'è sempre la possibilità che non facciano quello che ti aspetti, ma da quello che posso vedere in questo caso è molto probabile che funzioni.

    
risposta data 06.10.2013 - 21:59
fonte