PDA

View Full Version : IA: avete già provato...?


$te
02-01-2007, 09:56
avete già provato a programmare un interfaccia che possa tenere una discussione, che possa imparare, o addirittura capire?

$te
02-01-2007, 13:49
no é? nemmeno mai provato un programma simile?

PGI-Bis
02-01-2007, 14:33
Per quanto ne so siamo ancora piuttosto lontani dal capire come faccia un essere umano a discutere. Circa imparare e capire poi non è poi così insensato teorizzare che, tutto considerato, gli uomini non imparino e capiscano un bel niente. Forse qui sta il grande fascino della materia. Gli argomenti che ti interessano sono trattati nella recente branca del sapere che va sotto il nome di Scienza della Cognizione: sul genere comprensione e calcolatori.

Qui sotto c'è l'indirizzo dell'archivio on-line della società di scienza della cognizione.

http://www.cogsci.rpi.edu/CSJarchive/contents.html

Una miniera favolosa di ipotesi sui "perchè" con un sacco di spiegazioni sul "come". Tipo il robot senza uno straccio di sensore che tuttavia gira sul tavolo senza mai cadere.

$te
02-01-2007, 14:47
grazie x il link!
é un campo affascinante e ancora in parte sconosciuto, pero io punto su qualcosa d fattibile: come alcuni programmi ke esistono fatti in C: la mia intenzione é quella d creare un programma in C, senza andare troppo nel particolare ma cercando d poter creare qlc ke possa appunto apprendere (anke se sara piu un pappagallo...) e quindi cercare di rispondere ad ogni domanda "pensando"

71104
02-01-2007, 14:51
Tipo il robot senza uno straccio di sensore che tuttavia gira sul tavolo senza mai cadere. mi puoi dare il link esatto di questa cosa? mi interessa!

PGI-Bis
02-01-2007, 15:05
Il robot era di un certo Cristopher Longuet-Higgins. E' citato in mental models in cognitive science (http://www.cogsci.rpi.edu/CSJarchive/1980v04/i01/p0071p0115/MAIN.PDF). Una di quelle cose che ti fanno dire "ma è evidente!"... solo dopo che le hai sapute :D.

^TiGeRShArK^
02-01-2007, 15:45
grazie x il link!
é un campo affascinante e ancora in parte sconosciuto, pero io punto su qualcosa d fattibile: come alcuni programmi ke esistono fatti in C: la mia intenzione é quella d creare un programma in C, senza andare troppo nel particolare ma cercando d poter creare qlc ke possa appunto apprendere (anke se sara piu un pappagallo...) e quindi cercare di rispondere ad ogni domanda "pensando"
mmmm...
eliza???
http://www-ai.ijs.si/eliza/eliza.html

$te
02-01-2007, 16:35
bom...qlc d piu avanzato d eliza vorrei fare...eliza nn mi pare apprendi no?
creare qlc ke se gli dico: la mia palla é rossa, e poi gli chiedo di che colore é la palla mi dice rossa.....o qlc del genere

MEMon
02-01-2007, 17:55
Ma il robot senza sensore se non cade:
1)o gli hanno detto quanto è grande il tavolo
2)non ha il sensore per sapere se sotto di lui c'è il tavolo o un bordo ma forse ha quello per sapere quando effettivamente ha sbattuto il muso x terra, e magari con un paio di calcoli geometrici e un po' di cadute riesce a sapere quanto è grande il tavolo così la prox volta non cade più.

MEMon
02-01-2007, 17:59
bom...qlc d piu avanzato d eliza vorrei fare...eliza nn mi pare apprendi no?
creare qlc ke se gli dico: la mia palla é rossa, e poi gli chiedo di che colore é la palla mi dice rossa.....o qlc del genere
Ma quello non è apprendere, è memorizzare.
Apprendere potrebbe essere ad esempio far capire ad una macchina che quando mi vedi per la prima volta nella giornata mi devi salutare, ovviamente senza progammargli il tutto...
Cioè io vedo la macchina e le dico "ciao", la vedo domani e le ridico "ciao" e così via, se la macchina è capace di apprendere dopo un po' di tempo mi dovrebbe dire "ciao" quando io le dico "ciao"( a pappagallo) e dopo ancora molto tempo dovrebbe essere lei a dirmi "ciao" quando mi vede. Ecco quello secondo me è apprendere.

Tutto il resto, con molti mezzi e molto tempo lo si riesce anche a fare secondo me...ma memorizzare non è apprendere...

$te
02-01-2007, 18:09
hai perfettamente rajone....ma tu avresti la minima idea d come fare nel tuo es?

okay
02-01-2007, 18:49
Ma quello non è apprendere, è memorizzare.
Apprendere potrebbe essere ad esempio far capire ad una macchina che quando mi vedi per la prima volta nella giornata mi devi salutare, ovviamente senza progammargli il tutto...
Cioè io vedo la macchina e le dico "ciao", la vedo domani e le ridico "ciao" e così via, se la macchina è capace di apprendere dopo un po' di tempo mi dovrebbe dire "ciao" quando io le dico "ciao"( a pappagallo) e dopo ancora molto tempo dovrebbe essere lei a dirmi "ciao" quando mi vede. Ecco quello secondo me è apprendere.

Tutto il resto, con molti mezzi e molto tempo lo si riesce anche a fare secondo me...ma memorizzare non è apprendere...

Errato:

Se hai memorizzato allora apprendi. Se non memorizzi da qualche parte non apprendi nulla.
Anche nella mente umana è uguale devi memorizzare una "azione" nelle tue Celle di memoria moooolti mb di memoria" e poi la riproduci.

Cmq con l'AI e metodi vari "Fuzzy ecc ecc" reti neuronali in particolare si cerca di fare questo tipo di cose al computer.
basta che cerchi con goole "c++ reti neuronali AI"

Una cosa per esempio è avere un obbiettivo "telecamera in dx" un fov dove il pc guarda il frustum e conosce le misure del "Frustum view" se muovi un omino (oppure una primitiva) al di fuori del frustum, non sei visto, come passi nel frustum, obbiettivo della telecamera, si fanno i calcoli sulla primitiva che passa, un cubo rosso per esempio, si memorizzano le dimensioni del cubo e il colore, poi sparisci con il cubo dal frustum view, ora se ripassi, attivi la routine di riconoscimento e se il cubo che passa è rosso e ha tali dimensioni, con dsound fai dire "ciao" al pc ad ogni comparsa del cubo.

Questo descritto in modo pseudo e coinciso, per farti capire.

Questa può essere un tipo di azione.
Poi con script vari puoi aggiornare la "memoria" delllo script db per altre azioni.

Esattamente come hanno detto sopra, puoi avere altre primitive, nel game e far camminare un robottino, fargli memorizzare le primitive e fargli sprintf "le misure" dicendo "è un cubo" oppure un'altra cosa se l'oggetto non esiste in archivio dice che è "un oggetto simile a.. oppure non riconosciuto".

ecc ecc.

puoi calcolare distanze e collisioni con oggetti ma l'archivio lo devi aggiornare tu.

Sarebbe interessante invece fargli aggiornare un archivio "la sua memoria" da solo... vai su google troverai molta roba.

71104
02-01-2007, 19:32
ma memorizzare non è apprendere... dipende da che livello memorizzi, e in base a tale livello si stabilisce il quoziente intellettivo della tua AI. mi spiego meglio: mettiamo che una ipotetica AI memorizza cioè che percepisce nella maniera più diretta possibile, ovvero memorizza il "raw stream" di dati che gli entra dai sensori. ora mettiamo che sia in grado di fare delle associazioni tra questi stream e che capisca di dover in un modo o nell'altro provocare nel mondo circostante gli stessi fenomeni rappresentati da certi streams in conseguenza degli streams associati. cioè in altre parole se le dicono "ciao" lei deve rispondere "ciao". evabbò, questa è semplicemente una AI che reagisce ai fenomeni solamente in modi che ha già visto: è una AI completamente stupida (e già la sua realizzazione sarebbe di una complessità enorme rispetto a quella dei software a cui siamo abituati).

la AI descritta finora è una AI che apprende semplicemente memorizzando, ma ora facciamo un passo avanti e cerchiamo di farne una più intelligente. la AI più intelligente è una AI che inizialmente memorizza un "raw stream" (quello che ha visto ha visto e se lo ricorda così com'è), ma man mano che memorizza altri fenomeni cerca di metterli in relazione con quelli già visti al fine di astrarre dei patterns comuni ed essere in grado successivamente di elaborare nuovi fenomeni con nuove conseguenze semplicemente modificando i valori delle variabili di un unico pattern memorizzato. questa è la vera intelligenza secondo me.

immagina un uomo osservare un fenomeno molto semplice composto di causa ed effetto: tipo chessò, vede un fulmine e dopo sente il tuono. l'uomo (che è paragonabile alla AI intelligente), sa che quando vedrà due fulmini sentirà due tuoni e che quando ne vedrà N sentirà N tuoni. l'uomo osservando due fenomeni (la caduta di un lampo e la caduta di due lampi) è in grado di fare il passo induttivo che lo contraddistingue dall'AI stupida e capire che al cadere di N lampi ci saranno N fenomeni con N cause ed N effetti. la AI stupida invece, al contrario dell'uomo e della AI intellgente, non saprà mai cosa accadrebbe se cadessero N fulmini con N diverso da un numero di fulmini che essa abbia visto cadere: la AI vede N = 1 lampi, sente N = 1 tuoni, memorizza il fenomeno e sa bene che la prossima volta che vedrà N = 1 lampi sentirà N = 1 tuoni. ma per cambiare N da 1 a 2 a un intero a piacere ci vuole il passo induttivo, ci vuole la AI intelligente.

tutto ciò è di complessa realizzazione, tant'è vero che ancora nessuno ci riesce. la AI intelligente rispetto a quella stupida dovrebbe essere in grado di astrarre un pattern comune a due fenomeni: ovverosia, dopo aver osservato la caduta di un fulmine e dopo aver osservato la caduta di due fulmini dovrebbe essere in grado di capire l'esistenza di una variabile, la variabile "N fulmini". creata nella sua memoria questa variabile ha creato un pattern: da quel momento la nostra AI è in grado di modificare N a piacere ipotizzando nuovi fenomeni di cui essa non ha mai avuto esperienza nella sua esistenza, e questa è la base grazie alla quale l'uomo è in grado di fare ricerca scientifica, perché questa è deduzione e ipotesi.

ora facciamo un ulteriore passo avanti, supponendo che si verifichi un terzo fenomeno, la caduta di altri N fulmini con N lampi. ora però supponiamo che i tuoni non siano N ma un generico altro intero K indipendente da N. premesso che nella realtà non sentirai mai 2 tuoni in conseguenza ad un solo lampo, a meno che il secondo tuono non sia Bin Laden che cerca di buttare giù casa tua, :D esistono due sole possibilità:

1) K == N --> il fenomeno non fa che verificare il pattern conosciuto, poiché l'uomo (o la AI) è stato in grado di prevedere K.

2) K != N --> il pattern ha bisogno di essere ulteriormente astratto mettendo in relazione i due fenomeni conosciuti (caduta di 1 e di 2 fulmini) con questo terzo che è la caduta di un numero di lampi diverso da quello di tuoni conseguenti.

come si reagisce ad una simile situazione, ovvero cosa dovrebbe in teoria fare l'ipotetica AI ancora più intelligente di quella intelligente? boh, non lo so :P
non so manco come reagirebbe un uomo ^^

NA01
02-01-2007, 19:45
Perchè non citare Julia? :)

mi piacerebbe parlarci.... :D
non ho trovato (e nemmeno cercato per la verità) il bot... però dalle registrazioni sui documenti sembra davvero interessante..

71104
02-01-2007, 19:50
allora, cerco di riassumere in poco il post steso sopra, visto che non avendolo riletto e corretto mi è uscito a mo' di stream of consciousness :D

cade un fulmine: la AI stupida vede un lampo e sente un tuono. la volta successiva che la AI vede un lampo saprà perfettamente che ci sarà un tuono.

cadono due fulmini: la AI stupida vede due lampi e non sa più che pensare :D
poco dopo però sente anche due tuoni e memorizza il fenomeno. la prossima volta che cadranno due fulmini la AI stupida sarà in grado di prevedere due tuoni.

cosa manca alla AI stupida? induttivamente, se cadono N fulmini ed essa vede N lampi, molto stupidamente non riesce a prevedere il numero di tuoni che sentirà a meno che i lampi non siano stati uno o due (cioè a meno che non si tratti di un fenomeno del quale essa ha già avuto esperienza).

cade un altro fulmine (mecojoni, è tempesta oggi :P): la AI intelligente osserva il tutto e memorizza. ne cadono due: la AI intelligente non solo osserva e memorizza, ma stavolta elabora anche un pattern! ovverosia, in conseguenza a questo secondo fenomeno, mentre nella memoria della AI stupida abbiamo due fenomeni memorizzati, in quella intelligente ne abbiamo uno solo più il pattern. tale pattern consiste di fatto in una variabile N numero di fulmini, che la AI intelligente è in grado di modificare a piacere al fine di ipotizzare nuovi fenomeni che essa finora non ha mai visto, come la caduta di (chessò) 5 fulmini.

infine aggiungo che l'esempio degli N fulmini neanche calza tanto bene perché se cadono ad esempio 5 fulmini significa che a maggior ragione ne sono caduti 1 o 2 e quindi per un minimo anche la AI stupida dovrebbe conoscerne le conseguenze... purtroppo non mi è venuto esempio migliore, spero si capisca anche così.

MEMon
02-01-2007, 20:09
Errato:

Se hai memorizzato allora apprendi. Se non memorizzi da qualche parte non apprendi nulla.
Anche nella mente umana è uguale devi memorizzare una "azione" nelle tue Celle di memoria moooolti mb di memoria" e poi la riproduci.

Cmq con l'AI e metodi vari "Fuzzy ecc ecc" reti neuronali in particolare si cerca di fare questo tipo di cose al computer.
basta che cerchi con goole "c++ reti neuronali AI"

Una cosa per esempio è avere un obbiettivo "telecamera in dx" un fov dove il pc guarda il frustum e conosce le misure del "Frustum view" se muovi un omino (oppure una primitiva) al di fuori del frustum, non sei visto, come passi nel frustum, obbiettivo della telecamera, si fanno i calcoli sulla primitiva che passa, un cubo rosso per esempio, si memorizzano le dimensioni del cubo e il colore, poi sparisci con il cubo dal frustum view, ora se ripassi, attivi la routine di riconoscimento e se il cubo che passa è rosso e ha tali dimensioni, con dsound fai dire "ciao" al pc ad ogni comparsa del cubo.

Questo descritto in modo pseudo e coinciso, per farti capire.

Questa può essere un tipo di azione.
Poi con script vari puoi aggiornare la "memoria" delllo script db per altre azioni.

Esattamente come hanno detto sopra, puoi avere altre primitive, nel game e far camminare un robottino, fargli memorizzare le primitive e fargli sprintf "le misure" dicendo "è un cubo" oppure un'altra cosa se l'oggetto non esiste in archivio dice che è "un oggetto simile a.. oppure non riconosciuto".

ecc ecc.

puoi calcolare distanze e collisioni con oggetti ma l'archivio lo devi aggiornare tu.

Sarebbe interessante invece fargli aggiornare un archivio "la sua memoria" da solo... vai su google troverai molta roba.
No ma così è una cosa semplice, cioè tu dici alla macchina di memorizzare un oggetto(per oggetto intendo qualunque cosa, dalle forme ai colori,dalle parole alle immagini) e la programmi in modo da attivare un routine di riconoscimento dell'oggetto, ossia quando ne vede un altro, cerca nella sua memoria se quello che ha appena visto esiste.

Comunque per come la vedo io non dovrebbe essere difficile creare una macchina che apprende e si evolve, ma sicuramente mi sfugge qualcosa che rende il tutto molto complesso...
Io penso ad esempio alla mente di un bambino appena nato, è grosso modo vuota, ha giusto alcune preconfigurazione dovute all'istinto, ossia è in grado di vedere, di camminare, sa come gestire la fame e la sete(vuole mangiare e bere), sa come addormentarsi, sa sentire gli odori, sa emettere suoni, insomma come una macchina con vari sensori in grado di prendere dati da questi da essi.
In più ha un corpo con il quale però non è in grado di fare molto, certo sa come poter muovere gli arti, ma non sa come volerli muovere e perchè.
Il bambino però impara, ma come impara?
Probabilmente impara a camminare perchè vede gli adulti che gli stanno intorno che sono in piedi e camminano, e forza di provare e riprovare trova i giusti parametri per muovere braccia e gambe in modo da camminare, una macchina potrebbe fare lo stesso no?
Probabilmente impara a parlare perchè sente gli adulti parlare, emette suoni finchè non trova quello che più si avvicina a quello sentito, una macchina potrebbe fare lo stesso no?
Probabilmente impara a fare frasi sensate a capirne il significato perchè sente le frasi degli adulti, fin da piccolo per ogni azione che faceva l'adulto gli diceva una frase,"bravo così", "così non si fa","hai fame?","dormi" ecc ecc
Prima a poi di parole ne metterà insieme due, e vede che effetto fa sugli adulti che stanno intorno, ne registra il risultato e riprova.
Prima o poi saprà fare frasi delle quali è sicuro l'effetto che fanno sugli adulti intorno. Anche una macchina potrebbe farlo no?

Dopo tutto sto popò di roba quello che volevo dire e che secondo me fare una macchina che si evolve non è difficile, anzi forse è pure avantaggiata perchè molte cose gliele si può spigare fin da subito...
Tutto quello che bisogna fare è avere uno spazio di memoria molto ampio,ma ampio veramente eh, dare alla macchina la possibilità di salvare dati che possono essere immagini, suoni, odori, sensazioni tattili e pensieri(insieme di vari dati che portono ad un risultato), darle la possibilità di prendere dalla memoria questi dati in modo veloce ed efficace, di elaborarli nello stesso modo veloce ed efficace, darle la possibiltà di distingure immagini che sitrovano dentro altre immagini ecc ecc.
Se una macchina sa fare questo secondo me potrebbe anche imparare per "tentativi"

MEMon
02-01-2007, 20:23
dipende da che livello memorizzi, e in base a tale livello si stabilisce il quoziente intellettivo della tua AI. mi spiego meglio: mettiamo che una ipotetica AI memorizza cioè che percepisce nella maniera più diretta possibile, ovvero memorizza il "raw stream" di dati che gli entra dai sensori. ora mettiamo che sia in grado di fare delle associazioni tra questi stream e che capisca di dover in un modo o nell'altro provocare nel mondo circostante gli stessi fenomeni rappresentati da certi streams in conseguenza degli streams associati. cioè in altre parole se le dicono "ciao" lei deve rispondere "ciao". evabbò, questa è semplicemente una AI che reagisce ai fenomeni solamente in modi che ha già visto: è una AI completamente stupida (e già la sua realizzazione sarebbe di una complessità enorme rispetto a quella dei software a cui siamo abituati).

la AI descritta finora è una AI che apprende semplicemente memorizzando, ma ora facciamo un passo avanti e cerchiamo di farne una più intelligente. la AI più intelligente è una AI che inizialmente memorizza un "raw stream" (quello che ha visto ha visto e se lo ricorda così com'è), ma man mano che memorizza altri fenomeni cerca di metterli in relazione con quelli già visti al fine di astrarre dei patterns comuni ed essere in grado successivamente di elaborare nuovi fenomeni con nuove conseguenze semplicemente modificando i valori delle variabili di un unico pattern memorizzato. questa è la vera intelligenza secondo me.

immagina un uomo osservare un fenomeno molto semplice composto di causa ed effetto: tipo chessò, vede un fulmine e dopo sente il tuono. l'uomo (che è paragonabile alla AI intelligente), sa che quando vedrà due fulmini sentirà due tuoni e che quando ne vedrà N sentirà N tuoni. l'uomo osservando due fenomeni (la caduta di un lampo e la caduta di due lampi) è in grado di fare il passo induttivo che lo contraddistingue dall'AI stupida e capire che al cadere di N lampi ci saranno N fenomeni con N cause ed N effetti. la AI stupida invece, al contrario dell'uomo e della AI intellgente, non saprà mai cosa accadrebbe se cadessero N fulmini con N diverso da un numero di fulmini che essa abbia visto cadere: la AI vede N = 1 lampi, sente N = 1 tuoni, memorizza il fenomeno e sa bene che la prossima volta che vedrà N = 1 lampi sentirà N = 1 tuoni. ma per cambiare N da 1 a 2 a un intero a piacere ci vuole il passo induttivo, ci vuole la AI intelligente.

tutto ciò è di complessa realizzazione, tant'è vero che ancora nessuno ci riesce. la AI intelligente rispetto a quella stupida dovrebbe essere in grado di astrarre un pattern comune a due fenomeni: ovverosia, dopo aver osservato la caduta di un fulmine e dopo aver osservato la caduta di due fulmini dovrebbe essere in grado di capire l'esistenza di una variabile, la variabile "N fulmini". creata nella sua memoria questa variabile ha creato un pattern: da quel momento la nostra AI è in grado di modificare N a piacere ipotizzando nuovi fenomeni di cui essa non ha mai avuto esperienza nella sua esistenza, e questa è la base grazie alla quale l'uomo è in grado di fare ricerca scientifica, perché questa è deduzione e ipotesi.

ora facciamo un ulteriore passo avanti, supponendo che si verifichi un terzo fenomeno, la caduta di altri N fulmini con N lampi. ora però supponiamo che i tuoni non siano N ma un generico altro intero K indipendente da N. premesso che nella realtà non sentirai mai 2 tuoni in conseguenza ad un solo lampo, a meno che il secondo tuono non sia Bin Laden che cerca di buttare giù casa tua, :D esistono due sole possibilità:

1) K == N --> il fenomeno non fa che verificare il pattern conosciuto, poiché l'uomo (o la AI) è stato in grado di prevedere K.

2) K != N --> il pattern ha bisogno di essere ulteriormente astratto mettendo in relazione i due fenomeni conosciuti (caduta di 1 e di 2 fulmini) con questo terzo che è la caduta di un numero di lampi diverso da quello di tuoni conseguenti.

come si reagisce ad una simile situazione, ovvero cosa dovrebbe in teoria fare l'ipotetica AI ancora più intelligente di quella intelligente? boh, non lo so :P
non so manco come reagirebbe un uomo ^^
Se ha già il concetta di numerazione è semplice, vede 1 lampo sa che ci sarà 1 tuono, vede 1 altro lampo sa che ci sarà 1 tuono, in totale vede 2 lampi, sa che ci saranno 2 tuoni.
Se invece non ha il concetto di numerazione, vede un lampo si aspetta un tuono, quindi, vede un lampo(si aspetta un tuono) vede un lampo(si aspetta un tuono), sta aspettando due tuoni.
Certo probabilmente se gli chiedi quanti tuoni aspettare dopo 20 lampi non ti saprebbe rispondere, ma nemmeno un bambino dopo 3 anni di vita ti saprebbe rispondere...

71104
02-01-2007, 21:36
Se invece non ha il concetto di numerazione, vede un lampo si aspetta un tuono, quindi, vede un lampo(si aspetta un tuono) vede un lampo(si aspetta un tuono), sta aspettando due tuoni. infatti è per questo che ho detto che l'esempio dei fulmini non calza (leggi post successivo a quello quotato). per fare un esempio di pattern ci vorrebbe una variabile diversa dal numero, per esempio un colore... metti che un fulmine giallo colpisce un albero e gli appicca un fuoco giallo :D :D :D
una AI stupida, anche dopo averne visti due diversi di questi "fulminelli allegri" :D, non sa che un fulmine blu appiccherebbe un fuoco blu, mentre la AI furba lo sa :D

Certo probabilmente se gli chiedi quanti tuoni aspettare dopo 20 lampi non ti saprebbe rispondere, ma nemmeno un bambino dopo 3 anni di vita ti saprebbe rispondere... ma un muratore di Trigoria si :D :D :D
l'esempio del bambino non calza perché le sue facoltà non sono ancora complete, sono in crescita. il volume cranico di un bambino è inferiore a quello di un adulto!

$te
02-01-2007, 23:14
quindi se ad un programma vorresti insegnarli a "discutere" con te...dovresti fargli leggere dei libri? o fargli legere dei dialoghi tra due persone?? m....

71104
02-01-2007, 23:41
quindi se ad un programma vorresti insegnarli a "discutere" con te...dovresti fargli leggere dei libri? o fargli legere dei dialoghi tra due persone?? m.... si! in questo caso le variabili in gioco nei pattern in questione sarebbero parole :)

e più che fargli leggere dei libri dovresti dialogare con lui. ed inoltre la AI deve essere motivata a raggiungere qualche obiettivo, altrimenti non ha senso che faccia qualsiasi cosa.

supponiamo per esempio di impostare come obiettivo il fatto che tu scriva per esempio "sei brava" sulla console. quella inizierà a sparare caratteri ai quali tu da bravo essere superiore :D non saprai cosa dire, perciò gli scriverai roba tipo "cheeee?? ma che stai a dììììì!!" e cose del genere :D
e non scherzo, dico sul serio :D

scrivendo quelle frasi le fai capire come funziona il linguaggio: alla prima che vede capisce per esempio quale set di caratteri deve usare per dialogare con te, allargando il set man mano che fai frasi con più caratteri. poi sinceramente non so come si dovrebbe evolvere la cosa, è difficile prevederlo ragionando coi patterns che le si dovrebbero formare man mano (e soprattutto ragionando su un programma che neanche esiste e che sto solo ipotizzando), ma più o meno penso che appena veda una delle parole che appaiono nel suo obiettivo dovrebbe cercare di ricostruire le parole che essa stessa ha precedentemente messo in output e che secondo lei hanno provocato quel tuo input. in sostanza alla fine di tutto l'esperimento lei dovrebbe arrivare a farti dire tutta la frase-obiettivo dicendoti sulla console: "sono brava?" e tu a quel punto la gratifichi immensamente concedendole ciò che per tutta la sua esistenza essa ha bramato di sentire :D

okay
03-01-2007, 04:38
esistono degli algoritmi di apprendimento usati nelle reti neurali appunto per far si che il sistema apprenda in base all'esperienza... sono es i software ocr o di speech recognition

giusto...

Cmq il problema oggi come oggi è la velocità dei pc.
Uno dei metodi di ricerca oggi è proprio quello di organizzare la "memorizzazzione" in "sistemi" e riuscire a far fare al pc "l'associazione di idee"... su cosa si stà discutendo, tagliando e confrontando appunto gli insiemi archiviati (ho letto tempo fà tale tecnica di studio di algoritmo su google ma non ho salvato il link) i tempi di calcolo sono ancora bassi oggi.

Gli insiemi: si discute d calcio si controllano i 100 insiemi archiviati (100 fino ad ora) nel momento in cui il pc ha una apertura mentale, aggiorna a 101 tot di insiemi potendo anche (compressione logica degli insiemi) ridurli a 98 in quanto 3 insiemi (quelli ridotti) riesce ad includerli nei 98 (tipo riduzione al totocalcio delle colonne o abbattimento delle colonne eseguendo un record di riduzione) solo che in questo caso si parla di insiemi di idee ecc ecc.

Il link era di un equipe, sinceramente non mi ricordo il link, molto interessante, in pratica era un evolversi dell'Algoritmi genetici applicato invece all'AI in generale.

Si tratta di un tipo di memorizzazzione a bit... bhè non ricordo molto ma molto affascinante... se riesc a trovare il link lo posto.

ecco trovato l'avevo ancora nei preferiti e ho anche installato il programma in continua crescita e sviluppo.

http://www.neuron.yale.edu/neuron/

c'è anche il programma da installare... vedete un pò io l'ho installato ma poi, stò facendo altre cose e non l'ho mai provato.

Edit: lo sto rivedendo adesso e mi sembra un simulatore basato su reti neuronali simulando impulsi elettrici del cervello o roba del genere.

Quell'altro link era in italiano se non ricordo male ed era sull'apprendimento + attinente al 3d ma anche questo non mi sembra male.

Se lo leggete ditemi cosa vi sembra cmq.

BountyKiller
03-01-2007, 10:06
esistono degli algoritmi di apprendimento usati nelle reti neurali appunto per far si che il sistema apprenda in base all'esperienza... sono es i software ocr o di speech recognition

certo, ma che io sappia siamo ben lontani dal poter realizzare un sistema capace di dialogare con un essere umano, anche perchè lingue come l'italiano sono ricchissime di sfumature concettuali che permettono di esprimersi con più accuratezza rispetto all'inglese, ma proprio per questo una frase è difficilmente astraibile; un esempio famoso è la frase " ieri sono andato a un compleanno senza portare il regalo...la torta era buona, ma io ero in imbarazzo" : per comprendere questa frase un sistema intelligente ha bisogno di una base di conoscenza sterminata, deve cioè sapere cosa è un compleanno, che in questo contesto il compleanno non significa il giorno in cui ricorre la nascita di qualcuno ma piuttosto vuol dire la festa di compleanno (deve quindi sapere che in genere i compleanni si festeggiano), deve sapere che IN GENERE quando si va a una festa di compleanno si porta un regalo, si mangia la torta, infine deve dedurre che l'imbarazzo probabilmente deriva dal fatto che non è stato portato il regalo....
ho reso l'idea? :D

$te
03-01-2007, 10:42
nn é male l'idea 71104! se ha un obbiettivo, credo lui possa "imparare", pero per far questo dovrebbe: avere na specie d dizionario, e quindi sparare parole completamente a caso, e poi sarebbe un apprendimento lento, e difficile: come fai ad insegnarli ke significa compleanno? Io penso a questo: tu gli fai salvare in un file ke compleanno: si festeggia quando uno compie gli anni, poi anche ke si fa una feste qnd cé un compleanno e ke si porta il regalo ad un festeggiato. quindi lui "sapra" queste cose? ma supponendo ke lui "sappia" queste cose, il difficile kredo sia spiegarli il significato di "andare", prendere, guardare, ecc....magari i verbe essere e avere nn son difficili, ma gli altri verbi? dare...portare...ecc, avete idee?

k0nt3
03-01-2007, 11:42
avete già visto questo? http://www.titane.ca/igod/ ci si fanno dei bei discorsi :asd:

MEMon
03-01-2007, 11:57
nn é male l'idea 71104! se ha un obbiettivo, credo lui possa "imparare", pero per far questo dovrebbe: avere na specie d dizionario, e quindi sparare parole completamente a caso, e poi sarebbe un apprendimento lento, e difficile: come fai ad insegnarli ke significa compleanno? Io penso a questo: tu gli fai salvare in un file ke compleanno: si festeggia quando uno compie gli anni, poi anche ke si fa una feste qnd cé un compleanno e ke si porta il regalo ad un festeggiato. quindi lui "sapra" queste cose? ma supponendo ke lui "sappia" queste cose, il difficile kredo sia spiegarli il significato di "andare", prendere, guardare, ecc....magari i verbe essere e avere nn son difficili, ma gli altri verbi? dare...portare...ecc, avete idee?
No ma il problema è alla radice...pensa a come tu sai le cose, perchè tu sai che un compleanno è una cosa che si festeggia?
Perchè ad ogni evento chiamato "compleanno" ti hanno fatto regeali, avevi la casa piena di parenti amici ecc ecc,tutti venivano da te a dirti delle strane parole "auguri!" "hai un anno!" ecc ecc, tu ora hai associato tutti qui fatti alla parola compleanno.

Io penso che se fai crescere un essere umano in una stanza chiusa, buia, senza rumori, lo nutri attraverso tubi(quindi non ha lo stimolo di cercarsi da mangiare) secondo me non apprende un bel niente, secondo me non impara nemmeno a muoversi perchè non sa come si fa e non ne ha bisogno.
Insomma io credo che in una situazione del genere dove non c'è nessun stimolo non viene acquisita nessuna abilità.
Questo però è quello che penso io, magari è diverso anche se dubito che qualcuno lo sappia davvero(chi ha mai fatto crescere una persona in una stanza senza stimoli? :D)
Per gli animali forse è diverso, io vedo un animale come una macchina con + roba già preprogrammata,ad esempio un animale facile preda di predatori, appena nasce non può aspettare di "imparare" a correre, lo deve saer già fare!
Quindi se fai nascere un topolino in una scatola senza stimoli, probabilmente quando lo fai uscire sa camminare, correre e sa cercare il cibo, sa cosa si mangia e cosa no...insomma è roba che ha nel suo istinto...

BountyKiller
03-01-2007, 12:12
lol..sono riuscito a farlo schiantare.... :D

$te
03-01-2007, 12:28
nn ho ben capito come funziona igod xké é un po lento, ogni si blocca:P
cmq MEMOn il problema é d creare un programma ke all'inizio é stupido come un sasso, ma ke poi, con adeguati stimoli, cresci e si "evolva". io sono realista, non vojo certo creare una vera IA, ma cmq qlc ke posta "evolvere", xké in linea ho visto interfacce con cui puoi dialogare, ma ke sono stupide, xké nn apprendono!é quello ke vorrei fare, ma c vorrebbe una bella idea...quella dell'obbiettivo non é male, ma bisognerebbe svilupparla! avete idee?

k0nt3
03-01-2007, 12:42
nn ho ben capito come funziona igod xké é un po lento, ogni si blocca:P
cmq MEMOn il problema é d creare un programma ke all'inizio é stupido come un sasso, ma ke poi, con adeguati stimoli, cresci e si "evolva". io sono realista, non vojo certo creare una vera IA, ma cmq qlc ke posta "evolvere", xké in linea ho visto interfacce con cui puoi dialogare, ma ke sono stupide, xké nn apprendono!é quello ke vorrei fare, ma c vorrebbe una bella idea...quella dell'obbiettivo non é male, ma bisognerebbe svilupparla! avete idee?
è così che funziona iGod.. era stupido, ma man mano acquisisce conoscienze. ogni tanto è lento a rispondere.. ma penso sia dovuto a una potenza di calcolo non proporzionata.

$te
03-01-2007, 12:46
ma si puo scaricare? non ho ben capito come funziona...xké cmq nn mi pare apprenda. ji ho detto, la mia palla é rossa, poi gli ho kiesto comé e nn sapeva rispondermi

k0nt3
03-01-2007, 12:57
ma si puo scaricare? non ho ben capito come funziona...xké cmq nn mi pare apprenda. ji ho detto, la mia palla é rossa, poi gli ho kiesto comé e nn sapeva rispondermi
adesso.. non l'ho fatto io perciò non so come funziona nel dettaglio. comunque più che altro prende per vere le affermazioni che vengono dette dalla maggior parte delle persone.. è più un lavoro di questo tipo

$te
03-01-2007, 13:01
ma poi ke fa? qual é il tipo d elaborazione? + o -:D

k0nt3
03-01-2007, 13:18
ma poi ke fa? qual é il tipo d elaborazione? + o -:D
non ho la più pallida idea di come faccia rispondere coerentemente alla maggiorparte delle domande... forse semplicemente ha in memoria un sacco di frasi a cui sa la risposta e un sacco di regole che legano le frasi tra loro. intendo che dovrebbe sapere che due parole sono sinonimi e quindi la frase ha lo stesso significato e quindi la risposta pure. comunque le mie sono solo supposizioni.
se volessi implementare qualcosa di simile io iniziarei a pensare al modo in cui rappresentare la conoscienza. poi ci vuole anche un programma che ragiona sulle conoscienze disponibili e ne tira fuori le conclusioni.
se vuoi qualche info potresti partire da qui http://en.wikipedia.org/wiki/Knowledge_engineering

^TiGeRShArK^
03-01-2007, 14:03
Cmq con l'AI e metodi vari "Fuzzy ecc ecc" reti neuronali in particolare si cerca di fare questo tipo di cose al computer.
basta che cerchi con goole "c++ reti neuronali AI"
:fagiano:
ma la logica fuzzy non è un approccio esattamente complementare a quello delle reti neurali?
da quello ke ricordo io la logica fuzzy semplificando è basata essenzialmente su regole, mentre le reti neurali sono basate su strati differenti di neuroni che interagiscono tra loro e che in base ai feedback ricevuti "apprendono" il modo migliore per fare qualcosa.
Le reti neurali e gli apparecchietti basati su logica fuzzy sono volendo anke molto efficienti..
ma sono troppo specializzati e limitati rispetto a quella ke tutti noi chiamiamo intelligenza.

MEMon
03-01-2007, 14:07
Va bhe ma la logica fuzzy è un metodo per definire una cosa che non è ne bianca ne nera, ne vera ne falsa, insomma per dare ad una macchina la possibilità di definire un valore a seconda di diversi fattori e con l'aiuto di diverse regole.

Tempo fa io feci un controllore per un motore elettrico in logica fuzzy, andava abbastanza bene.

BountyKiller
03-01-2007, 14:14
nn ho ben capito come funziona igod xké é un po lento, ogni si blocca:P
cmq MEMOn il problema é d creare un programma ke all'inizio é stupido come un sasso, ma ke poi, con adeguati stimoli, cresci e si "evolva". io sono realista, non vojo certo creare una vera IA, ma cmq qlc ke posta "evolvere", xké in linea ho visto interfacce con cui puoi dialogare, ma ke sono stupide, xké nn apprendono!é quello ke vorrei fare, ma c vorrebbe una bella idea...quella dell'obbiettivo non é male, ma bisognerebbe svilupparla! avete idee?

io sono convinto che l'approccio giusto da seguire sia evolutivo (seguire la natura, in poche parole)...inizialmente devi cercare di riprodurre i comportamenti degli animali inferiori (degli insetti ad esempio)...le capacità di apprendimento saranno estremamente ridotte, ma intanto un insetto sa camminare, volare, mangiare, bere, riprodursi... insomma non è proprio un coglione, non ci sarà una grande intelligenza nella testa ma qualcosa sa fare..

k0nt3
03-01-2007, 14:21
io sono convinto che l'approccio giusto da seguire sia evolutivo (seguire la natura, in poche parole)...inizialmente devi cercare di riprodurre i comportamenti degli animali inferiori (degli insetti ad esempio)...le capacità di apprendimento saranno estremamente ridotte, ma intanto un insetto sa camminare, volare, mangiare, bere, riprodursi... insomma non è proprio un coglione, non ci sarà una grande intelligenza nella testa ma qualcosa sa fare..
mmm forse intendi dire che non è tutto intelligenza, ma c'è una parte che è sempre esistita dentro di noi? l'istinto direi... giusto?

MEMon
03-01-2007, 14:23
Secondo me un insetto non ha intelligenza...le cose che sa fare le fa perchè è "programmato" per farle, dubito che impari qualcosa nel corso della sua vita.
Magari un ape si salva in memoria la posizione dei fiori più buoni, ma più di così dubito...

Per esempio una mosca non credo che abbia ricordi di situazioni vissute, o elmeno, vissute da lei... ad esempio se una mosca ti si posa sulla mano e per poca non la uccidi, quasi sicuramente dopo pochio minuti la stessa mosca ti si riposa addosso...

Dicevo di siutazioni vissute perchè la natura ha programmato gli insetti a conoscere quando alcune cose sono pericolose,tipo un ricordo che quella determinata cosa è pericolosa.
Ad esempio alcuni insetti hanno determinati colori proprio perchè questi colori su altri animali indicano pericolo.

MEMon
03-01-2007, 14:27
io sono convinto che l'approccio giusto da seguire sia evolutivo (seguire la natura, in poche parole)...inizialmente devi cercare di riprodurre i comportamenti degli animali inferiori (degli insetti ad esempio)...le capacità di apprendimento saranno estremamente ridotte, ma intanto un insetto sa camminare, volare, mangiare, bere, riprodursi... insomma non è proprio un coglione, non ci sarà una grande intelligenza nella testa ma qualcosa sa fare..

Dammi una macchina simile ad un insetto dotata di arti simili a quelli degli insetti, dammi un buona micro telecamera da applicare a codesto corpo, dammi un altra dozzina di sensorini tipo radar, sonar(molti insetti hanno questi sensori), sensori che rilevano magnetismo ecc ecc e un po' di tempo, e vedrai che un simil insetto te lo faccio pure io.

Se mi dai anche un paio di ali te lo faccio anche volare :D

$te
03-01-2007, 14:31
ok...forse ji insetti nn sono l'esempio mijore,ma cmq quello é il succo...come iniziare?? vere idee?? come sviluppare l'idea dell' "obbiettivo" del programma da rajjunjere come detto da 71104.
Perché a me interessava oslo il linguajjo, escludendo i movimenti

MEMon
03-01-2007, 14:44
Come obbiettivo poniti qualcosa di semplice per iniziare(semplice per modo dire...) non so ad esempio che il tuo programma apprenda ed usi una determinata frase.

Come base io mi porrei il fatto di trovare il nesso logico(per una macchina si intende) fra azione-reazione e alcune parole

BountyKiller
03-01-2007, 14:47
Secondo me un insetto non ha intelligenza....

questo ci porterebbe a definire cosa sia l'intelligenza (questione assai dibattuta).. io so che una rete neurale monostrato con 100 neuroni impara a fare le somme in qualche ora... il cervello di un insetto è senz'altro più complesso di una simile rete neurale (che è una rozza approssimazione di un cervello vivente) quindi non escluderei a priori che gli insetti siano in grado di apprendere in una certa misura nella loro vita (magari non sapranno contare, ma fare semplici relazioni , aiutati anche dall'istinto, del tipo - se c'è vento forte non volo, cammino)...ovviamente non sto parlando di coscienza di se (non credo proprio)...

BountyKiller
03-01-2007, 15:05
ok...forse ji insetti nn sono l'esempio mijore,ma cmq quello é il succo...come iniziare?? vere idee?? come sviluppare l'idea dell' "obbiettivo" del programma da rajjunjere come detto da 71104.
Perché a me interessava oslo il linguajjo, escludendo i movimenti

eh....purtroppo il linguaggio è una forma di espressione tipica di animali superiori.... io sono convinto che il problema principale in questo caso sia la rappresentazione della conoscenza, e mi risulta che le tecniche classiche di AI (alberi binari) non portino da nessuna parte (non potresti fare molto più del bot che finge di essere Dio)...dovresti essere in grado di rappresentare concetti astratti e assegnare ad essi il significato più probabile a seconda del contesto..io comunque mi concentrerei solo sulla lingua inglese, l'italiano è troppo complicato... l'impresa a cui ti accingi è titanica, basta solo riflettere sul fatto che a volte nemmeno due cervelli umani riescono a capirsi - quando sento Di Pietro parlare in televisione, non capisco quello che dice....- :D

71104
03-01-2007, 15:20
eh....purtroppo il linguaggio è una forma di espressione tipica di animali superiori.... io sono convinto che il problema principale in questo caso sia la rappresentazione della conoscenza, e mi risulta che le tecniche classiche di AI (alberi binari) non portino da nessuna parte (non potresti fare molto più del bot che finge di essere Dio)...dovresti essere in grado di rappresentare concetti astratti e assegnare ad essi il significato più probabile a seconda del contesto..io comunque mi concentrerei solo sulla lingua inglese, l'italiano è troppo complicato... il modo in cui la poni è sbagliato, lui (giustamente) non vuole preprogrammare una AI ad uno specifico linguaggio, ma crearne una ignorante in grado di apprendere qualsiasi linguaggio.

l'impresa a cui ti accingi è titanica, esagerato, solo perché non c'è mai riuscito nessuno... :D

basta solo riflettere sul fatto che a volte nemmeno due cervelli umani riescono a capirsi semplicemente perché gli esseri umani si spiegano male, che significa commettere errori; ma una AI si suppone che non commetta errori... due cervelli umani decenti riescono a capirsi benissimo.

$te
03-01-2007, 15:23
hehe.....lo so ke l'italiano é difficile, ma lo preferisco.
Spiego quello ke x ora ho fatto: il mio programma (scritto in c) prende la frase ke inserisci: la suddivide, e guarda in un file (in cui c sono delle possibili frasi, del tipo: come va?, ke squadra tifi...ecc) e confronta,trovando la frase piu appropriata, e poi apre il file corrispondente alle risposte e risponde.
questa é la base, niente d +.
Poi per insegnarli: lui qnd trova na frase (ad es: la palla é rotonda) in cui cé un "é", e un articolo prima del nome, memorizza: cé un file in cui scrivera.
[la palla]
- rotonda

e cosi via.
un es d frase: la palla é rossa, poi ji kiedi: d ke kolore é la palla?
lui deve saxe ke rosso é un colore, quindi:
in un altro file, spiego delle cose generali, in questo caso:
[colore]
rosso
verde
ecc.

e cosi lui potra risponderti é rossa. ora...come evolvere? ho pensato anke ad una specie d suddivisioni in barili, in cui in ogni barile stanno tot argomenti, per cui se io parlo del gregge, lui deve capire se si parla d pecore o d petrolio:
barile1:
benzina, petrolio, soldi, costo, gregge,ecc
barile2: pecore,lana,gregge,erba,ecc

anke se questa cosa nn se valga il tempo sprecato x realizzarla in codice.

Pero poi? voi avete altre idee in questo senso? secondo me si puo arrivare a "battere" igod, o qualsiasi altro programma ke io finora ho visto (vedi alice, spock,eliza,igod, pcbrain,aptom)
nn credete?

hargon
03-01-2007, 15:47
alla fine si tratta sempre di cicli e costrutti if-then, quindi la "decisione" presa dall'algoritmo sarà sempre frutto di una scelta basata su un confronto di valori, si tratta di quantizzare tutto... e il gioco è fatto :) on no?

ma il fine di tutto ciò ?
ad esempio
fin tanto lascio che un condizionatore cerchi di mantenere la temp giusta...
(in AI) è un conto, filtrare le chiamate al cellulare automaticamente... perchè sono in chat e quindi "stressato" da questa e' un altro :D

$te
03-01-2007, 15:51
ma io sono uno studente universitario e studio economia a losanna, lavoro a sto progetto solo per me, e xké mi affaascina poter creare una cosa del genere, pero sono arrivato ad un punto in cui penso ke le idee d altri (vostre) mi possano aiutare.
quindi...avete idee?

MEMon
03-01-2007, 16:31
Secondo me così è sbagliato, per il semplice fatto che la semantica italiana è molto colorita, e star a dire ad un software quale parola prende e quale no a seconda di come è posta nella frase è un lavoraccio, ci sono troppe situazioni...
Io partirei più dalla radice, metti in piedi un algoritmo che memorizza tutto cioè che gli viene detto, e che lo ripeta anche, e ne registri l'effetto sull'interlocutore, secondo me quella è la chiave...

Ovviamente non deve solo ripetere, prima va a cercare se la OGNI singola parola che compone la frase fa parte di una sua conoscenza(l'ha già memorizzata).
Il punto sta nel fare un algoritmo che riesca ad elborale le parole per significato, cioè che sappira dare una parola un determinato significato.
Secondo me questo si può raggiungere lavorando con le "medie".
Cioè secondo me a forza di salavare frasi su frasi, che contengono la stessa parola, si andrà delineando un significato, anche senza che tu debba spiegarlo...

La chiave sta lì...

$te
03-01-2007, 16:54
tu dici cosi: io dialogo col programma, e lui salva:
es: ciao come stai? lui salva, poi lui mi ripete: "ciao come stai? "e io li risp "bene e tu? "e ad es ji risp "bene t ho già detto".

ma nn ho ben capito qnd dici:

Il punto sta nel fare un algoritmo che riesca ad elborale le parole per significato, cioè che sappira dare una parola un determinato significato.
Secondo me questo si può raggiungere lavorando con le "medie".

per significato? ma come?
le "medie" cosa sono?

MEMon
03-01-2007, 17:08
Facciamo un esempio, io ti devo insegnare quando va usata la parola ciao, e tu ovviamente non l'hai mai sentita prima, allora inizio(segno solo quello che dico io):
-ciao!
ciao
-ciao significa salutare
ciao siginifica salutare
-ciao me ne vado
ciao me ne vado
-se ti vedo ti dico ciao
se ti vedo ti dico ciao
-ciao è un saluto
ciao è un saluto
-ti vedo
ciao
-ciao me ne vado
ciao

roba così, le medie nel senso che dopo svariate frasi senza senso di questo tipo, dove la parola ciao viene usata sempre con il medesimo siginificato, si andrà delineando un certo senso da dare alla parola "ciao".
Non so se mi sono spiegato...

MEMon
03-01-2007, 17:11
Poi ad ogni parola associ un significato con un certo peso, ad esempio se gli hai insegnato che ciao e arrivederci sono due saluti, avrai che ogni parole assume un diverso significato con un certo peso, ad esempio se saluti che te ne vai arrivederci ha peso maggiore di ciao in quanto è stata usata più volte in situazioni simili, quindi è preferibile che sia utilizzata arrivederci.

$te
03-01-2007, 17:12
ho capito il concetto,ma hai magari es d codice? ho come puoi poterla programmare questa cosa? siccome, ok ke salva tutto, ma poi come usa queste frasi?

MEMon
03-01-2007, 17:23
Io non ho esempi di codice, ti sto solo dicendo come farei io...

Prima di poter fare una cosa del genere devi cercare di classificare con un algoritmo cosa sia una parola...la cosa più difficile è che una parola per noi + un concetto!!!
Comunque sia, un oggetto "parola" ha tantissime proprietà e si può legare con altre parole, ogni parola poi sa anche quante volte è stata legata con un altra determinata parola, se si trovava prima o dopo di essa, se l'insieme di entrambe la parole è stato utilizzato spesso con un altro insieme di parole.
Ecco se riesci a creare una cosa del genere, puoi costruire frasi senza saperne il vero senso, come fa un bambino piccolo ad esempio.

Se ci fai caso i bambini piccoli quando inziano a parlare non utilizzano gli articoli, le preposizione, le congiunzioni ecc ecc
Iniziano ad utilizzarli per assonanza, infilano un "il" ed un "un" qua e là a seconda di qaunte volte l'hanno sentito vicino a quella parola...
io la penso così.

$te
03-01-2007, 17:41
ah ok....xo in questo caso, appunto, il programma nn "apprende".
un altro problema sarebbe l'apprendimento.......molto ma molto lungo no?
kredo nn sarebbe male un mix tra questo e quello ke ho spiegato prima ( quello ke ho finora fatto)

MEMon
03-01-2007, 17:46
Apprende invece perchè per ogni frase elbarota aggiorna tutti i legami con le altre parole e quindi ne va delineando il suo significato.

Ciao come stai?
ciao si lega:come(1 volta),stai(1 volta) utilizzata in:domanda(1 volta)

Ciao come va?
ciao si lega:come(2 volte),stai(1 volta),va(1 volta) utilizzata in:domanda(2 volte)

ciao bella!
ciao si lega:come(2 volte),stai(1 volta),va(1 volta),bella(1 volta) utilizzata in:domanda(2 volte), esclamazione(1 volta)

e così via, vedrai che con il passare del tempo si crea un database tale da dare significato alle parole.
Ovviamente l'oggetto "parola" deve avere molti altri parametri oltre al legame, ad esempio in che posizione si trova, nell'esempio di prima (ciao) si trova 2 volte prima di come e solo 1 volta prima di bella.
E' poi anche ovvio che allo stesso tempo deve aggiornare i legami per le altre parole.

$te
03-01-2007, 17:58
nn sarebbe male da fare una cosa cosi pero...nn mi sembra cosi complicato da scrivere in codice non t pare? (in C si intende:P)

lord mathayus
03-01-2007, 18:30
beh...oddio...considera che devi aggiornare i legami di tutte le parole della frase, in più alla fine dovrà formulare una risposta in tempi ragionevoli...voglio dire: non può impiegarci 20 secondi prima di rispondere!!!

^TiGeRShArK^
03-01-2007, 21:52
Secondo me così è sbagliato, per il semplice fatto che la semantica italiana è molto colorita, e star a dire ad un software quale parola prende e quale no a seconda di come è posta nella frase è un lavoraccio, ci sono troppe situazioni...
Io partirei più dalla radice, metti in piedi un algoritmo che memorizza tutto cioè che gli viene detto, e che lo ripeta anche, e ne registri l'effetto sull'interlocutore, secondo me quella è la chiave...

Ovviamente non deve solo ripetere, prima va a cercare se la OGNI singola parola che compone la frase fa parte di una sua conoscenza(l'ha già memorizzata).
Il punto sta nel fare un algoritmo che riesca ad elborale le parole per significato, cioè che sappira dare una parola un determinato significato.
Secondo me questo si può raggiungere lavorando con le "medie".
Cioè secondo me a forza di salavare frasi su frasi, che contengono la stessa parola, si andrà delineando un significato, anche senza che tu debba spiegarlo...

La chiave sta lì...
praticamente vuoi usare una soluzione basata su reti neurali ke analizzi la semantica del linguaggio mediante l'addestramento effettuato con molteplici esempi :D

BountyKiller
03-01-2007, 22:21
semplicemente perché gli esseri umani si spiegano male

"semplicemente" per te forse...in realtà, anche i linguaggi umani hanno dei limiti, e questo è il motivo per cui si creano incomprensioni o ambiguità anche quando due cervelli umani dialogano...

$te
03-01-2007, 23:28
e kredo proprio ke nn sarebbe una cosa veloce quindi...
partendo dalla mia idea nessuno ha altri spunti?

71104
04-01-2007, 00:04
"semplicemente" per te forse...in realtà, anche i linguaggi umani hanno dei limiti, e questo è il motivo per cui si creano incomprensioni o ambiguità anche quando due cervelli umani dialogano... se così fosse allora esisterebbero concetti che qualcuno riesce a pensare ma non a spiegare, eppure io non credo che ne esistano.

PGI-Bis
04-01-2007, 01:32
Io non penso che la velocità di risposta sia un problema, almeno se l'idea sia quella di creare qualcosa che sembri intelligente.

Se Einstein avesse parlato al ritmo con cui si muove un bradipo sarebbe stato comunque un genio.

Vale a dire che nella scelta tra un lento luminare ed un idiota fulmineo avvantaggerei il primo.

A mio parere, esiste più d'un concetto "indicibile", direi tutti quelli che implichino qualcosa oltre il sensibile. "Sogno", "Vita", "Intelligenza" o "Umano", nel senso dell'essere. L'ultimo pare semplice ma bisogna ricordare che mancano dei pezzi all'albero delle specie che porta dal brodo primordiale al primo Tizio per strada, geneticamente abbiamo un bel po' in comune con varie creture villose, dedite al salto di ramo in ramo e, in quella parte che ci caratterizza, esistono un buon numero di mutazioni accertate ed un'infinità di possibili. Se prendiamo a metro l'aspetto esteriore, poi, entriamo in un pantano da cui non c'è verso d'uscire.

Per me, la lingua ha dei limiti nel senso che esistono concetti di cui possediamo una definizione inconscia che non siamo comunemente in grado di esprimere perchè non sono interamente razionalizzati, ciò che non giova all'uso della regina delle facoltà razionali che qui si sta cercando di emulare.

E torno ad esempio sul caso dell'essere umano. Non è irragionevole supporre che, in quanto membri di una specie, ognuno di noi possieda un concetto di "umano" formato di percezioni non linguistiche. Forse centra la traccia ormonale e un'ancestrale capacità di distinguerne un certo schema. Il tutto senza scomodare un'ipotetico settimo senso in stile Alien: "sento la regina!". Pur non sapendo come definire l'essere umano saremmo comunque in grado di distinguere tra chi lo sia e chi non lo sia e in forza di questa recondita certezza discutere di "umanità".

In ogni caso quello dei concetti è un problema più che interessante e non solo per le intelligenze artificiali. E' la stessa fossa in cui cadono certe interpretazioni dell'ereditarietà e non credo sia un caso che il chapel (http://chapel.cs.washington.edu/) di Cray consenta di sfruttarne una sua particolare visione in modi che per altre lingue sono tutto fuorchè banalmente ottenibili.

71104
04-01-2007, 01:46
A mio parere, esiste più d'un concetto "indicibile", direi tutti quelli che implichino qualcosa oltre il sensibile. "Sogno", "Vita", "Intelligenza" o "Umano", nel senso dell'essere. se apro un dizionario decente della lingua italiana trovo per ciascuna delle parole che hai detto una definizione presumibilmente corretta. se tali definizioni fossero date in pasto all'ipotetica intelligenza artificiale essa potrebbe apprendere questi concetti creando attorno ad essi delle relazioni corrette con altri concetti espressi dai termini usate delle rispettive definizioni. dopodiché a chi importa che quelle idee di "Sogno", "Vita", "Intelligenza" e "Umano" non corrispondano alle nostre: sono corrette e tanto basta averle messe in un programma in grado di dialogare.

PGI-Bis
04-01-2007, 02:01
L'obiezione è suggestiva tuttavia i vocabolari contengono una definizione linguistica delle parole. Per il concetto devi andare sulle enciclopedie (o sui vocabolari enciclopedici) e lì scopri che la faccenda è più complicata.

Però al fine di far sembrare intelligente un programma la parola come da vocabolario potrebbe anche andare bene, a patto che il dialogo resti nell'ambito delle definizioni. Cioè al massimo puoi chiedere "cosa sai di" ma basta un "cosa pensi di" per buttare al tappeto l'avversario.

Non che sia poco il saper descrivere qualcosa ma non mi strapperei i capelli che mi restano per un programma del genere, tutto qua.

MEMon
04-01-2007, 08:14
Bhe lo facciamo o no allora tutti assieme sto azz di bot intelligente? :D

wisher
04-01-2007, 08:53
Interessante questa discussione, secondo me però, come è già stato detto, sarebbe molto più semplice partire da compiti meno complessi (Ad esempio il movimento), il linguaggio ha veramente tantissime sfumature e al momento (sempre IMHO) non si potrebbe pensare di fare molto di più di un "pappagallo".
Sarebbe un buon risultato ma molto distate dall'essere intelligente.

$te
04-01-2007, 10:44
e allora proviamo a creare un pappagallo piu intelligente d quelli esistenti

71104
04-01-2007, 13:42
e allora proviamo a creare un pappagallo piu intelligente d quelli esistenti no, perché così partiamo con l'obiettivo sbagliato: se l'obiettivo della AI è banalmente quello di ripetere non arriveremo molto lontano ^^

l'uomo si è evoluto fino a tal punto perché il suo obiettivo non era ripetere, era sopravvivere: ha dovuto trovare modi sempre più intelligenti per trovare cibo, mettersi al sicuro dai predatori, crearsi il suo habitat, ecc.

io la mia idea l'ho detta: partirei con la storia dei patterns. quantomeno sarebbe bello creare un programma che sappia rispondere alle domande, cioè che riceva esclusivamente frasi terminanti con un punto interrogativo ed emetta relatve risposte. la faccio molto semplice: il bot riceve la domanda, la riconduce ad un pattern, ed emette in forma linguistica i concetti della risposta associati a quel pattern. nonostante la semplicità e la lontananza da una vera AI, anche così è molto complesso.

71104
04-01-2007, 13:44
così a tempo perso potremmo provare a scrivere un pezzo di codice per uno, che ne dite? :D :D :D LOL

inzio io:

#include <stdlib.h>
#include <stdio.h>

int main()
{
return 0;
}

ora continuate voi :Prrr: :D :D :D

71104
04-01-2007, 13:48
vabbè va, giusto perché sono buono :O :O :O

#include <stdlib.h>
#include <stdio.h>

typedef struct _PATTERN {
// ...? O_o :D
} PATTERN, *PPATTERN;

int main() {
return 0;
}

:D

PGI-Bis
04-01-2007, 17:02
Due idee a fiume sul "come".

Immagino che si possa iniziare su una frase, lavorando all'individuazione della categoria a cui appartiene. In funzione della categoria si procederà poi al tentativo di analizzarne le parti che siano di una qualche utilità al prosieguo del discorso.

Grammatiche alla mano sappiamo che esistono due macrogruppi di frasi, enunciative e volitive.

Penso che le prime possano desumersi per esclusione delle seconde. Dubbi, concessioni, esortazioni, comandi, esclamazioni e domande sembrano avere una sintassi tipica.

La palla è rossa.
1. Termina con un ? No
2. La prima parla è un avverbio interrogativo? No.
3. Ha più di un verbo e il primo è volitivo? No.
4. Termina con un ! No
e via dicendo.

Generalizzando potremmo provare a dire che data una frase F la sua appartenenza ad una delle sette categorie sintattiche sarebbe determinabile dall'applicazione di un ordine di "categorizzatori" alla frase F [e ad una comunicazione M]

Frase f.
per ogni Categorizzatore c:
se c risulta applicabile ad f allora f è una frase di categoria C di c.

Supponiamo di avere un analizzatore logico AC per ogni categoria. Il passo successivo, cioè la determinazione degli elementi informativi utili alla comunicazione, sarebbe l'applicazione di AC ad F.

Nell'ipotesi che F sia una frase enunciativa (la palla è rossa, la palla non è rossa, la palla rotola, la palla è scoppiata e via favoleggiando) l'analizzatore logico determinerebbe che esiste un soggetto e che a tale soggetto devono essere associati dei simboli (rossa, negazione di rossa, rotola, è scoppiata...).

Penso anche che la condizione essenziale per farne un tentato conversatore sia la capacità di assumere un certo simbolo come referente della comunicazione. Ciò di cui si parla.

E' rossa.

Non esiste un referente per la comunicazione in corso. I categorizzatori mi dicono la frase non appartiene, per sintassi, ad un tipo noto. Ergo chi parla lo fa a vanvera.

La palla è rossa. [referente = palla]

L'ho vista cadere.

I categorizzatori considerano la frase usando il referente del messaggio come "valvola di sicurezza". "l'ho vista cadere" così com'è non va ma se l'articolo è concorde al referente allora può essere "salvata" poichè è sintatticamente riconducibile ad una forma implicita significativa per la presenza di un referente introdotto in precedenza e ancora valido.

Riassumerei quindi in:

CategoriaFrase, predeterminate, sette secondo la sintassi italiana.
Frase, introdotta dall'utente.
Comunicazione, posseduta dal programma, contiene ciò che è eventualmente utile alla determinazione della categoria della Frase corrente, oltre a quello che potrebbe essere necessario al fine di scegliere le Frasi emesse dal programma. [con chi parlo, di cosa parlo eccetera]
Categorizzatore, uno per ogni categoria a cui possono appartenere le frasi italiane, operano su una Frase ed una Comunicazione come interruttori esclusivi per l'applicazione di un
AnalizzatoreLogico, estrae da una frase gli elementi informativi (soggetto, attributi eccetera).

Diciamo che l'AnalizzatoreLogico restituisce un pacchetto di unità operabili. A queste potremmo applicare uno tra più Reattori determinati in base alla categoria della frase. Ad esempio, il Reattore per una frase di categoria Affermativa prenderebbe il soggetti del pacchetto di unità operatibili e lo conserverebbe in memoria associandolo ai relativi predicati. Il Reattore di una frase Interrogativa prenderebbe il complemento di argomento o, in sua assenza, il referente per trovare ciò che sa riguardo all'argomento della richiesta. Poi ci sono un tot di cose su cui scervellarsi per trovare una risposta sensata, cosa che potrebbe farsi usufrendo del complemento di specificazione (Di che colore è la palla?) palla -> uh quante cose che so -> sotto colore ho qualcosa? -> rossa.

E poi c'è la costruzione della risposta...e insomma mi sa tanto di roba luuunga :D.

71104
04-01-2007, 19:48
@PGI-Bis, e altri che mi hanno letto: mi sa che non mi sono spiegato bene nei miei post precedenti :D

non bisogna ragionare sulle specificità di questa o quella grammatica, e neanche della grammatica in generale!!

la mia idea consiste solamente nell'astrarre dei pattern comuni da una sequenza di bytes, punto. la AI non vede entrare in ingresso parole: la AI vede entrare bytes, con valori totalmente arbitrari (anche caratteri ASCII non usati in nessuna grammatica). facendo riferimento al post #13 e relativi, se fosse la AI stupida, una volta presa quella sequenza di bytes dovrebbe semplicemente memorizzarla. ma siccome stiamo parlando invece di quella più furba, dovremmo cercare di confrontare quella sequenza di bytes con altre sequenze precedentemente memorizzate ed astrarre delle variabili!

una volta fatto questo secondo me si può veramente iniziare a dire che la AI capisca quello che le viene detto, e a quel punto potremmo pensare al modo di modificare i valori delle variabili al fine di esprimere una risposta...

71104
04-01-2007, 20:01
[...] e a quel punto potremmo pensare al modo di modificare i valori delle variabili al fine di esprimere una risposta... mi correggo: per esprimere la risposta non vanno modificati i valori delle variabili; modificando quelli si modifica la frase e si esprime semplicemente un concetto diverso, non la risposta a quella domanda. per imparare a rispondere alle domande la AI dovrebbe semplicemente assistere a discussioni sensate fatte da esseri umani e costituite da domanda e risposta.

esempio pratico:
Tizio - "ciao, come stai?"
Caio - "bene, grazie."

la AI assiste e memorizza. arrivo io e scrivo sulla console della AI:
"ciao, come stai?"

la AI ritrova quella sequenza in memoria, consulta il pattern associato a quella sequenza, consulta il pattern associato come risposta al pattern di quella domanda, consulta la sequenza associata al pattern della risposta, emette la sequenza: "bene, grazie."

la AI ha risposto senza minimamente capire. ora cambiamo qualcosa: dopo aver assistito a questo saluto tra Tizio e Caio la AI assiste ad un altro saluto tra i due:
Tizio - "ciao, dove stai?"
Caio - "qui, grazie."

LOL :D :D :D

l'esempio è veramente cretino ma l'ho fatto per farvi vedere come ora la AI costruisce il pattern: piglia la sequenza, la confronta con quella precedente, trova degli aspetti in comune. vede che un pezzo della sequenza è cambiato, perciò nel pattern associato a quella sequenza crea in quel punto una variabile. inoltre si ricorda che quando quella variabile assume il valore "come", un'altra variabile del pattern della risposta deve contenere il valore "bene", e che quando la prima assume il valore "dove" la seconda deve diventare "qui".

riassumiamo la situazione della AI dopo questo secondo saluto: c'è una sequenza "ciao, ??? stai?" associata ad un pattern (come/dove), associato a sua volta ad un pattern di risposta (bene/qui), associato infine ad una sequenza "???, grazie."

al contrario della AI fessa, dove invece avremmo soltanto 4 sequenze (le 2 domande e le 2 risposte).

PGI-Bis
04-01-2007, 20:10
la mia idea...

E la mia no. E allora :D ?

71104
04-01-2007, 21:09
così a tempo perso potremmo provare a scrivere un pezzo di codice per uno, che ne dite? :D :D :D LOL
Due idee a fiume sul "come". io intendevo proporre di scrivere il codice per realizzare la mia idea, non la tua :Prrr: :D

jappilas
04-01-2007, 21:59
se posso permettermi, suggerirei per adesso, di arrivare a padroneggiare la teoria e il funzionamento di un interprete prolog e di un planner goal based prima di avventurarsi in un dominio difficilmente esplorabile... :O

$te
04-01-2007, 22:02
adesso inizio a capire cosa vuoi fare....quindi c sono veramente una miriade d associazione ke deve creare: xcio il difficile é impostare il tutto per poi iniziare.....mh....

marco.r
04-01-2007, 22:19
Continuo io col programma...
vabbè va, giusto perché sono buono :O :O :O

#include <stdlib.h>
#include <stdio.h>

typedef struct _PATTERN {
// ...? O_o :D
} PATTERN, *PPATTERN;

int main() {
system("python ai.py");
}


:P :D.

71104
04-01-2007, 22:46
Continuo io col programma...
[cut]
:P :D.
1) manca il return nel main :read:
2) non funziona: mi dice che non trova il comando python :fagiano:

marco.r
04-01-2007, 22:56
se posso permettermi, suggerirei per adesso, di arrivare a padroneggiare la teoria e il funzionamento di un interprete prolog e di un planner goal based prima di avventurarsi in un dominio difficilmente esplorabile... :O
Io mi permetto di suggerire tanta buona volonta'... l'argomento e' decisamente complesso e di difficile approccio, soprattutto se si e' a digiuno della materia. Azzardo anche un altro paio di suggerimenti (ma non molto di piu' perche' non e' la mia materia).
Decidete se volete concentrarvi di piu' sulla comprensione della frase, o sul messaggio contenuto, ovvero se volete un programma che sembri comprendere l'italiano (anche se poi magari non capisce certe frasi ), piuttosto che parli un linguaggio semplice ma dal quale sappia estrarre in modo preciso un significato (che e' diverso da il significato).
Gia' affrontare uno dei due aspetti e' impegnativo... entrambi direi fin troppo proibitivo.
Se decidete di trattare il primo, in bocca al lupo; nel secondo caso lo stesso :D, ma almeno avete piu' materiale da cui attingere :P
Dovrete decidere che tipo di informazioni il programma tratta, o se preferite, come modella il mondo che lo circonda e come lo rappresenta ( visto che jappilas parlava di prolog, logica proposizionale ad esempio ? ). Partite da qualcosa di semplice, anche solo imparare delle nozioni e rispondere a delle interrogazioni a riguardo. Fatto questo aggiungete un modello che permetta di ricavare delle informazioni che vanno oltre ai fatti. Come fare questo dipende fortemente dal modello scelto, ad esempio potreste implementare i rudimenti della logica classica. Piu' bello (e difficile) ancora sarebbe poi insegnargli a generalizzare, o trattare con dati incompleti o peggio ancora contradditori ...
Il risultato sembrera' probabilmente meno intelligente di molti programmi progettati "per dialogare", ma magari sara' anche piu' utile.

marco.r
04-01-2007, 23:00
1) manca il return nel main :read:
Compila e funziona quanto basta per eseguire la parte interessante :P


2) non funziona: mi dice che non trova il comando python :fagiano:

Hai una installazione castrata del compilatore, un po' come in Java avere la JVM ma non le librerie standard... :D

71104
04-01-2007, 23:10
Decidete se volete concentrarvi di piu' sulla comprensione della frase, o sul messaggio contenuto, ovvero se volete un programma che sembri comprendere l'italiano (anche se poi magari non capisce certe frasi ), piuttosto che parli un linguaggio semplice ma dal quale sappia estrarre in modo preciso un significato (che e' diverso da il significato). ehm... ribadisco post numero 72 e 73; empriricamente continuo a sostenere la maggiore semplicità della mia idea :read:

marco.r
04-01-2007, 23:10
se così fosse allora esisterebbero concetti che qualcuno riesce a pensare ma non a spiegare, eppure io non credo che ne esistano.
Accade quotidianamente. Le parole sono una sintesi del pensiero e delle emozioni, ma ognuno pensa e "sente" in modo unico, e il risultato e' che persone diverse esprimono lo stesso concetto in modi diversi e allo stesso modo concetti diversi.
In teoria tutti sappiamo cosa e' "il verde", ma se do la possibilita' di sceglierlo in una gradazione avro' una risposta diversa da ogni persona, e probabilmente diversa tra oggi e domani per la stessa persona.
A questo si aggiungono i problemi specifici del linguaggio di comunicazione, che aggiungono ambiguita'.

71104
04-01-2007, 23:12
Hai una installazione castrata del compilatore, un po' come in Java avere la JVM ma non le librerie standard... :D di *quale* compilatore? :D
io ho GCC, poi... :Prrr:

ah, volendo ho anche CL, e in duplice versione...

71104
04-01-2007, 23:17
Accade quotidianamente. Le parole sono una sintesi del pensiero e delle emozioni, ma ognuno pensa e "sente" in modo unico, e il risultato e' che persone diverse esprimono lo stesso concetto in modi diversi e allo stesso modo concetti diversi. se ne è già parlato in maniera penso esaustiva.

In teoria tutti sappiamo cosa e' "il verde", ma se do la possibilita' di sceglierlo in una gradazione avro' una risposta diversa da ogni persona, e probabilmente diversa tra oggi e domani per la stessa persona. questo è un problema completamente differente, relativo non all'intelligenza della persona ma alla precisione dei suoi sensi (tant'è vero che come dici tu una stessa persona sceglierebbe gradazioni diverse in momenti diversi).

se anziché mostrare al soggetto delle gradazioni di colori gli mostri un set di colori sensibilmente differenti non ci saranno ambiguità.

marco.r
04-01-2007, 23:29
ehm... ribadisco post numero 72 e 73; empriricamente continuo a sostenere la maggiore semplicità della mia idea :read:
Francamente non mi sembra che funzioni bene, soprattutto perche' potresti avere frasi discordanti o dalla struttura particolare:
[quote]
Tizio - "ciao, come stai?"
Caio - "bene, grazie."

Tizio - "ciao, come stai?"
Semponio - "da schifo."
[quote]
In ogni caso estrai dei pattern comuni, punto e basta, riesci a generalizzare delle frasi simili (non necessariamente in modo corretto, peraltro) ma non andrai molto in la'. Se fai quello che suggerivo sopra, e provi a verificare concretamente che tipo di informazioni riesci a memorizzare in questo modo e il modello che ti risulta, vedrai che quest'ultimo e' abbastanza limitato.

marco.r
04-01-2007, 23:53
questo è un problema completamente differente, relativo non all'intelligenza della persona ma alla precisione dei suoi sensi (tant'è vero che come dici tu una stessa persona sceglierebbe gradazioni diverse in momenti diversi).

Eh, ma noi ricaviamo le nostre idee dalla nostra interazione col l'ambiente, cambiando la percezione cambia l'idea che ce ne facciamo e il senso che diamo alla stessa parola. Io non sto discutendo sulle causa di questo, ma sul fatto che il linguaggio non riesce a cogliere queste differenze (non sempre perlomeno).

Detto questo mi defilo definitivamente :P, tanto so che non riusciro' ad esprimere in italiano questo concetto ( :p :ciapet: ) e ho gia' infranto la mia promessa di non andare oltre i miei due suggerimenti :D.
notte

MEMon
05-01-2007, 11:29
Io dico che non bisogna concantrarsi sul significato delle parole e sulla grammatica italiana.
Bisogna invece creare un legame fra tutte le parole che il programma legge, e in più creare un associazione tra gruppi di parole, e tra causa effetto:io ho detto questo e mi hanno risposto quest'altro.
In questo modo con il passare del tempo si creeranno legami più o meno forti tra diverse parole, in modo da far sapere quale sia la più adeguata ad un certo input.

Un po' come fa un bambino insomma, quando impara a parlare mica sa il significato delle parole, ne usa una invece dell'altra solo perchè sa che reazione provoca in chi la sente, oppure perchè ha sentito spesso quella parola pronunciata vicina a quell'altra parola.

$te
05-01-2007, 12:24
concordo pienamente con MEMon

Futuregames
05-01-2007, 13:07
Io dico che non bisogna concantrarsi sul significato delle parole e sulla grammatica italiana.
Bisogna invece creare un legame fra tutte le parole che il programma legge, e in più creare un associazione tra gruppi di parole, e tra causa effetto:io ho detto questo e mi hanno risposto quest'altro.
In questo modo con il passare del tempo si creeranno legami più o meno forti tra diverse parole, in modo da far sapere quale sia la più adeguata ad un certo input.

Un po' come fa un bambino insomma, quando impara a parlare mica sa il significato delle parole, ne usa una invece dell'altra solo perchè sa che reazione provoca in chi la sente, oppure perchè ha sentito spesso quella parola pronunciata vicina a quell'altra parola.

quoto... è il vero punto :ave:

wingman87
05-01-2007, 13:09
A livello pratico io pensavo di fare un qualcosa che registra tutte le conversazioni e ricevuta in input una frase cerca in tutte le conversazioni già fatte le frasi che più somigliano a questa e restituisce in output la risposta più valida che era già stata data in precedenza. Se non trova nulla di valido ripete la frase in input e in questo caso sarà l'utente a dare una risposta valida che verrà poi utilizzata in futuro come possibile risposta.
E' un po' da migliorare cmq l'idea è questa..

DanieleC88
05-01-2007, 13:34
avete già provato a programmare un interfaccia che possa tenere una discussione, che possa imparare, o addirittura capire?
Ci provai anni ed anni fa, al tempo in cui usavo il Visual Basic... :D
Inutile dire che date le mie scarse capacità come programmatore dovetti abbandonare l'ardua impresa. Poi, quando ho scoperto Linux, ho cominciato ad usare un po' EMACS (prima di trovare la via della redenzione con VIM) ed ho scoperto che esisteva già: provate a dialogare con lo psichiatra di EMACS... :asd:

jappilas
05-01-2007, 13:35
Io dico che non bisogna concantrarsi sul significato delle parole e sulla grammatica italiana.
Bisogna invece creare un legame fra tutte le parole che il programma legge, e in più creare un associazione tra gruppi di parole, e tra causa effetto
...
un po' quello che pensavo io...
imho la prima cosa da fare sarebbe "progettare" una base di conoscenza iniziale e "statica", (basilare, quindi non modificabile) nella forma di concetti elementari espressi da relazioni atomiche -
ad es: identità, appartenenza, localizzazione ("mi trovo alla posizione X"), tempovarianza ( cioè currentTimestamp()!=currentTimestamp() perchè tra le due chiamate alla stessa funzione che ritorna il tempo corrente per come "visibile"alla IA il timer è stato incrementato, il che dovrebbe servire per dare alla macchina la nozione dello scorrere del tempo) -
e da assiomi
Al che si potrà aggiungere un modo per passare dalle parole che compongono la frase di input, al significato di ciascuna espresso in termini di precondizioni -> postcondizioni associate a quei concetti elementari che formano la base di conoscenza iniziale - e, se non in conflitto con questa, aggiungere la o le nuove relazioni ottenute, alla base di conoscenza per espanderne la sezione "dinamica"...
questo per la comunicazione uomo -> macchina, mentre il processo inverso e la generazione di una risposta sarà in questo contesto affidata a un engine che, in base a un goal, esplorerà le possibili opzioni (costrutti sintattici) per trovare una risposta in linea col goal e la modalità operativa (vedrei bene una macchina a stati) coerente con la base di conoscenza corrente
si nota come il tutto sia svincolato dalla lingua "concreta" (e relativa sintassi) usata, se non per il parsing iniziale e l' output - i passaggi intermedi si appliano su quello che potrà essere considerato un "metalinguaggio"

71104
05-01-2007, 18:15
Io dico che non bisogna concantrarsi sul significato delle parole e sulla grammatica italiana. eccerto, solo che quando lo dico io nessuno mi si caga -.-'

MEMon, d'ora in poi le cose le spiego prima a te, così poi tu le riferisci agli altri :read:

71104
05-01-2007, 18:24
a pensarci bene comunque il programma che ipotizzo io (quello a patterns) non si adatta tanto al dialogo quanto alla traduzione; ma penso sia lo stesso per quanto ipotizzato finora da MEMon, in quanto per il dialogo è necessario mettere in relazione il significato delle parole con tanti altri fattori come l'ambiente circostante, lo stato corrente della AI, eccetera eccetera. dico questo in base al fatto che se io dico alla AI "ciao, come stai?" mi aspetto che lei non mi risponda "bene" o "male" a pappagallo, ma che mi dica il suo reale stato d'animo o d'umore :D

mettere il linguaggio in relazione con altri fattori è semplice (per modo di dire): molto semplicemente, in ogni pattern la sequenza associata non deve includere solamente il linguaggio, ma deve includere anche un'altra sequenza di bytes che rappresenta uno stato d'animo, un'altra che rappresenta magari l'ambiente circostante, e così via. ma per ora è troppo complesso.

più sopra dicevo che il programma da me ipotizzato si adatta particolarmente bene alla traduzione perché gli riesce facilissimo fare corrispondenze tra frasi linguistiche. esempio:

Tizio - "la mia macchina è verde"
Caio - "my car is green"

la AI assiste e memorizza senza capire.

Tizio - "la mia macchina è gialla"
Caio - "my car is yellow"

la AI assiste, crea una variabile, e inizia ad avere un'idea del significato di "giallo" e "verde" (quantomeno sa che sono intercambiabili e associate rispettivamente a "yellow" e "green").

Tizio - "la mia matita è verde"
Caio - "my pencil is green"

la AI assiste e crea un'altra variabile. ora la AI è in grado di tradurre dall'italiano all'inglese (ma volendo anche viceversa) una frase che non ha mai sentito in tutta la sua esistenza:

utente - "la mia matita è gialla"
AI - "my pencil is yellow"

:D

wingman87
06-01-2007, 00:15
A me piace molto la tua idea xò proprio oggi ci pensavo al supermercato e mi è venuto in mente: ma la palla può anche essere grande o piccola! K scoperta! Da qui è venuto fuori un gran casino, se io dico:
la palla è rossa
la palla è verde
il programma intelligente capisce che rossa e verde sono interscambiabili e hanno probabilmente qualcosa in comune. Poi dico
la palla è grande
ok, sono tutti aggettivi ma oltre a questo non c'entrano molto l'uno con l'altro. Inoltre posso anche dire:
la mela è rossa
quindi probabilmente mela e palla verranno messe nella stessa categoria, categoria ce io etichetterei "Nomi".
A sto punto non so se questo sia effettivamente un problema o un vantaggio visto che con 4 frasi abbiamo già dato inizio a 2 delle più grandi categorie... :)

lord mathayus
06-01-2007, 10:16
E' proprio quello che pensavo io....secondo me dovremmo forse cercare di capire come fa il cervello umano (per esempio quello di un bambino) a comprendere una conversazione e imparare a parlare...ora lasciando perdere il fatto emozioni e sentimenti, in linea di principio un neonato non è molto diverso da un computer...entrambi accettano input ed entrambi possono ripetere a macchinetta quello che gli dico...ma la domanda secondo me è: come fa il bambino a imparare a costruire frasi solo sentendo parlare me? Cioè...se io volessi insegnare a parlare a un bambino, che non capisce una mazza di quello che dico, come posso dirgli "La parola -ciao- serve per salutare" quando non sa nemmeno il significato dei termini "la", "parola", .... Secondo me il bambino ragiona come qualcuno ha detto in uno dei primi post....pensiamo a quando il bambino impara a dire mamma o papà...come fa? o a quando un cane capisce che se pronunci una parola (es: bobby) vuol dire che lo chiami perchè quello è il suo nome....a furia di indicare la mamma e di ripetere al bambino "m-a-m-m-a"...."m-a-m-m-a"...."m-a-m-m-a"....dopo un pò lui capisce che quella persona deve chiamarla "mamma"...non sa forse bene cosa significa...però sa che se dice mamma quella persona arriva da lui...poi con il passare del tempo imparerà nuove parole e allora se tu a 7 anni gli chiedi "chi è la mamma?" allora lui ti saprà rispondere...premetto che io di AI ne capisco poco ma che cmq è un mondo che mi affascina e che vorrei capirne di più assieme a voi...però spero di essere stato d'aiuto per il proseguimento del progetto a cui mi piacerebbe prendere parte...

Giantar
08-01-2007, 09:56
Ciao ragazzi,
ho letto il forum e lo trovo molto interessante.
Io sto sviluppando ormai da tre anni una entità artificiale a cui ho dato il nome di Viger (ricordate il Voyager disperso di Star Trek).
Vi racconto un po' il mio progetto (è la prima volta che ne parlo).
La prima parte del progetto è stata occupata dalla creazione di una base dati di conoscenza.
Ho creato una base dati di circa 200000 lemmi di conoscenza divisa per classi di sapere.
Ho diviso i nomi propri dai nomi comuni e dei comuni.
Ho poi sviluppato un programmino che ha partire dal nome comune ha esploso
plurali e femminili.
Ho poi creato ua rete di collegamento intersemantica tra i lemmi archiviati.
Poi ho sviluppato un coniugatore di verbi ed ho esploso a partire dall'infinito dei verbi un db di circa un milione di righe che contiene tutte le forme
italiane coniugate.
Poi ho sviluppato l'entità. Il progetto era inizialmente in vb 5.0 poi migrato in vb 6.0 ed infine in vb.net.
Ad oggi è composta da un interfaccia semplicissima dove tu puoi fare delle
domande tipo e l'entità risponde.

Un esempio
Domanda: Chi è Kant?
Viger: Un filosofo tedesco
Domanda:quando è nato?
Viger:nel 22.4.1724
Domanda: Dove è nato:
Viger: a Königsberg
Domanda:Kant è un uomo ?
Viger: Si è un uomo?
Domanda: Che cosa è un uomo?
Viger:un essere vivente.
Domanda:Di cosa stiamo parlando?
Viger:di filosofia
Domanda:Dove si trova Roma ?
Viger:nel Lazio
Domanda: Roma è una capitale ?
Viger: Si. E'la capitale dell'Italia
ecc.


Il programma ha due moduli principali: un motore di analisi sintattica
che trasforma la frase attraverso un processo di lemmatizzazione tipo:

Chi è Kant -> Chi essere Kant
Di cosa stiamo parlando -> Di cosa stare parlare ?

il motere sintattico estrae anche tutte le forme sintattiche della frase
tipo: pronome verbo articolo avverbio ecc.

poi c'è un motore semantico che estrae il soggetto della frase e cerca nella base dati il riferimento e tutti i link semantici.
Tipo :Kant->Filosofia->Critica del Giudizio->Germania ecc.

Il progetto è ancora in fase di sviluppo, sono al 50% dal mio obbiettivo finale.
Ora mi sto occupando di dargli una memoria a breve ed a lungo termine in modo da crearsi un'idea del contesto.
Tipo se gli dico che Alessandro è mio cognato e gli chiedo chi è mio cognato
dopo venti domande lui mi risponde 'è tuo cognato'.
Ho poi pensato di interfacciare l'entità in modo da farlo collegare ad internet. Per il momento riesce a mostrarti un'immagine di quello che hai chiesto.
Tipo se gli chiedi che cosa è Il Tevere lui oltre a rispondere cerca, tramite Google un'immagine e te la fa vedere all'interno dell'interfaccia.
Il prossimo passo è quello di farlo navigare da solo alla ricerca di contenuti specifici.
Insomma ho tante idee ma poco tempo (purtroppo il lavoro mi porta via moolto tempo).
Spero di non avervi annoiato e aspetto di confrontarmi con voi sul bellissimo
tema dell'IA artificiale.
Saluti
Gianluca

MEMon
08-01-2007, 10:00
A lavorare sulla grammatica non si fa nulla di intelligente, programmi sono molto bene una macchina al fine di farle usare il linguaggio umano.
Ma glielo insegni a priori...

Giantar
08-01-2007, 10:33
e' vero, purtroppo non vedo al momento altre strade percorribili. In realtà non c'è nemmeno una definizione univoca di intelligenza.
Comunque io non uso solo la grammatica, ma ho cercato di stabilire anche relazioni di significato. Precedentemente avevo provato con le reti neurali, ma non ho avuto risultati soddisfacenti. Penso che l'analisi lessicale sia comunque un passaggio inevitabile per la comprensione anche del significato.

dierre
08-01-2007, 10:45
Tornano all'idea del bambino: un bambino, all'inizio della sua vita, secondo me ha cmq una base. Ora non so se possiamo parlare di istinti, oppure di qualcosa di leggermente più complesso. Ci ho riflettutto perché mi è appena nata una cuginetta quindi sono fresco di esperienza (se volete la piazzo in laboratorio e la osservo :asd: ).

Due giorni fa c'erano mia zia e mi zio che stavan parlando e mia cugina osservava, ad un certo punto mia zia ha alzato di più la voce, la bambina ha fatto una faccia tra lo stupore e lo spavento.

Ora prendendo l'esempio di sopra:

- Ciao come stai?
- Bene grazie.

e

- Ciao come stai?
- Sto da schifo.

Qui non si tratta soltanto di mettere in relazione parole e frasi, per rispondere ad una domanda del genere l'AI si dovrebbe rendere conto di come sta lei in quel momento.

Non so se mi avete capito, però in pratica manca la base da cui partire ad un computer.
Se uno scrive semplicemente frasi, oppure ancora meglio fa osservare al computer due persone parlare, ma rimangono cose scritte, non si arriva da nessuna parte, secondo me.

MEMon
08-01-2007, 10:46
Potrebbe...ma non è detto.

Per quanto mi riguarda penso di no, mgarai è stata la strada che hanno sempre percorso perchè piò ovvia, e forse per quello ancora fra noi non c'è nessun roboto intelligente! :D

o forse no? :wtf:

MEMon
08-01-2007, 10:49
Tornano all'idea del bambino: un bambino, all'inizio della sua vita, secondo me ha cmq una base. Ora non so se possiamo parlare di istinti, oppure di qualcosa di leggermente più complesso. Ci ho riflettutto perché mi è appena nata una cuginetta quindi sono fresco di esperienza (se volete la piazzo in laboratorio e la osservo :asd: ).

Due giorni fa c'erano mia zia e mi zio che stavan parlando e mia cugina osservava, ad un certo punto mia zia ha alzato di più la voce, la bambina ha fatto una faccia tra lo stupore e lo spavento.

Ora prendendo l'esempio di sopra:

- Ciao come stai?
- Bene grazie.

e

- Ciao come stai?
- Sto da schifo.

Qui non si tratta soltanto di mettere in relazione parole e frasi, per rispondere ad una domanda del genere l'AI si dovrebbe rendere conto di come sta lei in quel momento.

Non so se mi avete capito, però in pratica manca la base da cui partire ad un computer.
Se uno scrive semplicemente frasi, oppure ancora meglio fa osservare al computer due persone parlare, ma rimangono cose scritte, non si arriva da nessuna parte, secondo me.

Va beh ma lascia stare quello, per una cosa del genere devi dare alla tua macchina tutti gli stimoli che il nostro corpo con la chimica da al nostro cervello...
Quello ci si pensa poi puù avanti.
Concentriamoci sul fatto di come far capire alla macchina che le stai chiedendo come si sente.
E secondo me questo si può fare solo dopo molto tempo che il programma registra farsi su frasi.
Considera che il cervello di un bambino prima di spiccicare qualche parolina memorizza frasi per + di un anno...

dierre
08-01-2007, 10:58
Va beh ma lascia stare quello, per una cosa del genere devi dare alla tua macchina tutti gli stimoli che il nostro corpo con la chimica da al nostro cervello...
Quello ci si pensa poi puù avanti.
Concentriamoci sul fatto di come far capire alla macchina che le stai chiedendo come si sente.
E secondo me questo si può fare solo dopo molto tempo che il programma registra farsi su frasi.
Considera che il cervello di un bambino prima di spiccicare qualche parolina memorizza frasi per + di un anno...


Sì ma questo bambino non è che memorizza frasi e basta, memorizza frasi e ci associa qualcos'altro, non dico pensieri o idee, ma almeno una specie di marker emozionale.

MEMon
08-01-2007, 11:00
certo ma litiamoci a far capire ad una macchina discorsi, non farle esprimere emozioni che non ha.
Poi ad un bot che prende in input dall'esterno solo parole, come pensi di farle asscoiare una cosa visiva come un'espressione od un colore?
Oppure un odore? non saprà mai cos'è la puzza o il profumo...

E poi per permettere di rilevare immagini e di elaborarle velocemnte civorrebbe un parellelismo troppo elevato.

Giantar
08-01-2007, 11:02
da ignorante in materia, ti faccio i miei complimenti, è un idea e un programma molto carino... :D


Grazie dell'incoraggiamento.
Comunque conto presto di metterlo online sul mio sito
ora in costruzione (al momento è off-line) www.cervellidiversi.net.
Il sito avrà un ampio spazio all'IA (sia IA Forte che IA Debole).
Saluti

Giantar
08-01-2007, 11:06
certo ma litiamoci a far capire ad una macchina discorsi, non farle esprimere emozioni che non ha.
Poi ad un bot che prende in input dall'esterno solo parole, come pensi di farle asscoiare una cosa visiva come un'espressione od un colore?
Oppure un odore? non saprà mai cos'è la puzza o il profumo...

E poi per permettere di rilevare immagini e di elaborarle velocemnte civorrebbe un parellelismo troppo elevato.

Quello che sollevi in IA viene detto problema dei qualia.Uno dei problemi più spinosi e tutt'ora irrisolto. In realtà il problema vero è che non riusciamo a capire come funzione la coscienza umana.

dierre
08-01-2007, 11:08
certo ma litiamoci a far capire ad una macchina discorsi, non farle esprimere emozioni che non ha.
Poi ad un bot che prende in input dall'esterno solo parole, come pensi di farle asscoiare una cosa visiva come un'espressione od un colore?
Oppure un odore? non saprà mai cos'è la puzza o il profumo...

E poi per permettere di rilevare immagini e di elaborarle velocemnte civorrebbe un parellelismo troppo elevato.


Il punto è quello. Presupponendo che l'essere umano sia l'essere vivente più intelligente, la sua intelligenza si è sviluppata grazie ad una serie di fattori, ed il linguaggio non era inizialmente fra questi, almeno come lo conosciamo noi oggi.

La domanda "Come stai?" non è una domanda con una sola risposta possibile, come fai a far capire al computer quale è la risposta da dare?

A me sta bene che apprenda come dice 71104 attraverso una serie di domande. Quando ha visto già due risposte possibili (bene grazie, da schifo), come fa a stabilire cosa rispondere quando gli verrà posta la stessa domanda?

dierre
08-01-2007, 11:14
certo ma litiamoci a far capire ad una macchina discorsi[...]

Intendiamoci, la mia disquisizione si abbina a questa frase: "limitiamoci a far capire i discorsi ad una macchina".

Magari ho inteso male io il senso di "capire".

Giantar
08-01-2007, 11:20
Il punto è quello. Presupponendo che l'essere umano sia l'essere vivente più intelligente, la sua intelligenza si è sviluppata grazie ad una serie di fattori, ed il linguaggio non era inizialmente fra questi, almeno come lo conosciamo noi oggi.

La domanda "Come stai?" non è una domanda con una sola risposta possibile, come fai a far capire al computer quale è la risposta da dare?

A me sta bene che apprenda come dice 71104 attraverso una serie di domande. Quando ha visto già due risposte possibili (bene grazie, da schifo), come fa a stabilire cosa rispondere quando gli verrà posta la stessa domanda?

Hai centrato il problema: ovvero che cosa è un significato ? Al momento i programmi di IA possiedono solo significati dichiarativi. Nel senso che manovrano solo simboli. Questo perchè sono privi di una autocoscienza la quale renderebbe i simboli qualcosa di soggettivo.
Per rispondere alla domanda 'come stai ?' il computer dovrebbe interpretare il senso semantico di stare, di essere in una condizione. Ma la sensazione di essere è una sensazione fenomenica che il computer al monento non ha.

MEMon
08-01-2007, 11:28
Il punto è quello. Presupponendo che l'essere umano sia l'essere vivente più intelligente, la sua intelligenza si è sviluppata grazie ad una serie di fattori, ed il linguaggio non era inizialmente fra questi, almeno come lo conosciamo noi oggi.

La domanda "Come stai?" non è una domanda con una sola risposta possibile, come fai a far capire al computer quale è la risposta da dare?

A me sta bene che apprenda come dice 71104 attraverso una serie di domande. Quando ha visto già due risposte possibili (bene grazie, da schifo), come fa a stabilire cosa rispondere quando gli verrà posta la stessa domanda?
Infatti ad una domanda simile non potrebbe rispondere...è come chiedere ad un cieco che colore vede...

dierre
08-01-2007, 11:29
Magari bisognerebbe porsi nella condizione della macchina. Lo stare dal punto di vista di una macchina cos'è? Potrebbe essere un autocheck del consumo di risorse. Quindi alla domanda "come stai?" analizza il suo stato ed in base alle frasi che ha imparato ti risponde "da schifo", "bene", "potrebbe andare meglio".

Non so, bisognerebbe associare le parole a qualcosa che per un computer ha senso.

MEMon
08-01-2007, 11:31
Hai centrato il problema: ovvero che cosa è un significato ? Al momento i programmi di IA possiedono solo significati dichiarativi. Nel senso che manovrano solo simboli. Questo perchè sono privi di una autocoscienza la quale renderebbe i simboli qualcosa di soggettivo.
Per rispondere alla domanda 'come stai ?' il computer dovrebbe interpretare il senso semantico di stare, di essere in una condizione. Ma la sensazione di essere è una sensazione fenomenica che il computer al monento non ha.
Essato ora le IA che si vedono lavorano sulla semnatica e di intelligente non hanno nulla...

Comunque per me un significato è dato da quanti legami ci sono fra le parole.
Dico fra parole xkè un bot come quello che si cerca di fare ha come input solo testo.
Un cervello umano è molto avantaggiato in questo in quanto registra situazioni, ovvero immagini, suoni, odori, tutti in un colpo solo.

dierre
08-01-2007, 11:31
Infatti ad una domanda simile non potrebbe rispondere...è come chiedere ad un cieco che colore vede...

Ok...quindi per te che significa "far capire alla macchina i discorsi?", cioè non vorrei sembrasse un flame, ma davvero non capisco dal punto di vista dell'AI cosa significa "capire i discorsi".

MEMon
08-01-2007, 11:31
Magari bisognerebbe porsi nella condizione della macchina. Lo stare dal punto di vista di una macchina cos'è? Potrebbe essere un autocheck del consumo di risorse. Quindi alla domanda "come stai?" analizza il suo stato ed in base alle frasi che ha imparato ti risponde "da schifo", "bene", "potrebbe andare meglio".

Non so, bisognerebbe associare le parole a qualcosa che per un computer ha senso.
Esatto magari una cosa del genere, giusto per colmare la lacuna che ha.
Altrmenti metti su un sistema chimico.elettrico come il nsotro corpo...ma non mi sembra il caso :D

MEMon
08-01-2007, 11:34
Ok...quindi per te che significa "far capire alla macchina i discorsi?", cioè non vorrei sembrasse un flame, ma davvero non capisco dal punto di vista dell'AI cosa significa "capire i discorsi".

La stessa cosa che significa per un bamibino...
Secondo te un bambino sa il siginificato di aggettico, verbo, soggetto.. ec ecc?
No, ovvio che no, e non sa nemmeno il significato delle parole...
Ma semplicemente le memorizza e poi va per assonanza, cioè sceglie le parole in base a quante volte le ha sentite in quella situazione.

Per unamacchina dovrebbe e dico dovrebbe valere lo stesso discorso.
Te le dici una miriadi di frasi, che essa memorizza.

Giantar
08-01-2007, 11:56
La stessa cosa che significa per un bamibino...
Secondo te un bambino sa il siginificato di aggettico, verbo, soggetto.. ec ecc?
No, ovvio che no, e non sa nemmeno il significato delle parole...
Ma semplicemente le memorizza e poi va per assonanza, cioè sceglie le parole in base a quante volte le ha sentite in quella situazione.

Per unamacchina dovrebbe e dico dovrebbe valere lo stesso discorso.
Te le dici una miriadi di frasi, che essa memorizza.

Ma il bambino non parte da zero. In realtà esiste nel cervello una predisposizione genetica (quella che Chomsky chiama grammatica universale) ad acquisire le strutture del linguaggio che ascolta, indipendetemente dalla lingua (italiano, francese). In realtà il bambino non memorizza delle parole ma dei contesti linguistici globali. E' importante capire che non sono le parole la fonte del significato ma il contrario. La differenza tra un bambino e il computer che nel caso del bambino la fonte del significato delle parole è il bambino, mentre il computer vede e manovra solo simboli sterili di senso.
In sintesi i legami tra le parole nascono solo in presenza di significati e non il contrario.

MEMon
08-01-2007, 12:00
Si ma la predisposizione ad acquisire le strutture di un lingauggio le diamo infatti, ma non le diamo quelle di un linguaggio specifico.
Se la costruisci per comprendere l'italiano poi non può comprendere l'inglese, il francese ecc ecc.

nel caso di un bambino come fai a dire che la fonte del significato non provenga da una sterile serie di simboli? Chi te lo dice?
Che significato ha per un bambino dire ciao come stai?
Non ha nessun significato finche non capisce ciò che gli stai chiedendo, però avrai probabilmente una risposta corretta e striminzita, ad esempio un semplice "Bene", e avrai anche sempre la stessa risposta finchè non non sente altre possibili...

MEMon
08-01-2007, 12:06
un esempio quasi "lampante"
La mia nipotina se gli chiedi di che colore è un oggetto ti risp sempre:
verde
giallo
blu
e raramente rosso

Questo perchè sono i colori che ha sentito più volte.
Con il blu ci prende spesso.
con il rosso anche
con il giallo invece ci prende, ma lo dice anche per colori che non ha mai visto, probabile che lo associa come un colore incognito e chiaro bho
E se le dici questo è rosa, le dopo un po' gli chiedi di che colore è lo stesso oggetto lei dice quasi di sicuro giallo.
Questo perchè secondo men on ha capito il significato dei colori, cioè dirle questo è rosa è come dirle questo è pesante, non sa che rosa è un colore, ne che rosa ha un signifcato.
E' una parolina come un altra, messa l' in mezzo, sentita una sola volta.

Giantar
08-01-2007, 12:14
Il problema non è scegliere la risposta giusta ma capire il senso della domanda.
L'80 per cento del linguaggio non viene appreso dal bambino per memorizzazione ma attraverso la capacità di ricombinare parole in modo diverso. Nel senso che il bambino potrebbe acquisire il concetto di 'stare male' anche al di fuori dello schema della domanda 'come stai' e associarlo successviamente. Il nodo è aver capito che la domanda 'come stai' si riferisce al suo stato fisico e mentale. Ma questo presuppone un 'io senziente' che sa autorifersi a se stesso. Ecco il computer fallisce in questo. Nel senso che non ha nessun riferimento ai significati. La macchina può solo simulare non provare direttamente il senso delle parole.

Giantar
08-01-2007, 12:22
un esempio quasi "lampante"
La mia nipotina se gli chiedi di che colore è un oggetto ti risp sempre:
verde
giallo
blu
e raramente rosso

Questo perchè sono i colori che ha sentito più volte.
Con il blu ci prende spesso.
con il rosso anche
con il giallo invece ci prende, ma lo dice anche per colori che non ha mai visto, probabile che lo associa come un colore incognito e chiaro bho
E se le dici questo è rosa, le dopo un po' gli chiedi di che colore è lo stesso oggetto lei dice quasi di sicuro giallo.
Questo perchè secondo men on ha capito il significato dei colori, cioè dirle questo è rosa è come dirle questo è pesante, non sa che rosa è un colore, ne che rosa ha un signifcato.
E' una parolina come un altra, messa l' in mezzo, sentita una sola volta.

Ma questo dimostra che ha capito perfettamente che cosa è un colore. Rosa, rosso e verde è solo una distinzione successiva. In realtà non ti risponde 'elefante o albero' ma comunque un colore. Il concetto di colore opposto al non colore lo ha appreso. Questo ti dimostra che i significati precedono le parole.

dierre
08-01-2007, 12:28
E se si partisse con lo stabilire delle aree di pensiero?
Mi spiego un pò meglio, ovviamente non sostituisce l'io senziente, ma avrebbe un effetto simile. Le parole vengono associate come abbiamo detto ad altre parole ok? Fin qui va bene, in più a queste parole viene associata un'area di appartenenza. Per esempio guardare, vedere, sentire, ascoltare rappresentano alcuni dei sensi, e sono cose che una macchina (la macchina su cui vorremmo progettare l'ai) non può fare, quindi iniziamo a dare al computer una specie di coscienza di sè in modo che sa a cosa può rispondere e a cosa non può rispondere.
Le ho chiamate aree di pensiero non per caso ma perché non riguardano solo i sensi ma anche la considerazione di se stessi.

Poi dalla domanda pian piano risale al contesto-area di pensiero e cerca di rispondere.

Esempio stupido: come stai?-dove stai? Stare sta in entrambi ma ha significato diverso. Quindi in quel caso valuterà la cosa.

MEMon
08-01-2007, 12:29
No perchè ti risponde sempre con una parola che ha sentito quando pronunciavi la magica parola "colore"

Che COLORE è questo? e lei bho mai sentito colore
E' di COLORE blu

così per tante volte
ovvio che poi se gli richiedi di che COLORE è questo, le dice blu, ma perchè sente in mezzo la parola COLORE.

MEMon
08-01-2007, 12:30
Ma questo dimostra che ha capito perfettamente che cosa è un colore. Rosa, rosso e verde è solo una distinzione successiva. In realtà non ti risponde 'elefante o albero' ma comunque un colore. Il concetto di colore opposto al non colore lo ha appreso. Questo ti dimostra che i significati precedono le parole.
Non ti risponde "elefante" o "albero" solo perchè quando parlavate di colori non le hai mai pronunciate.
Prova a dirle per un po' di volte:
Questo COLORE è albero, vedi che poi ti dice anche albero.

71104
08-01-2007, 13:40
Qui non si tratta soltanto di mettere in relazione parole e frasi, per rispondere ad una domanda del genere l'AI si dovrebbe rendere conto di come sta lei in quel momento.

Non so se mi avete capito, però in pratica manca la base da cui partire ad un computer.
Se uno scrive semplicemente frasi, oppure ancora meglio fa osservare al computer due persone parlare, ma rimangono cose scritte, non si arriva da nessuna parte, secondo me. vedi post #95

lavorare anche solo con le frasi sarebbe già un ottimo risultato, nonché un'ottima partenza volendo creare una AI secondo un criterio evolutivo.

dierre
08-01-2007, 13:42
vedi post #95

lavorare anche solo con le frasi sarebbe già un ottimo risultato, nonché un'ottima partenza volendo creare una AI secondo un criterio evolutivo.

Sai cosa non ho capito della tua idea/algoritmo? "Lavorare solo con le frasi" oppure "capire una discussione" che significa? Perché se la tua idea è quella di mettere in relazioni parole, ma solo quello, poi che risultato ti aspetteresti?

71104
08-01-2007, 13:46
Il punto è quello. Presupponendo che l'essere umano sia l'essere vivente più intelligente, la sua intelligenza si è sviluppata grazie ad una serie di fattori, ed il linguaggio non era inizialmente fra questi, almeno come lo conosciamo noi oggi. OTTIMA osservazione. ma noi non siamo costretti a seguire la stessa linea evolutiva seguita da madre natura.

A me sta bene che apprenda come dice 71104 attraverso una serie di domande. Quando ha visto già due risposte possibili (bene grazie, da schifo), come fa a stabilire cosa rispondere quando gli verrà posta la stessa domanda? se lo scopo del programma fosse quello di semplice traduttore da una lingua all'altra si potrebbero seguire due strade:
1) si conta quante volte ha assistito all'una risposta e all'altra, e quando gli si pone quell'input si restituisce uno a random dei due output secondo le probabilità calcolate
2) si cerca di analizzare il contesto, ma è più difficile: richiede che un pattern sia associato anche a quelli degli input precedenti, sollevando così una serie di problemi come: quanti di quelli precedenti? ci sono anche possibili input che "resettano" il contesto? (frasi come "parliamo d'altro")

io inizialmente seguirei la 1)

71104
08-01-2007, 13:48
Sai cosa non ho capito della tua idea/algoritmo? "Lavorare solo con le frasi" oppure "capire una discussione" che significa? Perché se la tua idea è quella di mettere in relazioni parole, ma solo quello, poi che risultato ti aspetteresti? un traduttore universale, istruibile con qualsiasi lingua :)
saprebbe fare associazioni tra frasi. inoltre assistendo ad una discussione potrebbe già iniziare a partecipare a dialoghi apparentemente sensati: per fargli perdere senso dovresti faticare un po', non sarebbe banale :)

come esperimento di AI non sarebbe niente male, senza contare che poi lo si potrebbe evolvere secondo tutte le osservazione che state facendo in questo thread (a cominciare per esempio dalla cognizione del contesto del discorso, come osservato nel post precedente).

dierre
08-01-2007, 13:51
un traduttore universale, istruibile con qualsiasi lingua :)
saprebbe fare associazioni tra frasi. inoltre assistendo ad una discussione potrebbe già iniziare a partecipare a dialoghi apparentemente sensati: per fargli perdere senso dovresti faticare un po', non sarebbe banale :)

ah ok, io pensavo a qualcosa di più senziente.
Però come ti regoleresti col fatto che le frasi non si costruiscono con lo stesso ordine logico?

71104
08-01-2007, 13:52
Non ti risponde "elefante" o "albero" solo perchè quando parlavate di colori non le hai mai pronunciate.
Prova a dirle per un po' di volte:
Questo COLORE è albero, vedi che poi ti dice anche albero. ma questa è bastardaggine, anche un essere umano apprende in maniera errata se tu gli insegni cazzate :D :D :D

71104
08-01-2007, 13:53
ah ok, io pensavo a qualcosa di più senziente. macchè, già è difficilissimo quello che ho ipotizzato io... :mc:

Però come ti regoleresti col fatto che le frasi non si costruiscono con lo stesso ordine logico? :wtf: non ho capito... esempio pratico?

MEMon
08-01-2007, 13:54
cmq io e 71104 stiamo diciando le stesse cose, magari in maniera differente.

71104
08-01-2007, 13:55
E se si partisse con lo stabilire delle aree di pensiero? ottimo, quella che ho ipotizzato io è la prima: pattern recognition. la seconda potrebbe essere la logica (applicata al pattern matching), e la terza il riconoscimento visivo.

con queste tre aree complete e funzionanti avresti che la AI vede, parla di cose sensate in relazione a ciò che ha visto, e ragiona pure :mc:

ma andiamo per gradi, pianino pianino, eh :D

MEMon
08-01-2007, 13:55
ah ok, io pensavo a qualcosa di più senziente.
Però come ti regoleresti col fatto che le frasi non si costruiscono con lo stesso ordine logico?
Ma dai, se costruisce discrosi logici è già un buon punto!
L'ordine logico non centra perchè tanto un ordine c'è sempre.
te puoi dire una frase in una decina di modi diversi(anche meno) ma sono sempre quelli, e se memorizza tantissime volte queste frasi poi può usare uno o l'altro metodo.

dierre
08-01-2007, 13:56
:wtf: non ho capito... esempio pratico?
- come stai?
- how are you?

già qui c'è differenza.

dierre
08-01-2007, 14:00
Ma dai, se costruisce discrosi logici è già un buon punto!
L'ordine logico non centra perchè tanto un ordine c'è sempre.
te puoi dire una frase in una decina di modi diversi(anche meno) ma sono sempre quelli, e se memorizza tantissime volte queste frasi poi può usare uno o l'altro metodo.

Allora sono idiota io, evidentemente ho dei limiti mentali nel capire quello che dite. Ma memorizza frasi o è in grado di scrivere un discorso compiuto in un'altra lingua? Il punto è questo.

Perché ok, per "come stai?" oltre ad "how are you?" c'è anche per esempio "how do you do" e roba simile. Un conto è che ti costruisce un frase analizzando quello che tu gli dici, un conto è che cerca cose che si assomigliano e tenta.

MEMon
08-01-2007, 14:00
non c'è differenza xkè userari quelle parole nell stessa situazione, quindi la macchina crea gli stessi legami per lo stesso contesto.

MEMon
08-01-2007, 14:02
Apprende invece perchè per ogni frase elbarota aggiorna tutti i legami con le altre parole e quindi ne va delineando il suo significato.

Ciao come stai?
ciao si lega:come(1 volta),stai(1 volta) utilizzata in:domanda(1 volta)

Ciao come va?
ciao si lega:come(2 volte),stai(1 volta),va(1 volta) utilizzata in:domanda(2 volte)

ciao bella!
ciao si lega:come(2 volte),stai(1 volta),va(1 volta),bella(1 volta) utilizzata in:domanda(2 volte), esclamazione(1 volta)

e così via, vedrai che con il passare del tempo si crea un database tale da dare significato alle parole.
Ovviamente l'oggetto "parola" deve avere molti altri parametri oltre al legame, ad esempio in che posizione si trova, nell'esempio di prima (ciao) si trova 2 volte prima di come e solo 1 volta prima di bella.
E' poi anche ovvio che allo stesso tempo deve aggiornare i legami per le altre parole.
Pensa ad una cosa del genere molto ottimizzata ed estesa.

71104
08-01-2007, 14:03
- come stai?
- how are you?

già qui c'è differenza. :wtf: che problema c'è in questa situazione? se la macchina assiste a questa sequenza impara a tradurre "come stai?"

dierre
08-01-2007, 14:04
non c'è differenza xkè userari quelle parole nell stessa situazione, quindi la macchina crea gli stessi legami per lo stesso contesto.

Sì ma se io ti dico:

Ciao come stai? Io sono appena stato in ospedale per un controllo con il Dr. Pizza E Fiki. Lo ricordi?

Deve arrivarci da solo, dopo un pò di tempo, ma non perché è la stessa situazione, ma perché deve essere in grado di tradurlo.

dierre
08-01-2007, 14:04
:wtf: che problema c'è in questa situazione? se la macchina assiste a questa sequenza impara a tradurre "come stai?"

leggi l'esempio successivo.

dierre
08-01-2007, 14:08
Pensa ad una cosa del genere molto ottimizzata ed estesa.

Ok, ma a noi serve un traduttore giusto? Quindi questo discorso poi lo devi interlacciare tipo

- come stai?
- How are you?

Quindi deve analizzare la controparte inglese e cercare di far paragoni ed associazioni non solo fra le parole italiane, ma anche per quelle inglesi.

71104
08-01-2007, 14:10
Allora sono idiota io, evidentemente ho dei limiti mentali nel capire quello che dite. Ma memorizza frasi o è in grado di scrivere un discorso compiuto in un'altra lingua? Il punto è questo. quello che sto immaginando io non fa nessuna delle due cose: diciamo che memorizza frasi ma non così come sono; memorizza i patterns che riesce ad astrarre da ciascuna frase mettendola in relazione con altre frasi già memorizzate. in termini più pratici, confrontando una certa frase con quelle ricevute in input passati riesce a determinare nella frase dei punti variabili e a capire il dominio di ciascuna variabile. due esempi pratici sono ai post #73 e #95.

Perché ok, per "come stai?" oltre ad "how are you?" c'è anche per esempio "how do you do" e roba simile. se il traduttore assistesse ad entrambe le risposte in seguito alla frase "come stai?" le memorizzerebbe entrambe memorizzando anche la probabilità con cui capita ciascuna delle due risposte. in seguito a quell'input restituirebbe a random una delle due risposte secondo le probabilità memorizzate.

71104
08-01-2007, 14:11
Ok, ma a noi serve un traduttore giusto? Quindi questo discorso poi lo devi interlacciare tipo

- come stai?
- How are you?

Quindi deve analizzare la controparte inglese e cercare di far paragoni ed associazioni non solo fra le parole italiane, ma anche per quelle inglesi. no no no no... non ci siamo :p
la mia idea è diversa da quella di MEMon: leggi post #73 e #95 ^^

EDIT - soprattutto il #95

71104
08-01-2007, 14:13
Ciao come stai? Io sono appena stato in ospedale per un controllo con il Dr. Pizza E Fiki. Lo ricordi? questo richiede un'altra area di pensiero, ovvero cognizione del tempo. ma ribadisco: pianino pianino, per gradi... :D

dierre
08-01-2007, 14:15
no no no no... non ci siamo :p
la mia idea è diversa da quella di MEMon: leggi post #73 e #95 ^^

EDIT - soprattutto il #95

ho letto il 95, però da quanto ho capito, in quel modo te gli fai riconoscere le parole nelle varie lingue?

MEMon
08-01-2007, 14:16
Ok, ma a noi serve un traduttore giusto? Quindi questo discorso poi lo devi interlacciare tipo

- come stai?
- How are you?

Quindi deve analizzare la controparte inglese e cercare di far paragoni ed associazioni non solo fra le parole italiane, ma anche per quelle inglesi.
Ma no, quello lo deve imparare da solo, ovviamente deve eassistere in egual modo a frasi italiane ed inglesi...come impara al'italiano imparaa anke l'inglese, non capisco cosa non ti è chiaro...

71104
08-01-2007, 14:22
ho letto il 95, però da quanto ho capito, in quel modo te gli fai riconoscere le parole nelle varie lingue? immaginando di avere quella sorta di pattern matcher completo e funzionante, ciò che quell'affare impara dipende da cosa tu lo fai assistere: se lo metti ad assistere ad un dialogo tra due persone (a frasi alternate però, perché lui prende sempre input e output alternati!) lui impara a "dialogare"; se lo fai assistere ad una serie di frasi tradotte dall'italiano all'inglese lui impara a tradurre dall'italiano all'inglese.
se vuoi capire in dettaglio come funziona la mia idea leggi anche il #73 :p

MEMon
08-01-2007, 14:23
...
se il traduttore assistesse ad entrambe le risposte in seguito alla frase "come stai?" le memorizzerebbe entrambe memorizzando anche la probabilità con cui capita ciascuna delle due risposte. in seguito a quell'input restituirebbe a random una delle due risposte secondo le probabilità memorizzate.
Ma sei sicuro eh che stiamo dicendo due cose diverse? :D
Io dico di no.
Ti esprimi con un linguaggio più appropriato del mio tu.

71104
08-01-2007, 14:24
Ma sei sicuro eh che stiamo dicendo due cose diverse? :D
Io dico di no.
Ti esprimi con un linguaggio più appropriato del mio tu. tu non hai parlato di patterns e di variabili :Prrr:

Giantar
08-01-2007, 14:32
Io vi dico, provate a fare qualcosa di funzioanante in qualsiasi linguaggio di programmazione e vi accorgerete della difficoltà enorme di gestire il linguaggio umano e le sua intrinseca ambiguità. In ogni caso oggi come oggi, senza una adeguata analisi lessicale e sintattica dell'input non si va da nessuna parte.
Ve lo dico per esperienza diretta e non, ho dedicato anni allo studio dell'IA.
Il cervello umano cela ancora il 70 per cento dei suoi misteri.
Secondo me dovremmo riportare il discorso più sul pratico magari definire
un BOT in modo più specifico. Altrimenti si finisce per speculare.

MEMon
08-01-2007, 14:37
Scusami posso chiederti se lo fai solo per passione o magari anche per lavoro?
Cioè che sai provengono da studi personali o magari hai stud all'università?
Te lo chiedo perchè io avrei intenzione di prendere IA e automazione per la specialistica(se la farò :D) propro perchè è una delle mie passioni!

71104
08-01-2007, 17:52
Io vi dico, provate a fare qualcosa di funzioanante in qualsiasi linguaggio di programmazione e vi accorgerete della difficoltà enorme di gestire il linguaggio umano e le sua intrinseca ambiguità. In ogni caso oggi come oggi, senza una adeguata analisi lessicale e sintattica dell'input non si va da nessuna parte. aridaje :muro:
in tal caso lascio a voi, perché non rientra in quello che immaginavo io :mc:

Giantar
08-01-2007, 19:37
Scusami posso chiederti se lo fai solo per passione o magari anche per lavoro?
Cioè che sai provengono da studi personali o magari hai stud all'università?
Te lo chiedo perchè io avrei intenzione di prendere IA e automazione per la specialistica(se la farò :D) propro perchè è una delle mie passioni!

Diciamo che l'IA è una mia passione con tre radici. Me ne sono occupato nella mia prima laurea in (antropologia) più da un punto di vista appunto antropologico. Poi nel corso della seconda laurea in filosofia mi sono occupato di filosofia della mente che riguarda problematiche più vaste tipo la questione della coscienza, la possibilità di simulare un comportamento umano da parte dei robot e simili, studi di linguistica e altro.
Ora me ne sto occupando per passione in quanto sono al terzo anno di informatica. E visto che programmo dal lontano 1982 (sul nanobook z-80)ho deciso di scrivermi un BOT per conto mio.
Quello che posso dirti che l'IA insieme alla robotica, come dice anche Zio Bill
è il futuro.

Giantar
08-01-2007, 19:54
Comunque esiste un premio per i BOT. Si chiama Loebner Prize .
Ben 100000 dollari. Ho visto i BOT che girano e vi dico che non
sono cose stellari.
Uno dei più famosi BOT si chiama Alice se non ricordo male.
L'ho scaricato (provate anche voi). Si basa fondamentalemente su un parser xml. Provatelo anche voi.
In ogni caso se vi interessa posso darvi un'amplia bibliografia su qualsiasi argomento che riguarda l'IA. Sia l'indirizzo dell'IA forte che quello dell'IA debole (reti neurali, algoritmi genetici e simili).
Mi scuso se ho gettato un po di disillusione nel forum . Ma la realtà dell'IA è ancora molto poco matura. Siamo meno che all'inizio di una nuova era

MEMon
08-01-2007, 21:11
E' questo il bello! è una cosa che ancora nessuno ha plasmato davvero!

$te
08-01-2007, 21:22
justo!

dierre
08-01-2007, 22:23
Comunque esiste un premio per i BOT. Si chiama Loebner Prize .
Ben 100000 dollari. Ho visto i BOT che girano e vi dico che non
sono cose stellari.
Uno dei più famosi BOT si chiama Alice se non ricordo male.
L'ho scaricato (provate anche voi). Si basa fondamentalemente su un parser xml. Provatelo anche voi.
In ogni caso se vi interessa posso darvi un'amplia bibliografia su qualsiasi argomento che riguarda l'IA. Sia l'indirizzo dell'IA forte che quello dell'IA debole (reti neurali, algoritmi genetici e simili).
Mi scuso se ho gettato un po di disillusione nel forum . Ma la realtà dell'IA è ancora molto poco matura. Siamo meno che all'inizio di una nuova era

Su un giornale scientifico han fatto vedere una gara finanziata dalla difesa americana per auto che da sole riuscivano a percorrere un percorso ad ostacoli. Il premio era tipo 2 milioni di dollari se non vado errato.

DanieleC88
08-01-2007, 23:12
Si, dierre, lo finanzia il DARPA, da cui è nato anche Internet. Cmq, secondo me sprecate tempo a cercare di capire come far distinguere ad un software un linguaggio complesso. Le parole e le forme sintattiche che noi utilizziamo sono convenzioni adottate da secoli e che hanno vissuto uno sviluppo lunghissimo, dovremmo praticamente ricreare un cervello umano per decodificarle. Allora, secondo me, a grandi linee (ma proprio grandi), bisognerebbe procedere in modo che il software sia in grado di apprendere dei semplici vocaboli (magari con un linguaggio estremamente semplificato ed inventato da noi, solo per facilitare il lavoro) e comporli "razionalmente"; in seguito is potrebbe pensare a forme più complesse, ed introdurre una intelligenza che risponda alla sintassi di una lingua. In questo modo si procede dalla base, il software "impara da sé" e tutto funzionerebbe indipendentemente dalla lingua.

Tenete conto che sono le considerazioni di uno che è totalmente ignorante in materia, dunque non fatevi problemi a scartarle. ;)

$te
09-01-2007, 20:43
secondo me dobbiamo sviluppare l'idea delle aree d pensiero

71104
10-01-2007, 02:13
non da subito però, sarebbe prematuro. ma tanto vedrai che anche solo dopo aver realizzato il pattern matching ti sarà passata la voglia per quanto bisogna lavorare per realizzare una AI...