{"id":145974,"date":"2025-11-07T23:50:58","date_gmt":"2025-11-07T22:50:58","guid":{"rendered":"https:\/\/www.pauljorion.com\/blog\/?p=145974"},"modified":"2025-11-09T02:04:53","modified_gmt":"2025-11-09T01:04:53","slug":"genesis-second-petit-intermede-pour-seuls-geeks-deux-types-de-compression","status":"publish","type":"post","link":"https:\/\/www.pauljorion.com\/blog\/2025\/11\/07\/genesis-second-petit-intermede-pour-seuls-geeks-deux-types-de-compression\/","title":{"rendered":"<b>GENESIS &#8211; Second petit interm\u00e8de pour seuls geeks : deux types de compression<\/b>"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-145985\" src=\"https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM.png\" alt=\"\" width=\"1024\" height=\"1536\" srcset=\"https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM.png 1024w, https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM-200x300.png 200w, https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM-683x1024.png 683w, https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM-768x1152.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Illustration par ChatGPT<\/em><\/p>\n<p>Dans <a href=\"https:\/\/www.pauljorion.com\/blog\/2025\/11\/01\/genesis-petit-intermede-pour-seuls-geeks\/\" target=\"_blank\" rel=\"noopener\">GENESIS \u2013 Petit interm\u00e8de pour seuls geeks<\/a> &#8211; o\u00f9 \u00e9tait pr\u00e9sent\u00e9 un programme g\u00e9n\u00e9rant la suite de Fibonacci en tant que lign\u00e9e reproductive, sans boucle \u00ab\u00a0FOR&#8230; NEXT\u00a0\u00bb, remplac\u00e9e par un \u00ab\u00a0cycle de libido\u00a0\u00bb, la reproduction se poursuivant jusqu\u2019\u00e0 ce que la lign\u00e9e ait atteint une profondeur cible &#8211; j&rsquo;introduisais \u00ab\u00a0C1\u00a0\u00bb, une compression de premier type, pouvant \u00eatre op\u00e9r\u00e9e lors d&rsquo;un couplage.<\/p>\n<p>J&rsquo;explique : si lors du couplage de deux instances de m\u00eame nature a et b, elles poss\u00e8dent des \u00e9l\u00e9ments en commun (en termes ensemblistes : si leur intersection n&rsquo;est pas vide) la description la plus courte (MDL = <em>minimal description length<\/em>) de la paire en tant qu&rsquo;unit\u00e9 peut se contenter de mentionner une seule fois ce qu&rsquo;elles ont en commun (en termes ensemblistes : la description la plus courte de la paire a et b est plus courte que l&rsquo;union des descriptions de a et b envisag\u00e9s s\u00e9par\u00e9ment).<\/p>\n<p>Dans le petit programme Python ci-dessous la compression de premier type \u00ab\u00a0C1\u00a0\u00bb intervient \u00e0 nouveau :<\/p>\n<p><code>c1 = compress_overlap(e1, e2)<\/code> :<\/p>\n<p>= \u00ab\u00a0C1 comprime le recouvrement des deux \u00e9l\u00e9ments a et b de la paire\u00a0\u00bb.<\/p>\n<p>Mais j&rsquo;introduis dans ce petit programme, \u00ab\u00a0C2\u00a0\u00bb : la compression du second type, celle que l&rsquo;on peut op\u00e9rer en raccourcissant la description conjointe de deux m\u00e9canismes A et B parce qu&rsquo;on a d\u00e9couvert qu&rsquo;ils sont analogues : qu&rsquo;ils fonctionnent sous un certain rapport de la m\u00eame mani\u00e8re. On peut du coup d\u00e9crire dans une perspective \u00ab\u00a0trans-substrat\u00a0\u00bb la paire qu&rsquo;ils constituent \u00e0 deux en d\u00e9crivant ce qu&rsquo;ils ont en commun et en pr\u00e9cisant ensuite en quoi chacun des deux m\u00e9canismes, A et B, se distingue de l&rsquo;autre (en termes ensemblistes : l&rsquo;intersection de A et B sert de point de d\u00e9part de la description de la paire, \u00e0 quoi on ajoute la description de A moins ce qu&rsquo;il a en commun avec B, soit A \\ B, et la description de B moins ce qu&rsquo;il a en commun avec A, soit B \\ A).<\/p>\n<p><code>c2 = description_length_saved(rule, network)<\/code><\/p>\n<p>= \u00ab\u00a0C2 exprime l&rsquo;\u00e9conomie r\u00e9alis\u00e9e dans la description des deux m\u00e9canismes (r\u00e8gle symbolique vs r\u00e9seau neuronal) du fait de leur analogie\u00a0\u00bb.<\/p>\n<p>Donc \u00ab C1 \u00bb comme compression de deux instances de m\u00eame nature, du fait de leur couplage, par \u00e9limination de la redondance entre les deux, compression habituellement qualifi\u00e9e d&rsquo;\u00ab\u00a0optimisation\u00a0\u00bb, et \u00ab\u00a0C2\u00a0\u00bb comme compression de deux m\u00e9canismes observ\u00e9s dans des substrats diff\u00e9rents par d\u00e9couverte d&rsquo;une \u00ab\u00a0analogie\u00a0\u00bb dans leur mode de fonctionnement, comme aboutissement d&rsquo;une <em>validation trans-substrat<\/em>.<\/p>\n<p>Le syst\u00e8me g\u00e9n\u00e8re des <em>r\u00e8gles-rejetons<\/em> qui g\u00e9n\u00e9ralisent l&rsquo;analogie d\u00e9couverte entre les deux substrats (ici : symbolique \u2194 neuronal).\u2028C2 mesure la quantit\u00e9 de description que nous \u00e9conomisons gr\u00e2ce \u00e0 une seule <em>r\u00e8gle-rejeton<\/em> rendant compte de plusieurs m\u00e9canismes.<\/p>\n<div>schema Example { features: [x:any, y:any] }<br \/>\nschema Rule { features: [lhs:pattern, rhs:pattern] }# Graines : exemples observ\u00e9s<br \/>\npopulation D = [<br \/>\nExample(x: 0, y: 0),<br \/>\nExample(x: 1, y: 2),<br \/>\nExample(x: 2, y: 4),<br \/>\nExample(x: 3, y: 6),<br \/>\n&#8230;<br \/>\n]<\/p>\n<p># Accouplement de symbolique \u00e0 symbolique : rassemblement des exemples sous une r\u00e8gle provisoire<br \/>\nrule unify_examples(e1:Example, e2:Example) -&gt; child_rule:Rule, c1<br \/>\nwhere pattern = induce_pattern([e1, e2]) # par exemple, y = 2*x<br \/>\nchild_rule = synthesize(e1, e2) with [lhs: \u00ab\u00a0x\u00a0\u00bb, rhs: \u00ab\u00a02*x\u00a0\u00bb]<br \/>\nc1 = compress_overlap(e1, e2) # nombre moindre de paires si la r\u00e8gle est d&rsquo;application<br \/>\nend<\/p>\n<p># Analogie trans-substrat (C2) : alignement de la r\u00e8gle symbolique avec un petit predicteur neuronal<br \/>\nrule cross_substrate(rule:Rule, net:NeuralModel) -&gt; unified:Rule, c2<br \/>\nwhere agree = correlation( rule.predict(D.x), net.predict(D.x) )<br \/>\nif agree &gt; 0.95:<br \/>\nunified = install(rule) # acceptation de l&rsquo;explication symbolique<br \/>\nc2 = description_length_saved(rule, D)<br \/>\nelse:<br \/>\nunified = reject(rule); c2 = 0<br \/>\nend<\/p>\n<p># Pulsion : la curiosit\u00e9 d\u00e9clenche des tentatives de g\u00e9n\u00e9ralisation<br \/>\ndrive curiosity(threshold = 0.5)<\/p>\n<p>on cycle curiosity:<br \/>\ne1, e2 = sample(D, 2)<br \/>\nr, c1 = unify_examples(e1, e2)<br \/>\nif c1 &gt; 0:<br \/>\nunified, c2 = cross_substrate(r, current_net)<br \/>\nif c2 &gt; curiosity.threshold:<br \/>\nrecord(unified, origin=\u2033C2\u2033)<\/p>\n<p># Validation (condition pour qu&rsquo;elle soit retenue)<br \/>\nvalidate(unified across D_test) &gt;= 0.95<\/p>\n<\/div>\n<p><strong>Lecture<\/strong> : la \u00ab boucle d&rsquo;apprentissage \u00bb est le cycle de la curiosit\u00e9 ; la g\u00e9n\u00e9ralisation est une <em>r\u00e8gle-rejeton<\/em> accept\u00e9e uniquement si l&rsquo;analogie entre les deux m\u00e9canismes dans des substrats distincts est \u00e9lev\u00e9e. Il s&rsquo;agit ici de C2 en tant qu&rsquo;abstraction : une seule r\u00e8gle explique de nombreux exemples (gain significatif en MDL = longueur minimale de la description).<\/p>\n","protected":false},"excerpt":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-145985\" src=\"https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM.png\" alt=\"\" width=\"1024\" height=\"1536\" srcset=\"https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM.png 1024w, https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM-200x300.png 200w, https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM-683x1024.png 683w, https:\/\/www.pauljorion.com\/blog\/wp-content\/uploads\/ChatGPT-Image-Nov-8-2025-12_05_13-AM-768x1152.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/p>\n<p style=\"text-align: center;\"><em>Illustration par ChatGPT<\/em><\/p>\n<p>Dans <a href=\"https:\/\/www.pauljorion.com\/blog\/2025\/11\/01\/genesis-petit-intermede-pour-seuls-geeks\/\" target=\"_blank\" rel=\"noopener\">GENESIS \u2013 Petit interm\u00e8de pour seuls geeks<\/a> &#8211; o\u00f9 \u00e9tait pr\u00e9sent\u00e9 un programme g\u00e9n\u00e9rant la suite de Fibonacci en tant que lign\u00e9e reproductive, sans boucle \u00ab\u00a0FOR&#8230; NEXT\u00a0\u00bb, remplac\u00e9e par un \u00ab\u00a0cycle de libido\u00a0\u00bb, la reproduction se poursuivant [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_crdt_document":"","footnotes":""},"categories":[10424],"tags":[9105,5725,10444],"class_list":["post-145974","post","type-post","status-publish","format-standard","hentry","category-genesis","tag-analogie","tag-compression","tag-validation-transsubstrat"],"_links":{"self":[{"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/posts\/145974","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/comments?post=145974"}],"version-history":[{"count":14,"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/posts\/145974\/revisions"}],"predecessor-version":[{"id":145983,"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/posts\/145974\/revisions\/145983"}],"wp:attachment":[{"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/media?parent=145974"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/categories?post=145974"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pauljorion.com\/blog\/wp-json\/wp\/v2\/tags?post=145974"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}