Sono davvero interessato alle reti neurali artificiali, ma sto cercando un punto di partenza.
Quali sono le risorse disponibili e qual è un buon progetto di partenza?
Sono davvero interessato alle reti neurali artificiali, ma sto cercando un punto di partenza.
Quali sono le risorse disponibili e qual è un buon progetto di partenza?
Risposte:
Ecco alcuni esempi di programmazione della rete neurale. http://www.codeproject.com/KB/recipes/neural_dot_net.aspx
puoi iniziare a leggere qui: http://web.archive.org/web/20071025010456/http://www.geocities.com/CapeCanaveral/Lab/3765/neural.html
Da parte mia ho visitato un corso sull'argomento e ho lavorato su un po 'di letteratura.
Prima di tutto, rinuncia a qualsiasi idea che le reti neurali artificiali abbiano qualcosa a che fare con il cervello, ma per una somiglianza passeggera con le reti di neuroni biologici. L'apprendimento della biologia non ti aiuterà ad applicare efficacemente le reti neurali; imparare l'algebra lineare, il calcolo e la teoria della probabilità. Dovresti almeno familiarizzare con l'idea della differenziazione di base delle funzioni, la regola della catena, le derivate parziali (il gradiente, lo Jacobiano e l'Assia) e comprendere la moltiplicazione e diagonalizzazione di matrici.
In realtà quello che stai facendo quando alleni una rete è ottimizzare una grande funzione multidimensionale (riducendo al minimo la misura dell'errore rispetto a ciascuno dei pesi nella rete), e quindi un'indagine sulle tecniche per l'ottimizzazione numerica non lineare può rivelarsi istruttiva. Questo è un problema ampiamente studiato con un'ampia base di letteratura al di fuori delle reti neurali, e sul web sono disponibili molte dispense sull'ottimizzazione numerica. Per iniziare, la maggior parte delle persone usa la semplice discesa del gradiente , ma può essere molto più lenta e meno efficace di metodi più sfumati come
Una volta apprese le idee di base, puoi iniziare a sperimentare con diverse funzioni di "schiacciamento" nel tuo livello nascosto, aggiungendo vari tipi di regolarizzazione e varie modifiche per velocizzare l'apprendimento. Vedere questo documento per un elenco completo delle "migliori pratiche".
Uno dei migliori libri sull'argomento è Neural Networks for Pattern Recognition di Chris Bishop . È abbastanza vecchio in questa fase, ma è ancora una risorsa eccellente e spesso puoi trovare copie usate online per circa $ 30. Anche il capitolo sulla rete neurale nel suo libro più recente, Pattern Recognition and Machine Learning , è abbastanza completo. Per un tutorial incentrato sull'implementazione particolarmente buono, guarda questo su CodeProject.com che implementa un tipo intelligente di rete chiamato rete convoluzionale, che limita la connettività in modo tale da renderlo molto bravo nell'apprendimento della classificazione dei modelli visivi.
Le macchine vettoriali di supporto e altri metodi del kernel sono diventati molto popolari perché puoi applicarli senza sapere cosa diavolo stai facendo e spesso ottenere risultati accettabili. Le reti neurali, d'altra parte, sono enormi problemi di ottimizzazione che richiedono un'attenta messa a punto, sebbene siano ancora preferibili per molti problemi, in particolare problemi su larga scala in domini come la visione artificiale.
Consiglio vivamente questa eccellente serie di Anoop Madhusudanan su Code Project .
Ti guida attraverso i fondamenti per capire come funzionano in modo facile da capire e ti mostra come usare la sua brainnet
libreria per crearne una tua.
Le reti neurali sono una specie di declassamento in questi giorni. Le macchine vettoriali di supporto ei metodi del kernel sono migliori per più classi di problemi rispetto alla backpropagation. Le reti neurali e gli algoritmi genetici catturano l'immaginazione di persone che non sanno molto sull'apprendimento automatico moderno ma non sono allo stato dell'arte.
Se vuoi saperne di più sull'intelligenza artificiale e sull'apprendimento automatico, ti consiglio di leggere Intelligenza artificiale di Peter Norvig : un approccio moderno . È un'ampia indagine sull'intelligenza artificiale e molte tecnologie moderne. Ripercorre la storia e anche le tecniche più vecchie e ti fornirà una base più completa sulle basi dell'IA e dell'apprendimento automatico.
Tuttavia, le reti neurali sono piuttosto semplici. Soprattutto se usi un algoritmo genetico per determinare i pesi, piuttosto che una corretta backpropagation.
Secondo la raccomandazione dwf di Neural Networks for Pattern Recognition di Chris Bishop. Anche se forse non è un testo iniziale. Norvig o un tutorial online (con codice in Matlab!) Sarebbero probabilmente un'introduzione più delicata.
Un buon progetto iniziale sarebbe OCR (Optical Character Recognition). È possibile eseguire la scansione di pagine di testo e alimentare ogni carattere attraverso la rete per eseguire la classificazione. (Dovresti addestrare prima la rete ovviamente!).
Il libro di Raul Rojas è un ottimo inizio (è anche gratuito). Inoltre, la terza edizione del libro di Haykin , sebbene di grande volume, è molto ben spiegata.
Posso consigliare da dove non iniziare. Ho acquistato An Introduction to Neural Networks di Kevin Gurney che ha buone recensioni su Amazon e afferma di essere "un'introduzione altamente accessibile a uno degli argomenti più importanti della scienza cognitiva e informatica". Personalmente, non consiglierei questo libro come inizio. Riesco a comprenderne solo il 10% circa, ma forse sono solo io (l'inglese non è la mia lingua madre). Esaminerò altre opzioni da questo thread.
http://www.ai-junkie.com/ann/evolved/nnt1.html è una chiara introduzione al perceptron multistrato, sebbene non descriva l'algoritmo di backpropagation
puoi anche dare un'occhiata a generation5.org che fornisce molti articoli sull'intelligenza artificiale in generale e ha alcuni ottimi testi sulla rete neurale
Se non ti dispiace spendere soldi, The Handbook of Brain Theory and Neural Networks è molto buono. Contiene 287 articoli che coprono la ricerca in molte discipline. Inizia con un'introduzione e una teoria e poi evidenzia i percorsi attraverso gli articoli per coprire al meglio i tuoi interessi.
Per quanto riguarda un primo progetto, le mappe di Kohonen sono interessanti per la categorizzazione : trova relazioni nascoste nella tua raccolta musicale, costruisci un robot intelligente o risolvi il premio Netflix .
Due libri che sono stati usati durante il mio studio:
Corso introduttivo: un'introduzione al Neural Computing di Igor Aleksander e Helen Morton.
Corso avanzato: Neurocomputing di Robert Hecht-Nielsen
Ho trovato Fundamentals of Neural Networks di Fausett un libro di testo introduttivo semplice e di facile accesso.
Ho trovato il libro di testo "Computational Intelligence" incredibilmente utile.
Programming Collective Intelligence discute questo nel contesto degli algoritmi di ricerca e posizionamento. Inoltre, nel codice disponibile qui (nel cap.4), i concetti discussi nel libro sono illustrati in un esempio di Python.
Sono d'accordo con le altre persone che hanno detto che studiare biologia non è un buon punto di partenza ... perché ci sono molte informazioni irrilevanti in biologia. Non è necessario capire come funziona un neurone per ricreare la sua funzionalità: è sufficiente simulare le sue azioni. Raccomando "How To Create A Mind" di Ray Kurzweil - entra nell'aspetto della biologia che è rilevante per i modelli computazionali, (creando un neurone simulato combinando diversi input e attivando una volta raggiunta una soglia) ma ignora le cose irrilevanti come il modo in cui il neurone aggiunge effettivamente gli input al cambiamento. (Utilizzerai solo + e una disuguaglianza per confrontare una soglia, ad esempio)
Vorrei anche sottolineare che il libro non parla realmente di "creare una mente", ma si concentra solo sul riconoscimento di schemi gerarchici / la neocorteccia. Il tema generale è stato discusso sin dagli anni '80, credo, quindi ci sono molti libri più vecchi che probabilmente contengono forme leggermente datate delle stesse informazioni. Ho letto documenti meno recenti che affermano che il sistema di visione, ad esempio, è un riconoscimento di pattern a più livelli. Sostiene che questo vale per l'intera neocorteccia. Inoltre, prendi le sue "previsioni" con le pinze: le sue stime hardware sono probabilmente piuttosto accurate, ma penso che sottovaluti quanto possano essere complicate le attività semplici (es: guidare un'auto). Certo, ha visto molti progressi (e ne ha fatto parte), ma penso ancora che sia troppo ottimista. C'è una grande differenza tra un'auto con intelligenza artificiale in grado di guidare per un miglio con successo il 90% delle volte, rispetto al 99,9% che un essere umano può fare. Non mi aspetto che nessuna intelligenza artificiale sia veramente fuori a guidarmi per almeno 20 anni ... (non conto le auto BMW che devono essere `` addestrate '' sul percorso effettivo, poiché non stanno giocando allo stesso modo gioco)
Se hai già un'idea di base di cosa sia l'IA e di come possa essere modellata, potrebbe essere meglio saltare a qualcosa di più tecnico.
Se vuoi imparare rapidamente le applicazioni di alcuni concetti di rete neurale su un vero simulatore, c'è un ottimo libro online (ora wiki) chiamato "Neuroscienze cognitive computazionali" su http://grey.colorado.edu/CompCogNeuro/index. php / CCNBook / Main
Il libro viene utilizzato nelle scuole come un libro di testo e ti porta attraverso molte aree cerebrali diverse, dai singoli neuroni fino al funzionamento esecutivo di ordine superiore.
Inoltre, ogni sezione è aumentata con i "progetti" dei compiti che sono già disponibili per te. Basta scaricare, seguire i passaggi e simulare tutto ciò di cui ha parlato il capitolo. Il software che usano, Emergent, è un po 'schizzinoso ma incredibilmente robusto: credo sia il prodotto di più di 10 anni di lavoro.
L'ho affrontato in un corso di laurea lo scorso semestre ed è stato fantastico. Ti accompagna passo dopo passo attraverso tutto