Stiamo facendo manutenzione.
Simulare una mente umana e superarla
Re: Simulare una mente umana e superarla
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.
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.
- [email protected]
- Messaggi: 169
- Iscritto il: 16/05/2014, 22:30
Re: Simulare una mente umana e superarla
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:
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.
come avviene la comunicazione con il programma?
tramite procedure,
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:
che magari diventano più complessi in base all'incidenza di diverse variabili nell'array emozionale
Il programma deve memorizzare, tutto quello che viene detto, i concetti, le frasi e le risposte.
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à:
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:
In questo modo possiamo interagire con il computer e lui potrà rispondere con argomenti attinenti.
es:
(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:
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.
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:
In questo modo possiamo far "dedurre" al computer che:
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.
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.
Re: Simulare una mente umana e superarla
[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.
- [email protected]
- Messaggi: 169
- Iscritto il: 16/05/2014, 22:30
Re: Simulare una mente umana e superarla
(per gli errori di programmazione c'è il debug )
Tu che suggerisci di fare?
Tu che suggerisci di fare?
Ultima modifica di [email protected] il 26/05/2014, 20:29, modificato 1 volta in totale.
Re: Simulare una mente umana e superarla
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/
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/
- [email protected]
- Messaggi: 169
- Iscritto il: 16/05/2014, 22:30
Re: Simulare una mente umana e superarla
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:
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.
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.
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.
Re: Simulare una mente umana e superarla
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.
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.
- [email protected]
- Messaggi: 169
- Iscritto il: 16/05/2014, 22:30
Re: Simulare una mente umana e superarla
Ho letto questo:
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.
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.
-
- Messaggi: 812
- Iscritto il: 09/07/2014, 16:33
Re: Simulare una mente umana e superarla
Che una mente artificiale debba essere necessariamente programmata, mi pare un salto logico ingiustificato (se ho compreso bene le tue parole).
Re: Simulare una mente umana e superarla
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.
Non perché sia teoricamente impossibile farla diversamente, ma perché sarebbe sostanzialmente impossibile per un team di esseri umani progettarla.