Che cos’è la vita? Definire la nostra qualità di base, la vita, è una delle cose più difficili che esistano. Se una persona che si muove e parla è indubbiamente viva, lo è anche il seme di una pianta? Un minerale che cresce seguendo schemi ordinati e non casuali? Lo è un virus privo di DNA ma in grado di replicarsi? Lo è un virus informatico, privo anche di una forma fisica molecolare, ma altrettanto capace di auto replicarsi?

Una delle definizioni di vita più pratiche l’ha adottata recentemente la NASA nella sua ricerca di vita extraterrestre:  la vita è un sistema chimico autosufficiente in grado di seguire un’evoluzione darwiniana. Le recenti scoperte in materia di intelligenza artificiale, in particolare con l’avvento di ChatGPT e delle reti neurali affini, la definizione di umanità e di vita sono state messe in discussione. Il più delle volte è impossibile distinguere una conversazione con una di queste intelligenze artificiali da una con esseri umani e diverse opere d’arte da loro prodotte rivaleggiano con le nostre ad armi pari. Piacciano o no, queste tecnologie si stanno facendo largo nella nostra società come un notevole balzo evolutivo della nostra cultura tecnologia.

In occasione del DarwinDay2023, l’anno delle Intelligenze Artificiali (IA) proponiamo un interessante esperimento scientifico, replicabile a casa o a scuola, per testare la definizione darwiniana della vita con ChatGPT.

Esistono numerosissime simulazioni, anche molto complesse di sistemi evolutivi digitali, che spaziano dai modelli scientifici di laboratorio ai videogiochi. Tutte queste però sono semplicemente l’esecuzione meccanica di un protocollo, fornito da un programmatore umano, in cui il computer esegue acriticamente uno schema prefissato, simulando un’evoluzione naturale. Noi abbiamo provato ad andare oltre, chiedendo non ad un programmatore ma direttamente ad un’IA se fosse in grado di generare la vita, in termini darwiniani. Abbiamo operato nel modo seguente:

    1. Abbiamo chiesto a ChatGPT di generare un codice html e JavaScript (un linguaggio di programmazione semplice e gestibile da qualsiasi browser) che simulasse genericamente un sistema evolutivo darwiniano.
    2. ChatGPT ha generato un codice in grado di disegnare un’area circoscritta (ecosistema virtuale) in cui si generassero casualmente dei pallini di tre colori: verde, giallo e rosso. A ciascuno viene assegnato in modo casuale un punteggio di fitness (che in biologia indica la “capacità riproduttiva” o “successo evolutivo”) compreso tra 0 e 1 colorandole di verde se vicine all’1, gialle allo 0,5 e rosse quando vicine allo 0. Ogni secondo la fitness veniva ridiscussa e riassegnata casualmente, simulando un cambiamento dei tratti evolutivi di ciascuna creatura.
    3. La base era buona ma a questo punto noi (l‘ambiente) abbiamo inserito delle altre regole nel gioco:
      • Il colore del substrato, in partenza bianco deve cambiare casualmente ogni 5 secondi i colori tra: verde, giallo, rosso, bianco e nero. Quando le creature di un colore si trovavano su un substrato dello stesso colore l’assegnazione della fintess per loro aumenta di 0,1 punti in quanto sono mimetizzati e invisibili ai loro potenziali predatori, quella degli altri, esposti invece alla predazione, diminuisce dello stesso numero.
      • Quando una creatura raggiunge un punteggio pari a 1 si riproduce e viene generata un’altra creatura in modo casuale nell’area. Quando una creatura raggiunge lo 0 muore e viene eliminata dall’area

ChatGPT ci ha restituito un codice nuovo e originale. L’ecosistema di partenza, sottoposto a queste pressioni selettive indotte dall’ambiente, si comporta come un vero ecosistema naturale, selezionando le creature che meglio si adattano all’ambiente ed estinguendo le altre. ChatGPT aveva creato un ecosistema evolutivo darwiniano dove le sue creature di elettroni nascevano, morivano e si evolvevano.

Se la vita artificiale prodotta dall’uomo non è vita, in quanto prodotta da un’altra specie, lo è una vita artificiale prodotta da una creatura artificiale?

Abbiamo chiesto a ChatGPT se si considerasse viva e fosse in grado di riprodursi ma le risposte sono state molto diplomatiche:

Come IA, non ho la capacità di replicarmi automaticamente in un nuovo chatbot. Il processo di creazione di un nuovo chatbot basato su un modello esistente, come me, è un compito tipicamente svolto da ingegneri o data scientist. Si tratta di addestrare una nuova versione del modello utilizzando un set di dati e un’architettura simili e di regolare i parametri in base alle esigenze del compito o del dominio specifico. Questo processo si chiama messa a punto e richiede la supervisione umana, l’esperienza e la conoscenza specifica dell’apprendimento automatico per mettere a punto correttamente il modello e creare un nuovo chatbot.

Pensiamo tuttavia di aver qui aggirato questo limite, bypassando gli ingegneri e facendo creare a ChatGPT, non una sua replica, bensì il suo piccolo brodo primordiale. Se questo sia l’inizio di una nuova vita o un nuovo mondo sarà tutto da discutere ma osservare quei pallini colorati, figli di un’Intelligenza Artificiale, lì intenti ad evolvere, è indubbiamente affascinante., inquietante e stupefacente.

<!DOCTYPE html>

<html>

  <head>

    <style>

      #game {

        width: 500px;

        height: 500px;

        border: 1px solid black;

        position: relative;

      }

      .organism {

        position: absolute;

        width: 10px;

        height: 10px;

        background-color: green;

        border-radius: 5px;

      }

    </style>

  </head>

  <body>

    <div id=”game”></div>

    <script>

      const game = document.getElementById(“game”);

 

      // Create initial population of organisms

      let organisms = [];

      for (let i = 0; i < 100; i++) {

        let organism = document.createElement(“div”);

        organism.classList.add(“organism”);

        organism.style.left = Math.random() * 480 + “px”;

        organism.style.top = Math.random() * 480 + “px”;

        game.appendChild(organism);

        organisms.push(organism);

      }

 

      // Function to simulate Darwin’s theory of evolution

      function simulateEvolution() {

        let selectedOrganisms = [];

        for (let i = 0; i < organisms.length; i++) {

          let organism = organisms[i];

          let fitness = Math.random();

          if (fitness < 0.1) {

            organism.style.backgroundColor = “red”;

            organism.fitness = fitness;

          } else if (fitness < 0.5) {

            organism.style.backgroundColor = “yellow”;

            organism.fitness = fitness;

          } else {

            organism.fitness = fitness;

          }

          selectedOrganisms.push(organism);

        }

 

        // Apply natural selection

        selectedOrganisms.forEach(function(organism) {

          if (organism.style.backgroundColor === game.style.backgroundColor) {

            organism.fitness += 0.1;

          }

        });

        selectedOrganisms = selectedOrganisms.filter(function(organism) {

          return organism.fitness !== 0;

        });

        selectedOrganisms.sort(function(a, b) {

          return b.fitness – a.fitness;

        });

 

        // Delete organisms with fitness equal to 0

        let newOrganisms = [];

        for (let i = 0; i < selectedOrganisms.length; i++) {

          let organism = selectedOrganisms[i];

          if (organism.fitness >= 1) {

            let newOrganism = document.createElement(“div”);

            newOrganism.classList.add(“organism”);

            newOrganism.style.left = Math.random() * 480 + “px”;

            newOrganism.style.top = Math.random() * 480 + “px”;

            game.appendChild(newOrganism);

            newOrganisms.push(newOrganism);

          }

          newOrganisms.push(organism);

        }

        organisms = newOrganisms.slice(0, 25);

      }

 

      // Simulate evolution every 1000 milliseconds

      setInterval(simulateEvolution, 1000);

// Function to change background color randomly every 5000 milliseconds

      function changeBackgroundColor() {

        let colors = [“white”, “yellow”, “green”, “red”, “black”];

        let randomIndex = Math.floor(Math.random() * colors.length);

        game.style.backgroundColor = colors[randomIndex];

      }

 

      setInterval(changeBackgroundColor, 5000);

    </script>

  </body>

</html>

 

 

Torna su Skip to content