Comment commence-t-on à apprendre l'intelligence artificielle?


16

Je suis un étudiant en génie logiciel et je suis un débutant complet en IA. J'ai lu beaucoup d'articles sur la façon de commencer à apprendre l'IA, mais chaque article suggère une manière différente. Je me demandais si certains d'entre vous, des experts, pourraient m'aider à démarrer dans le bon sens.

Quelques questions plus spécifiques

  1. Sur quelle langue dois-je me concentrer? De nombreux articles suggèrent Python, C ++ ou Lisp pour AI. Puis-je utiliser Java au lieu des autres langages mentionnés?

  2. Quel genre de formation mathématique dois-je avoir? Au cours de la première année, j'ai fait des mathématiques discrètes, qui comprenaient les sujets suivants: ensembles, matrices, vecteurs, fonctions, logique et théorie des graphes (Ils ont enseigné ces sujets brièvement). Y a-t-il d'autres sujets que je devrais apprendre maintenant? Par exemple, le calcul?

Si possible, j'apprécierais toutes les ressources ou livres que je pourrais utiliser pour commencer, ou peut-être que vous pouvez me donner une procédure détaillée que je peux suivre afin de rattraper votre niveau.

Remarque: Pour l'instant, je voudrais me concentrer sur les réseaux de neurones et l'apprentissage automatique. Après cela, j'aimerais explorer la robotique et le traitement du langage naturel.


Réponses:


16

L'intelligence artificielle est un domaine très vaste qui couvre de nombreux domaines très approfondis de l'informatique, des mathématiques, de la conception matérielle et même de la biologie et de la psychologie. En ce qui concerne les mathématiques: je pense que le calcul, les statistiques et l'optimisation sont les sujets les plus importants, mais apprendre autant de mathématiques que possible ne fera pas de mal.

Il existe de nombreuses bonnes ressources d'introduction gratuites sur l'IA pour les débutants. Je recommande fortement de commencer par celui-ci: http://aiplaybook.a16z.com/ Ils ont également publié deux vidéos sur les concepts généraux de l'IA, vous pouvez les trouver sur Vimeo: "AI, Deep Learning et Machine Learning: A Primer "et" La promesse de l'IA "

Une fois que vous avez une compréhension claire des termes et des approches de base de l'IA, vous devez déterminer quels sont vos objectifs. Quel type de logiciel d'IA souhaitez-vous développer? Quelles sont les industries qui vous intéressent? Quelles sont vos chances de vous impliquer dans des projets de grandes entreprises? Il est plus facile de choisir les bons outils lorsque vous savez exactement ce que vous voulez réaliser.

Pour la plupart des nouveaux arrivants en IA, le domaine le plus intéressant est le Deep Learning. Pour être clair, il existe de nombreux domaines de l'IA en dehors du Machine Learning et il existe de nombreux domaines du Machine Learning en dehors du Deep Learning. (Intelligence artificielle> Apprentissage automatique> Deep Learning) La plupart des développements récents et des nouvelles passionnées concernent DL.

Si vous vous êtes également intéressé au Deep Learning, vous devez commencer par vous familiariser avec les concepts des réseaux de neurones artificiels. Heureusement, il n'est pas trop difficile de comprendre les bases et il existe de nombreux didacticiels, exemples de code et ressources d'apprentissage gratuites sur le Web et il existe de nombreux frameworks open-source pour commencer à expérimenter.

Le framework Deep Learning le plus populaire est TensorFlow. Il est soutenu par Google. Aimez-le ou détestez-le, c'est un framework basé sur Python. Il existe également de nombreux autres frameworks basés sur Python. Scikit-learn, Theano, Keras sont également fréquemment mentionnés dans les didacticiels. (Un conseil: si vous utilisez Windows, vous pouvez télécharger WinPython qui inclut tous ces cadres.)

En ce qui concerne les frameworks Java, malheureusement, il n'y a pas tant d'options. Le cadre Java le plus important pour DL est Deeplearning4j. Il est développé par une petite entreprise et sa base d'utilisateurs est beaucoup plus petite que la foule autour de TensorFlow. Il y a moins de projets et de tutoriels pour ce framework. Cependant, les spécialistes de l'industrie affirment que les frameworks basés sur Java s'intègrent finalement mieux aux solutions Big Data basées sur Java et qu'ils peuvent fournir un niveau de portabilité plus élevé et un déploiement de produit plus facile. Juste une note: le Jet Propulsion Laboratory de la NASA a utilisé Deeplearning4j pour de nombreux projets.

Si vous décidez de suivre le courant et que vous souhaitez en savoir plus sur TensorFlow, je vous recommande de consulter les chaînes YouTube de "DeepLearning.TV", "sentdex" et "Siraj Raval". Ils ont de bons tutoriels et quelques démos sympas. Et si vous décidez de plonger plus profondément, vous pouvez vous inscrire à un cours en ligne à udacity ou coursera.

Il peut également être intéressant pour vous de savoir qu'il existe d'autres frameworks Deep Learning pour la machine virtuelle Java avec des langages alternatifs, par exemple Clojure. (Clojure est un dialecte du LISP et il a été inventé par John McCarthy, le même informaticien qui a inventé le terme "intelligence artificielle". En d'autres termes, il existe des langages et des outils de programmation plus modernes et populaires, mais c'est toujours possible / et plutôt cool / pour utiliser le langage pour l'IA qui a été initialement conçu pour l'IA. ThinkTopic à Boulder et Freiheit à Hambourg sont deux sociétés qui utilisent Clojure pour des projets d'IA. Et si vous voulez voir quelque chose de génial pour vous inspirer pour utiliser Clojure en IA et en robotique, Je vous recommande de regarder la vidéo YouTube "OSCON 2013: Carin Meier, La joie des robots volants avec Clojure".

(+++ Tout le monde se sent libre de me corriger si je dis quelque chose de mal. +++)


Puisqu'il y a moins de frameworks pour Java, est-il possible d'y écrire mes propres frameworks, que je peux utiliser comme substitut de TensorFlow? Merci
aspire29

1
Créer votre propre cadre pour étudier les concepts de base est une très bonne idée. D'un autre côté, TensorFlow est développé par une énorme communauté et beaucoup de professionnels très talentueux. Honnêtement, je ne pense pas qu'un cadre maison puisse concurrencer avec succès. Au fait, je ne comprends pas pourquoi il y a si peu de frameworks Java AI ... étant donné que c'est toujours le n ° 1. langage de programmation et JVM est à peu près partout. Je suppose que l'IA est encore plus une question de recherche que de production.
akopacsi

6

Vous constaterez que le calcul et l'algèbre linéaire ont une application dans les techniques AI / ML. Dans de nombreux sens, vous pouvez affirmer que la plupart des ML se réduisent à l'algèbre linéaire et que le calcul est utilisé, par exemple. l'algorithme de rétropropagation pour l'entraînement des réseaux de neurones.

Vous seriez bien servi de prendre un cours ou deux en probabilités et en statistiques aussi.

Le choix du langage de programmation est moins important, OMI. Vous pouvez faire de l'IA / ML dans à peu près n'importe quelle langue traditionnelle et dans de nombreuses langues non traditionnelles. La plus grande différence concerne les performances et la disponibilité des bibliothèques / outils. Le C ++, par exemple, va généralement surpasser Java ou Python et il vous permet de vous rapprocher du métal pour vraiment maximiser les capacités de votre matériel. Python, cependant, a un très bon FFI et est souvent utilisé en conjonction avec C ou C ++. Python, C ++, Java, R, Octave / Matlab et quelques autres langages ont tendance à avoir beaucoup de bibliothèques de haute qualité disponibles, ce qui peut être important pour vous selon ce que vous voulez faire.

Cela dit, vous ne voulez probablement pas essayer de faire du ML / AI dans, disons, COBOL ou PL / I ou RPG / 400 ou quelque chose du genre. Tenez-vous en à quelque chose d'au moins raisonnablement populaire. Parcourez mloss.org et regardez quelles bibliothèques / boîtes à outils sont disponibles dans différentes langues et qui devraient aider à guider votre choix.


5

Quand je me suis intéressé à l'IA, j'ai commencé par les choses les plus élémentaires. Mon tout premier livre était Russell & Norvig's Artificial Intelligence- A modern Approach . Je pense que c'est un bon point de départ, même si vous êtes principalement intéressé par les Deep Nets. Il traite non seulement les concepts et algorithmes de base de l'IA (systèmes experts, recherche en profondeur d'abord et en largeur, représentation des connaissances, etc.) mais aussi les mathématiques fondamentales (raisonnement bayésien, logique du premier ordre, n-grammes NL, etc.) et certains problèmes connus (comme le problème du voyageur de commerce par exemple).

Cela peut aussi être une bonne idée d'apprendre les statistiques, car vous êtes particulièrement intéressé par le ML. Après le livre mentionné, vous devriez également avoir une bonne idée de ce que vous apprendrez ensuite.

  • Ne vous souciez pas trop du langage de programmation.

Il est beaucoup plus important de comprendre la programmation elle-même et les techniques associées. Apprenez quelque chose sur les structures de données, les algorithmes et les différents paradigmes de programmation (comme la POO, la programmation fonctionnelle, etc.). Essayez de comprendre la logique derrière la programmation et pas seulement un langage particulier. Après tout, apprendre une nouvelle langue n'est pas si difficile une fois que vous comprenez comment programmer (puis apprendre une nouvelle langue est juste du sucre plus ou moins syntaxique).


1
J'ai fait une légère modification pour la lisibilité et ajouté un lien vers le manuel. De bons conseils, en particulier concernant les langages de programmation. (Regardez les codeurs qui travaillent dans "n'importe quelle langue avec syntaxe" :) revient vraiment à ce qui est le plus optimal ou le plus pratique pour un projet ou une tâche donnée.
DukeZhou


3

Pour démarrer l'IA, il faut d'abord comprendre ce qu'est l'IA. Pourquoi la précision du MNIST augmente rapidement après 2012. Pourquoi l'apprentissage automatique a besoin de l'IA pour augmenter sa précision.

Pour démarrer et créer une application sur l'apprentissage automatique avec l'IA, vous n'avez pas eu besoin de maths ou d'une sorte de science des fusées. Vous êtes en retard, mes collègues ont créé des raccourcis pour tous les problèmes d'apprentissage automatique comme un wrapper. Vous avez juste besoin de passer des données à une méthode et la méthode fera tout le reste. Commencez par le problème du MNIST, c'est passionnant. Lisez l'histoire du MNIST, utilisez un algorithme de base dessus. Essayez la régression linéaire, la régression logistique, l'agrégation Kmean, KNN. Outils d'apprentissage automatique Skite learn (lib python) ou Tensorflow (lib python) tflearn (api de niveau supérieur de Tensorflow comme un wrapper) Les deux sont open source. Des exemples sont disponibles sur GitHub. Lancez la recherche sur GitHub. Vous en avez trouvé un excellent exemple. Pour les deux lib. Utilisez kaggel pour résoudre le problème, participez à la compétition.

Lorsque vous avez terminé tous les algorithmes ci-dessus, essayez de vous concentrer sur votre erreur. Maintenant, l'IA est arrivée. Essayez de comprendre comment le réseau neuronal vous aide à réduire les erreurs et à augmenter la précision. Essayez ensuite un réseau neuronal de base comme sigmoïde, relu et cnn. N'oubliez pas d'utiliser le décrochage dans votre réseau neuronal. Vous pouvez utiliser Tensorflow ou keras ou Tensorflow avec keras

Côte à côte, vérifiez 3 vidéos d'algèbre linéaire de Blue 1 Brown pour améliorer vos mathématiques. une fois par jour mais tous les jours une vidéo.

Et maintenant, concentrez-vous sur les mathématiques derrière la logique (n'importe quel algorithme). Vous pouvez essayer de créer un cours d'apprentissage automatique.

Utilisez Tensorflow pour créer une application Android, une application IOS, un sommet de développement RaspPi Check Tensorflow 2016/2017.

Ou si vous avez besoin d'un cours intensif, consultez ce https://youtu.be/u4alGiomYP4


1
Soyons clairs, l'IA ne consiste pas uniquement à lire des livres html et à commencer la programmation, clarifions ici! OP doit consulter des professeurs d'Oxford, de Harvad, etc.
Quintumnia

3

Avant d'entrer dans l'Intelligence Artificielle, il faut en finir avec les prérequis. Il n'y a pas de liste solide, mais une bonne connaissance des différents algorithmes est obligatoire. En dehors de cela, vous devriez être à l'aise avec au moins un langage de programmation, comme C ++ ou Java. Je ne vous proposerai pas de plonger dans l'intelligence artificielle si vous êtes complètement nouveau en informatique. Une certaine expérience de la programmation avant de plonger dans l'intelligence artificielle sera un avantage pour vous.

Commencez à lire (blogs, articles, articles universitaires, etc.) sur l'intelligence artificielle. Comme ce que c'est, ses applications, son état actuel et d'autres choses que vous pouvez trouver. Commencez à créer des codes AI pour de petits jeux comme Tic Tac Toe, Sudoku, Reversi (Othello), etc. pour commencer. Vous pouvez créer votre propre simulateur et créer un code qui résout le cube Rubik. De même, créez des codes pour la reconnaissance des formes et l'apprentissage automatique. Rien de mieux que d'apprendre en faisant. Des langages comme LISP et python seront très utiles. Voici deux réponses qui vous aideront, ans1 et ans2 .

Si vous êtes une personne qui aime lire et apprendre des livres (comme moi), vous pouvez acheter l'intelligence artificielle: une approche moderne (Peter Norvig et Stuart Russell). Le livre est très bon et fonctionne bien pour le niveau intermédiaire et avancé. Essayez de résoudre les problèmes d'exercice donnés dans le livre. La solution pdf des livres est disponible en ligne . Pour le Machine Learning, deux livres que je recommande sont Pattern Recognition and Machine Learning (Christopher M. Bishop) et Programming Collective Intelligence (O'Reilly).

Pour commencer, il y a un très bon article sur l'intelligence artificielle et la singularité technologique.

L'article est long et divisé en deux parties. Je vous recommande fortement de lire cet article si vous êtes sérieux au sujet de l'intelligence artificielle. Cela vous donnera de bonnes informations.

La connaissance de la théorie computationnelle vous aidera grandement. Surtout lorsque vous travaillez dans le domaine du traitement du langage naturel. D'autres sous-domaines de l'IA qui pourraient vous intéresser seront l'apprentissage automatique, l'informatique évolutive, les algorithmes génétiques, l'apprentissage par renforcement, l'apprentissage profond, etc. La liste continue. Mieux connaître les statistiques, mieux ce sera pour l'intelligence artificielle. Restez à l'écoute des récents événements sur le terrain via des forums, des sites Web, etc. Le site Web Open AI est également une très bonne source.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.