Je voulais simplement dire qu'il était possible de programmer de l'IA avec n'importe quel language puisqu'il ne s'agit (comme j'ai écrit dans mon post si tu l'as bien compris) que de coder des boucles et des nombres aléatoires ... Donc pas besoin de language particulier pour des AG ou des RNA ...
Hello
J'ai programmé des algorithmes d'IA en Matlab et je les ai ensuite recodé en C#.
Résultat : un gain de rapidité d'au moins un facteur 10 !!!!! Donc si tu me dis que Octave est plus lent que Matlab, petit problème .... (en effet, l'un des plus gros pb de l'IA, et en particulier des algorithmes itératifs combinatoires tels que les AG, c'est le temps de calcul ...)
Et ça se voit :
Ou des opérations matricielles, et tout langage qui offre une syntaxe et/ou des algorithmes optimisés de calculs sur les matrices peut être assez sympathique.
Exact, mais il y a des langages qui seront plus adaptés pour coder rapidement et d'autres qui seront meilleurs pour les perfs.
Donner des noms de langages sans se préoccuper de ces deux aspects est déjà une erreur.
Sauf que ça veut rien dire "des algorithmes d'IA".
Apprentissage statistique ? Apprentissage symbolique ? Décision ? Recherche Opérationnelle ?
Faux : c'est un problème seulement dans certains cas (jeux vidéo où le perso doit agir en "temps réel", ...).
Je parle juste des techniques que je connais : réseaux de neurones, algorithmes génétiques. Dans ces 2 cas, c'est clairement des algorithmes itératifs (gourmands en temps de calcul)
Ne dis pas que ça veut rien dire "des algorithmes d'IA", demande moi juste de préciser lesquels ...
Ca dépasse à mon avis largement les jeux vidéo. Quelle que soit l'appli, il vaut mieux donner un résultat en quelques minutes qu'en plusieurs heures ... Non ?
Mais bon, il faut aussi voir la facilité de mise en oeuvre ... J'ai commencé à coder de l'IA avec Matlab parce que c'était en effet beaucoup plus facile pour le calcul matriciel. Ensuite, pour développer une appli rapide, le passage à C# s'est avéré payant ...
Si je me souviens bien Matlab = Matrix Laboratory ? Or un laboratoire, c'est fait pour faire de la recherche et des essais. Ensuite, on peut passer à autre chose ...
@rurouni je ne sais pas ce qui te fait dire « faux » à la phrase de vladvlad sur le problème de la performance. Mais à ma connaissance, c'est bien là la limitation la plus importante actuellement de l'IA. Tant en vitesse qu'en mémoire. Les techniques quelles qu'elles soient doivent être améliorées.
@vladvlad par contre, ce n'est pas avec C# que tu auras les meilleurs résultats. C'est plutôt vers le C qu'il faut chercher -_-
Et il vaut mieux passer 2 heures à coder pour avoir un résultat en 1 seconde ou passer 20 minutes à coder pour avoir un résultat en 10 secondes ?
La performance n'est pas un problème absolu.
Tu as peut-être oublié quelle était la question de départ, qui n'est pas de faire de l'IA super optimisée d'la mort qui tue, mais quel(s) langage(s) pour coder des algos.
Ben j'lécris juste après le faux
Il y a tout plein de cas dans lesquels les perfs ne sont pas un problème.
Après pour une appli pro, c'est sûre que si l'appli met 1H pour donner un résultat et que l'appli du concurrent le fait en 15 secondes, là c'est un gros problème
Oui j'avais compris. En général, je préconise de se concentrer sur la conception car c'est de là que viennent les problèmes. Mais en IA, la performance est vraiment LE problème. Bien sûr, cela renvoie aux algorithmes et non au langage lui-même. Mais reste que beaucoup de travaux se font pour recoder des systèmes en Lisp vers du C pour des raisons d'efficacité. Il y a des cas pour lesquels les performances ne sont pas un problème, mais il y en a énormément pour lesquels c'est le problème. Je parle bien sûr donc de performances au sens large du terme, car j'englobe l'inefficacité d'un algorithme à l'intérieur.
Ça dépend du contexte.
Le contexte ici est celui de personnes qui veulent coder quelques algos et qui cherchent un langage pour ça.
Ma réponse, dans ce contexte, est qu'utiliser un langage objet n'est pas forcément la solution la plus adaptée, et qu'il existe des langages qui facilitent l'écriture des algorithmes en fournissant une syntaxe rapide et sympathique pour certaines opérations très courantes (dont la multiplication de matrice).
J'ai répondu uniquement par rapport à ces personnes qui cherchent un langage.
On peut raisonnablement supposer que leur but est d'écrire ces algos pour les expérimenter un peu, et pas de faire un logiciel super optimisé qui va les rendre riches et célèbres.
Maintenant, si on sort de ce contexte, oui, les problèmes d'IA sont des problèmes difficiles (même sans aller jusqu'aux problèmes NP-complets), qui demandent énormément de calculs sur des ensembles de données tout aussi énormes.
Et je suis aussi d'accord sur le fait que, quand on doit absolument avoir des bonnes performances (sur des algos qu'il faut laisser tourner plusieurs jours, et que c'est bien si on doit pas avoir à attendre plusieurs semaines à la place, sur des algos qui doivent donner une solution en "temps réel", ...) il faut passer à des langages beaucoup plus rapides
J'ai eu des expériences à faire rapidement il y a pas longtemps, ben j'ai regretté de pas avoir le temps de recoder les algos en C++, parce que les temps de moulinage c'était vraiment la galère
Le débat intelligence humaine vs intelligence artificielle est dépassé déjà depuis quelques temps. 3 domaines de recherche convergeants (biologie, nanotechnologies et informatique) vont aboutir d'ici très peu de temps à des machines AU DELA de l'intelligence humaine. C'est en tous cas, ce que pensent de plus en plus de chercheurs issus de divers milieux académiques (surtout américains).
Cette évolution a un nom : la singularité.
Cet été l'université de Stanford en Californie a organisé une conférence sur le sujet. Prenez le temps de parcourir le site, c'est edifiant ... http://sss.stanford.edu
En gros, l'idée est la suivante :
La puissance des processeurs double +/- tous les ans. Nous devrions avoir dans le courant de la décénie 2020 un pc à 1.000 EUR ayant une puissance de calcul égale à celle d'un cerveau humain (10^17 opérations/sec - estimation faite par Ray Kursweil. Même s'il se trompe d'un rapport de 3 ou 4 c'a ne fait que reculer que de quelques années)
Une des approches proposée (il y en a d'autres) pour développer une AGI (on ne parle plus de IA - Intelligence artificielle - mais de AGI : Artificial General Intelligence ) supérieure à l'intelligence humaine, est de faire du reverse engeneering du cerveau. Grâce à des nanorobots par exemple (nano = plus petit que la taille d'une cellule), nous numériserions un cerveau humain, c-à-d numériser la structure et le fonctionnement de chaque neurone, synapse, cellule gilialle, etc ...
Mais alors que ce passe t-il lorsque cet AGI, commence à s'améliorer elle-même ? Elle va créer des machines encore plus rapides. Chaque nouvelle génération étant de plus en plus rapide et ce , de façon exponentielle.
- on double la vitesse de calcul tous les ans,
- tous les 6 mois
- 3 mois
- 45 jours
- 22 jours
...
- chaque seconde, demi-seconde .... SINGULARITE !!!
Même s'il y a une limite physique aux performance des processeurs actuels, une AGI de plus en plus intelligente pourrait découvrir ou améliorer d'autre voies (ordinateur quantique par exemple)
Ca commence à faire quelques années que la vitesse des processeurs n'augmentent plus vraiment (les processeurs se tournent vers du multi coeurs)
Pourrais tu me citer un article d'un chercheur qui avance cela? Parce que laisses moi sérieusement en douter. Je ne dis pas que ce n'est pas faisable. Je dis que le « d'ici très peu de temps » c'est du n'importe quoi. On croyait dans les années 60 que la machine (je veux dire l'ordinateur) serait supérieur à l'humain. On est encore très loin du résultat. Sans percée technologique importante, il est douteux qu'on y arrive. Comme le note Millie, la vitesse des processeurs est quasiment arrivée à la limite qu'impose la physique. C'est un premier pointe qui rend ce raisonnement spécieux (notons que je ne dis pas faux ou absurde): les processeurs ne doublent plus leur vitesse. L'autre, c'est le « reverse engineering » du cerveau. C'est plus facile à dire qu'à faire. Et rien ne prouve qu'en numérisant le cerveau au complet, on en trouve les fonctionnalités. En fait, on se heurte à un version édulcorée (sorti de son cadre si vous préférez) du théorème d'incomplétude de Gödel: une « numérisation » ne pourrait suffire; il faudrait une métainterprétation.
L'IA avance réellement. Mais il ne faut pas fantasmer dessus. Ceux qui l'ont fait dans le passé, ce sont en général cassé les dents. Toute la vieille du MIT le sait.
Par contre merci pour le lien Je ne l'avais pas.
Il y a toutes les présentations et j'espère qu'ils y mettront les transcripts.
Difficile d'assister à tout et ce genre d'initiative est bien sympa.
L'intelligence artificielle fait rêver.
Je me souviens de Deep Blue et de Deeper blue, pour moi ce sont des exemples de l'avancée de l'IA. Toutefois, je ne pense pas que la machine surpassera l'homme au sens d'humanité.
Après en termes techniques, c'est vrai qu'un ordinateur calcule beaucoup plus vite que nous.
La recherche sur l'IA est intéressante car cela permettra sans doute de répondre à des questions dont on ne peut pas trouver les réponses nous-même !
C'est une notion métaphysique. Moi je ne vois pas pourquoi cela ne pourrait pas arriver. Sauf qu'il faudra des éléments scientifiques que nous n'avons pas encore. Après tout, nous ne sommes physiquement que des machines. Le raisonnement que nous avons est né (si on reste dans une optique matérialiste) de cette machine. On ne sait pas ce qui pourra naitre d'un ordinateur donc dans plusieurs milliers (millions?) d'années. Mais c'est clair qu'on est loin de parler de science dans l'état actuel des choses là.
L'ordinateur fait déjà ça d'une certaine manière: la démonstration du théorème des quatre couleurs n'est pas humainement faisable par un seul humain. D'un certain côté, on pourrait dire que la machine a dépassé l'humain dans plusieurs domaines. Cependant, l'humain a encore un paquet de domaine où il a de l'avance
Sait tu seulement comment ils fonctionnent ?
Moi oui, et crois moi, ça n'a rien d'interessant...
En gros, les 2 fonctionennent en calcul brut. Aucune finesse, aucun algo interessant, presque jamais de coups réellement innovant, rien du tout.
J'attends le jour où un ordinateur battra le champion du monde en Go.
La ce sera interessant.
( pour ceux qui savent pas, le Go n'est pas brute-forcable, contrairement aux echecs).
En fait, les échecs sont représentables par un gros graphe (chaque arête correspond à des coups possible, chaque sommet correspond à des états). Et il est possible de calculer des stratégies gagnantes (ce qui correspond à résoudre une équation à point fixe). Ce qui est évident si on avait plus de mémoire et une possibilité plus importante de calcul, mais c'est un jeu mathématiquement trivial.
J'avais écrit quelque chose ici http://www.developpez.net/forums/sho...04#post2774404 pour le principe (en prenant l'exemple du jeu de Nim).
Il n'y a rien de magique là dedans, c'est un "simple" graphe et une "simple" équation au point fixe à résoudre (ce qui est simple dans un ensemble fini !)
Hmmm.
Pour autant que je me souvienne du Go, certes c'est brute forcable en theorie, mais c'est beaucoup trop compliqué( une centaine de possibilités par coup, 200 coups par partie en moyenne).
Plus grave, un coup peut etre perdant a court terme et faire changer le cours de la partie a très long terme(genre une centaine de coups plus tard).
perso, j'avais étudié cela avec des arbres alpha-beta, et suivant la profondeur de simulation, on pouvait s'en rendre compte et ne pas backtracker
mais comme toujours, l'explosion combinatoire nous arrêtait vite... ^^
en revanche, pour le problème du go, il y a aussi une approche par reconnaissance de formes qui semble marcher
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager