Stiamo facendo manutenzione.

Simulare una mente umana e superarla

La tecnologia è strettamente legata all'informatica. Sempre di più. Quando è di informatica che si parla questa sezione è adatta.
Avatar utente
Aspie96
Amministratore
Messaggi: 1386
Iscritto il: 23/02/2019, 19:52

Re: Simulare una mente umana e superarla

Messaggio da Aspie96 » 19/01/2014, 18:18

Non è necessariamente programmata, in realtà.
Potrebbe anche essere solo hardware (come il cervello umano).

Anche l'intuito può essere, teoricamente, creato utilizzando principi fisici e chimici, anche avendo a disposizione volumi ridotti.
Una prova è la specie umana.
Avatar utente
[email protected]
Messaggi: 169
Iscritto il: 16/05/2014, 22:30

Re: Simulare una mente umana e superarla

Messaggio da [email protected] » 25/05/2014, 19:51

Piccolo concetto riguardo la programmazione.

Io ho ancora fantasticato sulla creazione di una coscienza virtuale, ho tenuto conto di molti aspetti sel significato di "vivere"
e ho pensato ad un modello ad Array e funzioni.

l'array contiene tutte le informazioni sullo stato mentale; es:

Codice: Seleziona tutto

short int sent[127]; //dichiarazione array degli stati sentimentali.

sent[0] = 0; //primo valore, rabbia.
sent[1] = 0; //secondo valore, paura
sent[2] = 0; //felicità
...
sent[127] = 0; //disappunto


partendo da valori short int (con un range di 65536 livelli emozionali, da -32767 a +32767) possiamo simulare lo stato mentale di
una coscienza virtuale.

Input e Output, sono gestibili tramite librerie, periferiche e drivers.

Codice: Seleziona tutto

#inlcude <iostream.h>
#include <microphone.h>
#include <webcam.h>
#include <speaker.h>


come avviene la comunicazione con il programma?

tramite procedure,

Codice: Seleziona tutto

void ascolta(){
   microphone.listen.start(); //mette in ascolto il microfono con un'ipotetica procedura
}

void parla(string frase){
   speaker.play(vocal.synthetize(frase)); //vocal.synthetize() <-- converte una frase scritta in suono, speaker.play() <-- riproduce un suono
}


Fino a quì la cosa è abbastanza statica, un programma con cui parli e ottieni risposta;
dobbiamo inserire comunque dei controlli che agiscano in base allo stato emozionale:

Codice: Seleziona tutto

if(sent[0] < 0){      //sent[0] è l'array della rabbia, se è arrabbiato risponde male.
   rispondiBene();
}
else{
   rispondiMale();
}


che magari diventano più complessi in base all'incidenza di diverse variabili nell'array emozionale

Codice: Seleziona tutto

if(sent[0] > 0){
   if(sent[1] < 0{
      rispondiMale(); //se è arrabbiato e non ha paura risponde male.
   }
   if(sent[1] >0{
      rispondiNormale(); //se è arrabbiato e ha paura, risponde normale.
   }
}
if(sent[0] > 0){
   rispondiBene(); //se è felice risponde bene.
}


Il programma deve memorizzare, tutto quello che viene detto, i concetti, le frasi e le risposte.

Codice: Seleziona tutto

void memorizza(char frase){
   memoria.ricorda(frase); //questa procedura scrive su file tutte le frasi dette, dalle quali il programma apprende.
}


Quando pensiamo a qualcosa ci tornano in mente delle sensazioni; se dico la parola "scoglio" qualcuno pensa subito allo scoglio associando qualche ricordo;
se per esempio Tizio ha mangiato una pizza in un ristorante a lume di candela con la moglie con veduta sugli scogli, la parola scoglio gli suscita sensazioni positive,
se Caio faceva i tuffi in mare da uno scoglio con la fidanzata e questa è morta colpendo le rocce, la parola scoglio butta a terra il suo morale, motivo per cui il codice sarà:

Codice: Seleziona tutto

for(i=0; i<127; i++){
   sent[i] = arrotondaInt((sent[i]+parola.sensaz_ricordate[i]*0.25)/1.25) //questo conto tenderà a far salire o scendere ogni livello emozionale in base a quello che suscita la parola.
}


Questo serve per dare dei concetti alle parole che il programma interpreta, per esempio associerà la parola "morte" a sensazioni negative, e la parola "felice" a sensazioni positive.

Logica interna:

Codice: Seleziona tutto

char formulaFrase(char soggetto, char verbo, char complemento_i){

char frase[1000];

frase = soggetto + " " + verbo + " " + complemento_i +".");

return(frase);
}


In questo modo possiamo interagire con il computer e lui potrà rispondere con argomenti attinenti.

es:

Codice: Seleziona tutto

tizio: "ciao, ho guidato un'automobile rossa"
computer: "ciao, le automobili sono veloci"


(non è il massimo dell'intelligenza, ma va bene, un semplice modello con convenevole, soggetto, verbo e complemento)

Magari il computer può memorizzare schemi di parole (es, soggetto sottinteso, verbo, complemento oggetto, complemento di luogo, complemento di mezzo).

es:

Codice: Seleziona tutto

computer: "ciao, tu accendi la webcam"
computer: "ciao, io non vedo immagini"
tizio: "ieri ho mangiato la pizza a casa, con la forchetta"
computer: "oggi ho consumato corrente alternata, sulla scrivania, con il cavo elettrico"


Lo schema verbale è passato da "convenevole, soggetto verbo complemento oggetto" a "complemento di luogo, verbo, complemento oggetto, complemento di luogo, complemento di mezzo".
Più avanti lo schema di conversazione appreso potrebbe ripresentarsi con altri termini.

Codice: Seleziona tutto

tizio: "ieri sono stato da mio zio Tobia, ha una mucca molto simpatica nel prato dietro la fattoria, mangia l'erba"
computer: "come mangia il fieno?"
tizio: "con la bocca"
computer: "ieri la mucca ha mangiato l'erba, nel prato dietro la fattoria, con la bocca."


Il computer ha analizzato la frase, ha memorizzato e associato molte cose (tizio ha zio, zio ha nipote tizio, zio ha mucca, mucca molto simpatica, prato dietro fattoria, fattoria davanti prato, mucca in prato, mucca mangia erba).

Il programma ha bisogno anche di classificare le informazioni, con gruppi e sottogruppi.

es:

Codice: Seleziona tutto

esseri viventi
   piante
      acquatiche
         alghe
         ...
      di terra
         conifere
            pino
            abete
            ...
         latifoglie
            quercia
            melo
            noce
            ...
   animali
      vertebrati
         pesci
         anfibi
         rettili
         uccelli
         mammiferi
            canidi
            felidi
            bovini
               manzo
                  mucca di zio di tizio
               gnu
               bue muschiato
            primati
               gorilla
               orango
               cappuccina
               uomo
                  tizio
                  tobia, zio di tizio
      molluschi
      artropodi
   batteri
   virus


In questo modo possiamo far "dedurre" al computer che:

Codice: Seleziona tutto

tizio: "gli animali depongono le uova"
computer: "tu deponi le uova"
tizio: "io non depongo le uova, i mammiferi non depongono le uova, i mammiferi partoriscono, hanno la placenta"
computer: "la mucca di Tobia ha la placenta"
tizio: "esatto"
computer: "tu hai la placenta"
...


Diciamo che non ci ha proprio azzeccato ma ha associato che i soggetti hanno caratteristiche ereditarie, come il fatto che i mammiferi hanno la placenta.
Associando i concetti di logica ai codici emozionali, si potrebbe programmare qualcosa di molto simile ad un interlocutore.
Avatar utente
Aspie96
Amministratore
Messaggi: 1386
Iscritto il: 23/02/2019, 19:52

Re: Simulare una mente umana e superarla

Messaggio da Aspie96 » 26/05/2014, 17:35

[email protected] ha scritto:

Codice: Seleziona tutto

char formulaFrase(char soggetto, char verbo, char complemento_i){

char frase[1000];

frase = soggetto + " " + verbo + " " + complemento_i +".");

return(frase);
}

Ahia, qui ci sono alcuni errorini di programmazione: ti servono in input delle stringhe, non dei caratteri. Devi restituire una stringa, non un carattere. Inoltre, stai scrivendo codice in C, quindi non puoi utilizzare l'operatore + per la concatenazione.
Fra l'altro, tu non puoi restituire un vettore come un semplice valore. Dovresti usare una malloc e poi restituire il puntatore o, ancora meglio, chiedere in input il vettore di output.
Il codice corretto sarebbe:

Codice: Seleziona tutto

void formulaFrase(char *output, char *soggetto, char *verbo, char *complemento_i){    // Non restituisco nessun valore, tanto c'è il vettore di output.

strcpy(output,soggetto);
strcat(output," ");
strcat(output,verbo);
strcat(output," ");
strcat(output,complemento_i);
strcat(output,".");
}

Non l'ho provato e non sono sicuro di non aver fatto errori. Ovviamente serve importare le apposite librerie. Probabilmente si può fare anche meglio (magari con dei cicli al posto dei richiami a funzione), ma ora non ho voglia di pensarci.
Comunque, Anche concettualmente, una funzione del genere non sarebbe molto utile per un'intelligenza artificiale.
Avatar utente
[email protected]
Messaggi: 169
Iscritto il: 16/05/2014, 22:30

Re: Simulare una mente umana e superarla

Messaggio da [email protected] » 26/05/2014, 19:53

(per gli errori di programmazione c'è il debug :roll:)
Tu che suggerisci di fare?
Ultima modifica di [email protected] il 26/05/2014, 20:29, modificato 1 volta in totale.
Avatar utente
Aspie96
Amministratore
Messaggi: 1386
Iscritto il: 23/02/2019, 19:52

Re: Simulare una mente umana e superarla

Messaggio da Aspie96 » 26/05/2014, 19:57

Io avevo un'idea, ma non so se mi convenga spiegarla qui.
Tuttavia riguarda solo il fatto di interpretare frasi, non produrle (più complesso).

Si tratta sostanzialmente di codificare i concetti.
Ovviamente ci sono già software che provano ad elaborare le stringhe e a dire qualcosa.
Un esempio è Cleverbot:
http://www.cleverbot.com/
Avatar utente
[email protected]
Messaggi: 169
Iscritto il: 16/05/2014, 22:30

Re: Simulare una mente umana e superarla

Messaggio da [email protected] » 26/05/2014, 20:28

Penso che cleverbot si basi sull'utilizzo di risposte già date.

Se tu dici qualcosa, Cleverbot rigirerà la stessa risposta ad un altro utente che avrà detto la stessa cosa che lui ha detto a te,
se tu dici: "fai schifo"
motivo per cui parlarci in italiano sembra di parlare con qualcuno ignorante come una falce fienaia, parlarci in inglese invece sembra di parlare ad un bimbo di 4 anni.

ita:

Codice: Seleziona tutto

IO: Quanti tentacoli ha un polpo.
Cleverbot: Cosa?
IO: Quanti tentacoli ha un polpo?
Cleverbot: Dài parla beneeee!!!
IO: Quanti tentacoli ha un polipo?
Cleverbot: Ok sei maschio

Cleverbot non ha capito, probabilmente nessuno ha mai chiesto quanti tentacoli ha un polpo, poi ho pensato che non capisse "polpo" e ho scritto "polipo", ma non ha comunque capito una Se*a

In inglese invece la cosa cambia.

Codice: Seleziona tutto

IO: How many tentacles does a octopus have?
Cleverbot: Sadly I have no tentacles.
IO: How many tentacles does a squid have?
Cleverbot: Only as many as your pet squid.


Cioè, mi pare che un programma così si basi su frasi già fatte e risposte pronte, in base a quello che dici ti rigira una risposta fatta da un'altro utente.
Un'ulteriore prova è che Cleverbot non ha memoria, se tu gli dici che ti chiami Gino, e gli chiedi successivamente "come mi chiamo?" non ti saprà rispondere.
Avatar utente
Aspie96
Amministratore
Messaggi: 1386
Iscritto il: 23/02/2019, 19:52

Re: Simulare una mente umana e superarla

Messaggio da Aspie96 » 26/05/2014, 20:37

Cleverbot è particolare e interessante.
Vale la pena aprire una discussione apposta, ma ora non posso.

Celverbot ha una capacità di apprendimento e a volte sembra effettivamente umano, a volte è palesemente un robot.
Avatar utente
[email protected]
Messaggi: 169
Iscritto il: 16/05/2014, 22:30

Re: Simulare una mente umana e superarla

Messaggio da [email protected] » 26/05/2014, 22:32

Ho letto questo:
Cleverbot si differenzia dai tradizionali chatterbot per il fatto che l’utente non tiene una conversazione con un programma che risponde direttamente a un testo inserito. Invece, quando l’utente inserisce il testo, l’algoritmo seleziona in anticipo delle frasi provenienti dai database delle conversazioni precedenti. È stato affermato che “parlare con Cleverbot è un po’ come parlare con la comunità di Internet”.

Fonte: Wikipedia http://it.wikipedia.org/wiki/Cleverbot.

secondo me sarebbe più "umano" un bot basato su stati sentimentali, informazioni ad albero con ereditarietà, e apprendimento.
francesco.aliotta
Messaggi: 812
Iscritto il: 09/07/2014, 16:33

Re: Simulare una mente umana e superarla

Messaggio da francesco.aliotta » 17/07/2014, 13:15

Che una mente artificiale debba essere necessariamente programmata, mi pare un salto logico ingiustificato (se ho compreso bene le tue parole).
Avatar utente
Aspie96
Amministratore
Messaggi: 1386
Iscritto il: 23/02/2019, 19:52

Re: Simulare una mente umana e superarla

Messaggio da Aspie96 » 17/07/2014, 13:51

Francesco, una mente artificiale dovrebbe per forza contenere del software se creata da esseri umani.
Non perché sia teoricamente impossibile farla diversamente, ma perché sarebbe sostanzialmente impossibile per un team di esseri umani progettarla.
Rispondi