Come si inizia a imparare l'intelligenza artificiale?


16

Sono uno studente di ingegneria del software e sono un principiante assoluto di AI. Ho letto molti articoli su come iniziare a studiare l'IA, ma ogni articolo suggerisce un modo diverso. Mi chiedevo se alcuni di voi esperti potessero aiutarmi a iniziare nel modo giusto.

Alcune domande più specifiche

  1. Su quale lingua dovrei concentrarmi? Molti articoli suggeriscono Python, C ++ o Lisp per AI. Posso usare Java invece delle altre lingue menzionate?

  2. Che tipo di background matematico dovrei avere? Durante il primo anno, ho fatto matematica discreta, che includeva i seguenti argomenti: insiemi, matrici, vettori, funzioni, logica e teoria dei grafi (hanno insegnato brevemente questi argomenti). Ci sono altri argomenti che dovrei imparare ora? Ad esempio, calcolo?

Se possibile, apprezzerei tutte le risorse o i libri che potrei usare per iniziare, o forse voi ragazzi potete darmi una procedura dettagliata che posso seguire per raggiungere il vostro livello.

Nota: per ora vorrei concentrarmi sulle reti neurali e sull'apprendimento automatico. Dopo di me vorrei esplorare la robotica e l'elaborazione del linguaggio naturale.


Risposte:


16

L'intelligenza artificiale è un campo molto vasto e copre molte e molto profonde aree di informatica, matematica, progettazione hardware e persino biologia e psicologia. Per quanto riguarda la matematica: penso che il calcolo, la statistica e l'ottimizzazione siano gli argomenti più importanti, ma imparare quanto più matematica possibile non farà male.

Ci sono molte buone risorse introduttive gratuite sull'intelligenza artificiale per i principianti. Consiglio vivamente di iniziare con questo: http://aiplaybook.a16z.com/ Hanno anche pubblicato due video sui concetti generali di AI, li puoi trovare su Vimeo: "AI, Deep Learning e Machine Learning: A Primer "e" La promessa dell'IA "

Una volta che hai una chiara comprensione dei termini e degli approcci di base dell'IA, devi capire quali sono i tuoi obiettivi. Che tipo di software AI vuoi sviluppare? A quali settori sei interessato? Quali sono le tue possibilità di essere coinvolti in progetti di grandi aziende? È più facile raccogliere gli strumenti giusti quando sai esattamente cosa vuoi ottenere.

Per la maggior parte dei nuovi arrivati ​​all'intelligenza artificiale l'area più interessante è il Deep Learning. Giusto per chiarire, ci sono molte aree dell'IA al di fuori del Machine Learning e ci sono molte aree del Machine Learning al di fuori del Deep Learning. (Intelligenza artificiale> Apprendimento automatico> Apprendimento profondo) La maggior parte degli sviluppi recenti e delle notizie di successo riguardano DL.

Se ti sei interessato anche al Deep Learning, devi iniziare con l'apprendimento dei concetti di reti neurali artificiali. Fortunatamente non è troppo difficile capire le basi e ci sono molti tutorial, esempi di codice e risorse di apprendimento gratuite sul web e ci sono molti framework open source per iniziare a sperimentare.

Il framework di Deep Learning più popolare è TensorFlow. È supportato da Google. Lo adori o lo odi, è un framework basato su Python. Esistono anche molti altri framework basati su Python. Scikit-learn, Theano, Keras sono spesso citati nei tutorial. (Un consiglio: se usi Windows puoi scaricare WinPython che include tutti questi framework.)

Per quanto riguarda i framework Java, purtroppo non ci sono così tante opzioni. Il framework Java più importante per DL è Deeplearning4j. È sviluppato da una piccola azienda e la sua base di utenti è molto più piccola della folla attorno a TensorFlow. Ci sono meno progetti ed esercitazioni per questo framework. Tuttavia, gli specialisti del settore affermano che i framework basati su Java alla fine si integrano meglio con le soluzioni Big Data basate su Java e possono fornire un livello più elevato di portabilità e una più facile implementazione del prodotto. Solo un sidenote: il Jet Propulsion Laboratory della NASA ha utilizzato Deeplearning4j per molti progetti.

Se decidi di seguire il flusso e desideri iniziare a saperne di più su TensorFlow, ti consiglio di consultare i canali YouTube di "DeepLearning.TV", "sentdex" e "Siraj Raval". Hanno simpatici tutorial e alcune fantastiche demo. E se decidi di fare un'immersione più profonda, puoi iscriverti a un corso online su udacity o coursera.

Potrebbe anche essere interessante sapere che esistono altri framework di Deep Learning per Java Virtual Machine con linguaggi alternativi, ad esempio Clojure. (Clojure è un dialetto di LISP ed è stato inventato da John McCarthy, lo stesso scienziato informatico che ha coniato il termine "intelligenza artificiale". In altre parole ci sono linguaggi e strumenti di programmazione più moderni e popolari, ma è ancora possibile / e un po 'cool / per usare il linguaggio per l'IA originariamente progettato per l'IA. ThinkTopic a Boulder e Freiheit ad Amburgo sono due società che usano Clojure per i progetti di intelligenza artificiale. E se vuoi vedere qualcosa di fantastico per trarre ispirazione per usare Clojure in AI e robotica, Ti consiglio di dare un'occhiata al video di YouTube "OSCON 2013: Carin Meier, La gioia dei robot volanti con Clojure".

(+++ Chiunque si senta libero di correggermi se ho detto qualcosa di sbagliato. +++)


Dato che ci sono meno framework per Java, è possibile scrivere i miei framework per esso, che posso usare come sostituto di TensorFlow? Grazie
aspire29,

1
Creare il proprio framework per studiare i concetti di base è un'ottima idea. D'altra parte, TensorFlow è sviluppato da una grande comunità e da molti professionisti di grande talento. Onestamente, non credo che nessuna struttura casalinga possa competere con successo con essa. A proposito, non capisco perché ci sono così pochi framework AI Java ... considerando che è ancora il numero 1. linguaggio di programmazione e JVM sono praticamente ovunque. Immagino che l'IA sia ancora piuttosto sulla ricerca che sulla produzione.
Akopacsi,

6

Scoprirai che sia Calculus che Linear Algebra hanno qualche applicazione nelle tecniche AI ​​/ ML. In molti sensi, si può sostenere che la maggior parte della ML si riduce all'Algebra lineare e che si utilizza Calculus, ad es. l'algoritmo di backpropagation per l'addestramento delle reti neurali.

Saresti ben servito a prendere una classe o due in probabilità e statistiche.

La scelta del linguaggio di programmazione è meno importante, IMO. Puoi fare AI / ML in quasi tutti i linguaggi tradizionali e in molti linguaggi non tradizionali. La differenza più grande riguarda le prestazioni e la disponibilità di librerie / strumenti. Il C ++, ad esempio, di solito supererà le prestazioni di Java o Python e ti permetterà di avvicinarti "al metal" per massimizzare realmente le capacità del tuo hardware. Python, tuttavia, ha un ottimo FFI ed è spesso usato insieme a C o C ++. Python, C ++, Java, R, Octave / Matlab e alcune altre lingue tendono ad avere molte librerie di alta qualità disponibili, che possono essere importanti per te a seconda di ciò che vuoi fare.

Detto questo, probabilmente non vuoi provare a fare ML / AI in, per esempio, COBOL o PL / I o RPG / 400 o qualcosa del genere. Attenersi a qualcosa almeno ragionevolmente popolare. Cerca su mloss.org e guarda quali librerie / toolkit sono disponibili in diverse lingue e che dovrebbero aiutarti a guidare la tua scelta.


5

Quando mi sono interessato all'intelligenza artificiale, ho iniziato con le cose più elementari. Il mio primo libro fu l'Intelligenza Artificiale di Russell & Norvig: un approccio moderno . Penso che sia un buon punto di partenza, anche se sei principalmente interessato a Deep Nets. Tratta non solo i concetti e gli algoritmi di intelligenza artificiale di base (sistemi esperti, ricerca approfondita e approfondita, rappresentazione della conoscenza, ecc.) Ma anche la matematica fondamentale (ragionamento bayesiano, logica del primo ordine, n-grammi NL, ecc.) e alcuni problemi comunemente noti (come ad esempio il problema del commesso viaggiatore).

Potrebbe anche essere una buona idea imparare le statistiche, poiché sei particolarmente interessato alla ML. Dopo il libro citato, dovresti anche avere una buona idea su cosa imparare dopo.

  • Non preoccuparti troppo del linguaggio di programmazione.

È molto più importante comprendere la programmazione stessa e le relative tecniche. Scopri qualcosa su strutture dati, algoritmi e diversi paradigmi di programmazione (come OOP, Programmazione funzionale, ecc.). Cerca di capire la logica alla base della programmazione e non solo un linguaggio particolare. Dopotutto, imparare una nuova lingua non è così difficile una volta che hai capito come programmare (quindi imparare una nuova lingua è solo più o meno zucchero sintattico).


1
Ho fatto una leggera modifica per la leggibilità e ho aggiunto un link al libro di testo. Un buon consiglio, specialmente riguardo ai linguaggi di programmazione. (Guarda i programmatori che lavorano in "qualsiasi lingua con sintassi" :) Dipende davvero da ciò che è più ottimale o conveniente per un determinato progetto o attività.
DukeZhou


3

Per iniziare l'IA prima di tutto capire cos'è l'IA. Perché l'accuratezza di MNIST aumenta rapidamente dopo il 2012. Perché l'apprendimento automatico ha bisogno dell'intelligenza artificiale per aumentarne l'accuratezza.

Per avviare e costruire l'Applicazione sull'apprendimento automatico con AI non hai bisogno di matematica o di qualche tipo di scienza missilistica. Sei in ritardo, i miei fratelli costruiscono scorciatoie per tutti i problemi di apprendimento automatico come un wrapper. Hai solo bisogno di passare i dati a un metodo e il metodo farà tutto di merda. Inizia con il problema di MNIST è eccitante. Leggi la storia di MNIST usando l'algoritmo di base su di esso. Prova la regressione lineare, la regressione logistica, la confusione kmea, KNN. Strumenti per l'apprendimento automatico Skite learn (python lib) o Tensorflow (python lib) tflearn (API di livello superiore di Tensorflow come un wrapper) Entrambi sono open source. Esempi sono disponibili su GitHub. Inizia la ricerca su GitHub. Hai trovato un ottimo esempio. Per entrambi i lib. Usa Kaggel per risolvere il problema partecipa alla competizione.

Quando completi tutto l'algoritmo sopra riportato, prova a concentrarti sul tuo errore. Ora arrivò l'IA. Prova a capire come la rete neurale ti aiuta a ridurre l'errore e ad aumentare la precisione. Quindi prova alcune reti neurali di base come sigmoid, relu e cnn. Non dimenticare di utilizzare il dropout nella tua rete neurale. Puoi usare Tensorflow o keras o Tensorflow con keras

Verifica fianco a fianco 3 video di algebra lineare di Blue 1 Brown per migliorare la tua matematica. una volta al giorno ma ogni giorno un video.

E ora concentrati sulla matematica dietro la logica (qualsiasi algoritmo). Puoi provare ad apprendere il corso di apprendimento automatico.

Utilizzare Tensorflow per la creazione di app Android, app IOS, RaspPi Check Tensorflow summit 2016/2017.

O se hai bisogno di un corso intensivo, controlla questo https://youtu.be/u4alGiomYP4


1
Cerchiamo di chiarire, AI non è tutto sulla lettura del libro HTML e si inizia a programmare, chiariamo qui ,! Il PO deve consultare i professori di Oxford, Harvad, ecc.
Quintumnia,

3

Prima di entrare nell'intelligenza artificiale, si dovrebbero fare i prerequisiti. Non esiste un elenco solido, ma è obbligatoria una buona conoscenza di vari algoritmi. A parte questo, dovresti essere a tuo agio con almeno un linguaggio di programmazione, come C ++ o Java. Non ti suggerirò di immergerti nell'intelligenza artificiale se sei completamente nuovo nell'informatica. Qualche esperienza con la programmazione prima di immergerti nell'intelligenza artificiale sarà un vantaggio per te.

Inizia a leggere (blog, articoli, articoli accademici, ecc.) Sull'intelligenza artificiale. Come quello che è, le sue applicazioni, lo stato corrente e altre cose che puoi trovare. Inizia a creare codici AI per piccoli giochi come Tic Tac Toe, Sudoku, Reversi (Otello), ecc. Per iniziare. Puoi creare il tuo simulatore e creare un codice che risolva il cubo di Rubik. Allo stesso modo, crea codici per Pattern Recognition e Machine Learning. Niente è meglio che imparare facendo. Lingue come LISP e Python saranno molto utili. Ecco due risposte che ti aiuteranno, ans1 e ans2 .

Se sei una persona a cui piace leggere e imparare dai libri (come me), puoi acquistare Intelligenza artificiale: un approccio moderno (Peter Norvig e Stuart Russell). Il libro è molto buono e funziona bene per il livello intermedio e avanzato. Cerca di risolvere i problemi di allenamento indicati nel libro. La soluzione pdf dei libri è disponibile online . Per Machine Learning due libri che raccomando sono Pattern Recognition e Machine Learning (Christopher M. Bishop) e Programming Collective Intelligence (O'Reilly).

Per iniziare, c'è un ottimo articolo su Intelligenza artificiale e Singolarità tecnologica.

L'articolo è lungo e diviso in due parti. Ti consiglio vivamente di leggere questo articolo se sei serio sull'intelligenza artificiale. Ti darà alcune buone intuizioni.

La conoscenza della teoria computazionale ti sarà di grande aiuto. Soprattutto quando lavori nel campo dell'elaborazione del linguaggio naturale. Altri sottocampi dell'IA che potrebbero interessarti saranno l'apprendimento automatico, il calcolo evolutivo, gli algoritmi genetici, l'apprendimento per rinforzo, l'apprendimento profondo ecc. L'elenco continua. Migliore conoscenza della statistica, migliore sarà per l'intelligenza artificiale. Resta sintonizzato sui recenti avvenimenti sul campo tramite forum, siti Web, ecc. Il sito Web di Open AI è anche un'ottima fonte.

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.