Tipo di intelligenza artificiale per affrontare questo problema?

6

L'ho postato su StackOverflow ma voglio ricevere i tuoi consigli e un utente su overflow consigliato lo postò qui.

Dirò fin dall'inizio che non sono un programmatore, ho una conoscenza superficiale di diversi tipi di IA e sono solo un uomo d'affari che costruisce un'app web.

Comunque, l'app web su cui sto investendo per lo sviluppo è per un mio hobby. Ci sono molti produttori, produttori di prodotti, produttori di upgrade e addon ecc. Per hardware / prodotti nell'industria di questo hobby. Attualmente sono in procinto di costruire una piattaforma di crowdsourcing per le persone che sono ben informate di entrare e contrassegnare la compatibilità tra quelle parti come non sempre chiara se sono ad esempio:

Il produttore A crea un prodotto di classe "A", e il produttore B esegue l'aggiornamento / parte che generalmente accompagna i prodotti di classe "A", ma per un motivo o per un altro non compatibile con il particolare prodotto di classe "A" del produttore A. / p>

Tuttavia, una buona porzione (> 60% -70%) dei prodotti / parti nel database può avere la loro compatibilità dedotta dalle loro proprietà,

Ad esempio:

La parte 1 è di tipo "A" con il ricevitore "X" mm e la parte 2 è anche di tipo "A" con interfaccia "X" mm e quindi le due parti sono compatibili.

o

La parte 1 è un ingranaggio da 8mm, quindi tutte le boccole da 8mm di qualsiasi produttore sono compatibili con la parte 1. Inoltre, tutti gli ingranaggi possono avere solo relazioni di compatibilità nel database con boccole e scatole ingranaggi, ma non può esserci compatibilità significativa tra un ingranaggio e un binario, o un ricevitore poiché quelle parti non si interfacciano.

Ora quello che voglio è un AI per essere in grado di imparare dalle decisioni della community di piattaforme crowdsourcing ed essere in grado di inferire la compatibilità per nuove parti / prodotti in base ai loro attributi taggati, che tipo di parte sono ecc.

Quale sarebbe la migliore forma di intelligenza artificiale per affrontare questo? Stavo pensando a un sistema esperto, ma ingegnerizzare esplicitamente tutte le regole della conoscenza sarebbe scoraggiante a causa delle complesse relazioni tra letteralmente decine di migliaia di parti, centinaia di tipi di parti e molti produttori.

Una rete ANN (rete neurale) sarebbe l'ideale per imparare dai molti input / decisioni degli utenti della piattaforma crowdsource?

Qualsiasi aiuto / input è molto apprezzato.

    
posta user1154277 01.11.2012 - 20:48
fonte

5 risposte

3

La parte cruciale della storia è questa:

Currently, I am in the process of building a crowd sourced platform for people who are knowledgeable to go in and mark up compatibility between those parts as its not always clear cut if they are for example:

E questo ...

Now what I want is an AI to be able to learn from the decisions of the crowdsourced platform community and be able to inference compatibility for new parts/products based on their tagged attributes, what type of part they are etc.

Questo mi lascia presupposto che il database delle parti sarà già stabilito, più o meno.

L'aspetto principale del processo di crowdsourcing del processo sarà quello di confermare o negare le richieste di compatibilità: affermazioni già fatte. L'aspetto secondario sarà quello di aggiungere nuove attestazioni di compatibilità che non sono state precedentemente identificate da altre persone o dedotte dal sistema.

Il sistema potrebbe valutare il reclamo includendo le condizioni del reclamo o l'affidabilità di tutte le richieste associate, la natura della relazione part-to-part e identificare se vi è somiglianza in altre relazioni part-to-part per consentire un ulteriore reclamo da dedurre.

Le condizioni dell'indicazione sarebbero principalmente un giudice di comportamento, che alla fine porterebbe a qualcosa di simile a una rete ANN / neurale. Tuttavia, la messa a punto di questo processo per regolare i fattori di ponderazione delle variabili considerate incoraggerà l'uso di un certo grado di concatenamento di Markov semplicemente perché entrando nel progetto, non avrai un modello per dirti quali fattori pesare più strong, e da scartare e ci saranno molti fattori da prendere in considerazione, sia da una relazione part-to-part, dal profilo di attività dell'utente, sia dal profilo di attività di sistema (il sistema in questo aspetto dovrebbe essere visto come un altro utente che ha fatto un sacco di richieste).

La natura della relazione part-to-part è complicata. Ci sono solo alcuni punti in un accoppiamento part-to-part che probabilmente devono essere considerati cruciali nel determinare se una relazione part-to-part possa essere un candidato ragionevole per la compatibilità. Per questo aspetto, un sistema esperto probabilmente si adatterebbe, ma potrebbe anche essere un processo meno complicato, potenzialmente riuscendo bene con un metodo più rudimentale di identificazione del candidato.

La parte più difficile dell'identificazione dei candidati non dovrebbe essere se un sistema esperto o qualsiasi altra intelligenza artificiale debba essere utilizzata, ma quanto sia strong e dettagliato il modello di dati. Più strong è il modello di dati, più semplice sarà probabilmente il sistema, dato che ti interessa solo un piccolo numero di potenziali strutture di relazione e valori corrispondenti in un particolare accoppiamento, vale a dire compatibilità fisica: si collegano o si collegano; se la comunicazione è un aspetto fondamentale delle parti, hanno lo stesso numero di fili su ciascun lato della spina e potenzialmente operano nello stesso intervallo di tensione; quando sono pneumatici, sono entrambi valutati per un funzionamento sicuro negli stessi intervalli relativi e hanno lo stesso numero di porte, forme e dimensioni o qualcosa del genere.

Questo è il posto in cui il tuo crowdsourcing potrebbe far funzionare alcuni dei "sistemi esperti". Lascia che taggano gli aspetti e le interfacce della parte che sono importanti nel determinare la compatibilità. Sostanzialmente consentono loro di fare due affermazioni sul sistema: 1) una relazione particolare è compatibile o meno, o forse forse se si è disposti a consentire agli utenti di indicare l'incertezza 2) questo aspetto o interfaccia contribuisce a determinare la compatibilità. Facendo ciò, e quindi reinserendo ogni flusso di dati nella rete neurale appropriata, è probabilmente possibile eliminare la necessità di un sistema esperto.

Infine, trovare nuovi candidati sulla base di tutti gli altri dati raccolti, cioè una sorta di processo di inferenza (o spesso descritto come sistema di raccomandazione).

    
risposta data 02.11.2012 - 09:38
fonte
2

Gli NN vengono spesso utilizzati per attività in cui non siamo sicuri di quali "funzionalità" siano importanti. Riesco a riconoscere un "2" scritto a mano, ma è difficile descrivere l'essenza di un "2" data l'enorme variazione nella scrittura a mano. Nel tuo caso, le caratteristiche importanti dei tuoi articoli sembrano essere decise dai tag. Gli umani hanno già fatto il duro lavoro.

Analogamente gli NN sono spesso usati per classificare gli oggetti, ad esempio l'immagine della scrittura a mano - > numero. Da quello che hai detto sembra qualcosa che è già stato fatto per te. Questo non vuol dire che gli NN non possano essere applicati, ma sembra che le aree in cui NNs eccellono siano già state coperte. Detto questo, il tuo modello sembra fornire una quantità meravigliosa di dati di allenamento.

Una domanda, tu dici:

Manufacturer A makes a "A" class product, and manufacturer B makes upgrade/part that generally goes with class "A" products, but is for one reason or another not compatible with Manufacturer A's particular "A" class product.

Che cosa potrebbe essere "una ragione o l'altra"? È qualcosa che potresti dire dai tag? dalla foto? dal giocare con le parti fisiche? A meno che non sia qualcosa che un umano potrebbe dire dai tag, probabilmente sarà difficile per un'IA indovinare.

    
risposta data 01.11.2012 - 21:45
fonte
2

Bene, non ho costruito troppi sistemi di intelligenza artificiale prima, ma prendiamo una fesseria ingenua a questo. Se dovessi usare una rete neurale per questo, i tag assegnati a nuove parti sarebbero i nodi di input, la (vasta) lista di elementi che potrebbe essere compatibile con i nodi di output, e il livello nascosto sarebbe il suo utente -compatibilità o incompatibilità confermate.

Quindi, se gli utenti creano tag ... "8mm", "gear", e li assegnano ad alcune parti. E i tuoi utenti elencano queste parti come compatibili con un articolo n. 4215 (una boccola da 8 mm). Quindi le nuove parti etichettate "8mm" "dog" e "gear" "head" sarebbero entrambe elencate come probabilmente compatibili con questa boccola da 8mm ... E si spera che le enormi quantità di dati possano risolvere quel genere di cose.

E, naturalmente, gli utenti hanno mai in disaccordo quando si tratta di dettagli tecnici come questo ...

    
risposta data 01.11.2012 - 22:12
fonte
1

Se ti capisco correttamente, in pratica hai un set di dati (crowd-) proveniente da persone reali, che descrive la compatibilità tra le varie parti. Ti piacerebbe costruire qualcosa che analizzi queste informazioni e capisca le associazioni tra le parti e il flag di compatibilità.

Essenzialmente, l'estrazione di questo tipo di informazioni da un set di dati è conosciuta come Data mining . Viene applicata una varietà di tecniche (analisi statistica, ecc.) Per identificare essenzialmente i vari tratti dell'insieme di dati che risultano in varie classificazioni ("compatibile" vs "non compatibile"). Queste regole possono quindi essere trasformate in un sistema esperto automaticamente o manualmente. Vale la pena ricordare che esistono diversi pacchetti software per fare questo lavoro, quindi potresti non dover scrivere tutto da solo (anche se potrebbero essere costosi). Direi che questo è l'approccio più diretto a quello che vuoi fare (anche se sarebbe ancora molto difficile, coinvolgendo molti problemi, come trattare dati incompleti, ecc.)

Dovrei anche menzionare che dovresti mettere in dubbio ciò che vuoi ottenere con questo, esattamente. Il vantaggio di avere un sistema esperto è che sarebbe in grado di applicare una logica simile per determinare la compatibilità su parti che sono molto simili a quelle che già comprende bene. La capacità dell'IA di applicarsi in questo modo è chiamata generalizzazione , ed è praticamente l'unica cosa che ne uscirà, dal momento che non potrà mai sovraperformare i dati originali per gli oggetti originali. Sicuramente peserei le implicazioni di questo. Se ti aspetti un enorme set di dati con molti articoli simili, potrebbe comunque essere molto utile. Se, tuttavia, avrai solo pochi oggetti simili in ogni categoria, l'intelligenza artificiale sarà relativamente inutile.

    
risposta data 02.11.2012 - 08:02
fonte
0

Sembra che tu voglia una sorta di motore di inferenza, che per me suggerisce un sistema esperto. Non penso che popolarne uno sarebbe così difficile se riesci a suddividere le cose in categorie appropriate (produttori, parti, assiemi, ecc.). Quindi puoi fare affermazioni generali ("i cambi hanno ingranaggi multipli", "gli ingranaggi hanno bisogno di boccole", "i produttori fabbricano boccole"), hanno del codice che classifica le parti e assegna le proprietà, quindi lascia che la base utente inserisca esclusioni specifiche ("boccole dal produttore X non si adattano agli ingranaggi dal produttore Y "). Non è chiaro dalla tua domanda che cosa farai con questo sistema una volta che ce l'hai, quindi è difficile dare esempi più specifici, ma potresti voler cercare su "sistemi di raccomandazione" e vedere se questo suona come quello che sei tu sta cercando di costruire.

    
risposta data 01.11.2012 - 22:25
fonte