{"id":8483,"date":"2019-01-23T18:01:40","date_gmt":"2019-01-23T17:01:40","guid":{"rendered":"https:\/\/sciencetonnante.wordpress.com\/?p=8483"},"modified":"2019-01-23T18:01:40","modified_gmt":"2019-01-23T17:01:40","slug":"ia-creativite","status":"publish","type":"post","link":"https:\/\/scienceetonnante.com\/blog\/2019\/01\/23\/ia-creativite\/","title":{"rendered":"Une intelligence artificielle peut-elle \u00eatre cr\u00e9ative ? Le cas des jeux."},"content":{"rendered":"<p>La vid\u00e9o du jour parle de la cr\u00e9ativit\u00e9 des IA, vue dans le contexte des jeux !<\/p>\n<p><iframe title=\"Une intelligence artificielle peut-elle \u00eatre cr\u00e9ative ? \u2014\u00a0Science \u00e9tonnante #57\" width=\"770\" height=\"433\" data-src=\"https:\/\/www.youtube.com\/embed\/xuBzQ38DNhE?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" class=\"lazyload\" data-load-mode=\"1\"><\/iframe><\/p>\n<p>Pour ceux qui voudraient aller plus loin, quelques compl\u00e9ments d&rsquo;usage.<\/p>\n<h3>Le MinMax<\/h3>\n<p>Un premier point que j&rsquo;ai pass\u00e9 sous silence pour rester simple, c&rsquo;est la fa\u00e7on dont on d\u00e9cide du \u00ab\u00a0meilleur\u00a0\u00bb coup une fois qu&rsquo;on dispose de toutes les \u00e9valuations. Pour vous l&rsquo;illustrer, voici une petite \u00e9nigme.<!--more--><\/p>\n<p>Imaginez que j&rsquo;aie 4 coups possibles, A, B, C et D, et que chacun de ces coups puisse appeler 4 r\u00e9ponses. Supposez que les r\u00e9sultats de l&rsquo;\u00e9valuation des 16 positions r\u00e9sultantes soient les suivants,\u00a0quel coup dois-je choisir ?<\/p>\n<p><a href=\"https:\/\/scienceetonnante.com\/blog\/wp-content\/uploads\/2019\/01\/capture.png\"><img decoding=\"async\" class=\"aligncenter size-large wp-image-8486 lazyload\" data-src=\"https:\/\/scienceetonnante.com\/blog\/wp-content\/uploads\/2019\/01\/capture.png?w=676\" alt=\"\" width=\"676\" height=\"379\" data-srcset=\"https:\/\/scienceetonnante.com\/blog\/wp-content\/uploads\/2019\/01\/capture.png 1214w, https:\/\/scienceetonnante.com\/blog\/wp-content\/uploads\/2019\/01\/capture-300x168.png 300w, https:\/\/scienceetonnante.com\/blog\/wp-content\/uploads\/2019\/01\/capture-1024x574.png 1024w, https:\/\/scienceetonnante.com\/blog\/wp-content\/uploads\/2019\/01\/capture-768x430.png 768w\" data-sizes=\"(max-width: 676px) 100vw, 676px\" src=\"data:image\/svg+xml;base64,PHN2ZyB3aWR0aD0iMSIgaGVpZ2h0PSIxIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjwvc3ZnPg==\" style=\"--smush-placeholder-width: 676px; --smush-placeholder-aspect-ratio: 676\/379;\" \/><\/a><\/p>\n<p>Si vous avez r\u00e9pondu \u00ab\u00a0B\u00a0\u00bb car c&rsquo;est le coup qui m\u00e8ne \u00e0 la position la plus int\u00e9ressante (+8), vous \u00eates tomb\u00e9s dans le pi\u00e8ge classique ! En effet il faut partir du principe que si on cherche \u00e0 maximiser son score, l&rsquo;adversaire lui a l&rsquo;objectif inverse. Donc si il n&rsquo;est pas plus b\u00eate que nous, il cherchera toujours \u00e0 jouer la meilleure r\u00e9ponse (et donc si on joue B il jouera sa 4e option et le score sera 0).<\/p>\n<p>La bonne r\u00e9ponse est donc C, car si l&rsquo;adversaire joue son meilleur coup on sera \u00e0 +1, ce qui est le mieux qu&rsquo;on puisse esp\u00e9rer.<\/p>\n<p>Ce petit exemple illustre le principe du MinMax, c&rsquo;est-\u00e0-dire qu&rsquo;on cherche le coup qui permet de maximiser son score sachant que l&rsquo;adversaire va le minimiser.<\/p>\n<h3>Sur la mani\u00e8re de chercher dans l&rsquo;arbre<\/h3>\n<p>Ma vid\u00e9o sugg\u00e8re qu&rsquo;un algorithme comme celui qui tournait sur Deep Blue fait une recherche exhaustive dans l&rsquo;arbre de fa\u00e7on totalement stupide. En r\u00e9alit\u00e9 \u00e7a n&rsquo;est pas si bourrin que \u00e7a.<\/p>\n<p>Un simple petit calcul montre que si Deep Blue voulait chercher de fa\u00e7on exhaustive avec 12 coups d&rsquo;anticipation, il faudrait \\(20^{12}\\) \u00e9valuations, soit 4 millions de milliards. M\u00eame \u00e0 200 millions d&rsquo;\u00e9valuations par secondes, cela fait longtemps \u00e0 r\u00e9fl\u00e9chir.<\/p>\n<p>Deep Blue \u00e9tait en fait bas\u00e9 sur une technique classique appel\u00e9e \u00ab\u00a0L&rsquo;\u00e9lagage d&rsquo;arbre alpha\/beta\u00a0\u00bb, qui permet d&rsquo;\u00e9viter de visiter des branches dont on sait qu&rsquo;elles n&rsquo;am\u00e9lioreront pas le meilleur r\u00e9sultat qu&rsquo;on puisse esp\u00e9rer. Stockfish fonctionne sur un principe similaire.<\/p>\n<h3>Sur la base de donn\u00e9es utilis\u00e9e par AlphaGo<\/h3>\n<p>Il semble que j&rsquo;ai fait une erreur ou du moins une exag\u00e9ration concernant la base de donn\u00e9es utilis\u00e9e par AlphaGo pour s&rsquo;entrainer (version \u00ab\u00a0Apprentissage supervis\u00e9\u00a0\u00bb, celle qui a battu Lee Sedol).<\/p>\n<p>En effet la base est constitu\u00e9e de parties jou\u00e9es par des joueurs 6e \u00e0 9e dan (que j&rsquo;ai appel\u00e9 de fa\u00e7on informelle \u00ab\u00a0des grands maitres du go\u00a0\u00bb) et a \u00e9t\u00e9 extraite de la base online KGS.\u00a0 Or j&rsquo;ai l&rsquo;impression qu&rsquo;il y a une ambigu\u00eft\u00e9 entre la notion de dan \u00ab\u00a0amateur\u00a0\u00bb et de dan \u00ab\u00a0professionnel\u00a0\u00bb. Et j&rsquo;ai l&rsquo;impression que la base KGS r\u00e9f\u00e9rence plut\u00f4t des parties amateurs.<\/p>\n<p>Quelque part, c&rsquo;est plut\u00f4t encore mieux pour AlphaGo, qui semble avoir appris en utilisant des donn\u00e9es qui ne sont pas uniquement des parties de joueurs de classe internationale.<\/p>\n<p>D&rsquo;ailleurs c&rsquo;est en fait un peu plus compliqu\u00e9 que \u00e7a puisque l&rsquo;entrainement du r\u00e9seau charg\u00e9 de faire l&rsquo;\u00e9valuation a b\u00e9n\u00e9fici\u00e9 aussi d&rsquo;apprentissage par renforcement.<\/p>\n<h3>Le fameux 37e coup<\/h3>\n<p>Quelques pr\u00e9cisions concernant ce fameux coup. Je ne joue pas au go donc je n&rsquo;ai clairement pas le niveau pour expliquer en quoi ce coup \u00e9tait inattendu. Mais il semble que g\u00e9n\u00e9ralement pour ce type de coup (appel\u00e9 en anglais \u00ab\u00a0shoulder hit\u00a0\u00bb) qui consiste \u00e0 se mettre en diagonale d&rsquo;une pierre adverse, on se place sur la 3e ou la 4e ligne suivant qu&rsquo;on veuille jouer d\u00e9fensif ou agressif. Mais semble-t-il, \u00ab\u00a0jamais\u00a0\u00bb sur la 5e ligne.<\/p>\n<p>Alors en fait c&rsquo;est plus compliqu\u00e9 que \u00e7a, et \u00e7a n&rsquo;est pas le propos ici. Des \u00ab\u00a0shoulder hits\u00a0\u00bb sur la 5e ont l&rsquo;air tout \u00e0 fait possible, mais apparemment pas dans la situation qui se pr\u00e9sentait \u00e0 AlphaGo \u00e0 ce moment l\u00e0.<\/p>\n<h3>AlphaGo, AlphaGoZero et AlphaZero<\/h3>\n<p>Pour les besoins de la simplification de l&rsquo;expos\u00e9, j&rsquo;ai fait un raccourci dans ma pr\u00e9sentation. Il y a eu en r\u00e9alit\u00e9 (au moins) 3 versions de l&rsquo;algorithme :<\/p>\n<ul>\n<li>AlphaGo, qui a battu Lee Sedol<\/li>\n<li>AlphaGo Zero, la premi\u00e8re version fonctionnant purement en apprentissage par renforcement, mais uniquement pour le go.<\/li>\n<li>AlphaZero, fonctionnant aussi bien pour le go, les \u00e9checs ou le shogi.<\/li>\n<\/ul>\n<p>Je n&rsquo;ai pas \u00e9voqu\u00e9 AlphaGo Zero, la version interm\u00e9diaire. Et en fait c&rsquo;est elle qui a battu \u00ab\u00a0Alpha Go Lee Sedol\u00a0\u00bb par 100 \u00e0 0.<\/p>\n<p>La diff\u00e9rence entre AlphaGo Zero et AlphaZero, est que le premier exploite quelques sp\u00e9cificit\u00e9s du Go pour se simplifier la vie, ce que les sp\u00e9cialistes appellent du <em>\u00ab\u00a0domain knowledge\u00a0\u00bb<\/em>, par exemple l&rsquo;existence de sym\u00e9tries sur le plateau. Le fait de donner du <em>\u00ab\u00a0domain knowledge\u00a0\u00bb<\/em> permet de r\u00e9duire la complexit\u00e9 de l&rsquo;apprentissage par renforcement (et donc de l&rsquo;acc\u00e9l\u00e9rer), mais au prix d&rsquo;une perte de g\u00e9n\u00e9ralit\u00e9 et de \u00ab\u00a0puret\u00e9\u00a0\u00bb, puisqu&rsquo;on aide l&rsquo;algorithme en lui donnant des infos en plus.<\/p>\n<p>AlphaZero est vraiment la version \u00ab\u00a0pure\u00a0\u00bb, on ne lui donne aucun domain knowledge, vraiment juste les r\u00e8gles et rien que les r\u00e8gles. Il est un peu plus long \u00e0 entrainer que la version pr\u00e9c\u00e9dente, mais l&rsquo;avantage est qu&rsquo;il marche aussi pour d&rsquo;autres jeux abstraits. (Et au go il est l\u00e9g\u00e8rement sup\u00e9rieur \u00e0 AlphaGo Zero).<\/p>\n<h3>Et les autres jeux vid\u00e9o ?<\/h3>\n<p>J&rsquo;ai h\u00e9sit\u00e9 dans cet \u00e9pisode \u00e0 parler des applications de l&rsquo;IA \u00e0 d&rsquo;autres jeux, notamment vid\u00e9o. J&rsquo;aurai pu par exemple \u00e9voquer DOTA2 ou StarCraft. Apparemment j&rsquo;ai bien fait de m&rsquo;abstenir, car \u00e0 l&rsquo;heure o\u00f9 j&rsquo;\u00e9cris ces lignes\u00a0 DeepMind a annonc\u00e9 qu&rsquo;ils allaient faire une grosse annonce concernant StarCraft, le jour qui suit la publication de la vid\u00e9o. Donc \u00e0 suivre !<\/p>\n","protected":false},"excerpt":{"rendered":"<p>La vid\u00e9o du jour parle de la cr\u00e9ativit\u00e9 des IA, vue dans le contexte des jeux ! Pour ceux qui voudraient aller plus loin, quelques compl\u00e9ments d&rsquo;usage. Le MinMax Un premier point que j&rsquo;ai pass\u00e9 sous silence pour rester simple, c&rsquo;est la fa\u00e7on dont on d\u00e9cide du \u00ab\u00a0meilleur\u00a0\u00bb coup une fois qu&rsquo;on dispose de toutes<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[45],"tags":[113],"class_list":{"0":"post-8483","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-informatique","7":"tag-intelligence-artificielle"},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/posts\/8483","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/comments?post=8483"}],"version-history":[{"count":0,"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/posts\/8483\/revisions"}],"wp:attachment":[{"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/media?parent=8483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/categories?post=8483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/scienceetonnante.com\/blog\/wp-json\/wp\/v2\/tags?post=8483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}