PDA

View Full Version : intelligenza artificiale


dupa
03-02-2006, 20:23
ciao a tutti,
pur essendomi laureato in ing. informatica, sto facendo un lavoro che non c'entra niente e forse nn tornerò più a fare il softwarista anche se son sempre stato piuttosto bravo :D

una cosa che nn ho mai avuto tempo e pazienza e materiale per imparare è stata l'intelligenza artificiale e la relativa logica che ci sta dietro.. a riguardo ho solo fatto un esame di informatica teorica

ora però vorrei fortemente come hobby fare qualcosa.. cosa mi consigliate? reti neurali? logica fuzzy?

mi dite qualche bel sito e qualche bel software??
grazie

franksisca
04-02-2006, 08:49
bhé, come sito ti consiglio google;)
software, sipende da cosa cerchi.
comunque, se ti interessa devi cercare molto, e considera che IA ha molto sottorami, quindi fare un discorso generalistico non è proprio possibile.

wisher
04-02-2006, 08:55
[piccolo ot]
per curiosità cosa fai adesso?
io sono una matricola di ing inf e vorrei sapere cosa può aspettarmi
[fine ot]

dupa
04-02-2006, 10:15
[piccolo ot]
per curiosità cosa fai adesso?
io sono una matricola di ing inf e vorrei sapere cosa può aspettarmi
[fine ot]

ora faccio il business analyst, quindi nn c'entra nulla :D

fulviettino
04-02-2006, 10:43
ora faccio il business analyst, quindi nn c'entra nulla :D
Io mi sono laureato nel luglio del 2004 ( ing. inf. ) ora sono progettista software
Dai un'occhiata QUI (http://www.hwupgrade.it/forum/showthread.php?t=955777)

cj++
04-02-2006, 10:43
[piccolo ot]
io sono una matricola di ing inf e vorrei sapere cosa può aspettarmi
[fine ot]

centralinista alla telecom :D

http://www.a-i.com/

wisher
04-02-2006, 11:54
centralinista alla telecom :D

http://www.a-i.com/
incoraggiante, sappi che mi avrai sulla coscienza se finisco alla telecom

fulviettino
04-02-2006, 11:59
incoraggiante, sappi che mi avrai sulla coscienza se finisco alla telecom
:D

dupa
04-02-2006, 12:42
bhé, come sito ti consiglio google;)
software, sipende da cosa cerchi.
comunque, se ti interessa devi cercare molto, e considera che IA ha molto sottorami, quindi fare un discorso generalistico non è proprio possibile.

bè google diciamo che lo conosco anche io :D
scherzi a parte, vorrei cominciare con le reti neurali, però vorrei qualcosa di abbastanza pratico.. insomma.. poca teoria e che si inizia facendo subito qualcosa di piccolo ma concreto :D

Ghepardo
04-02-2006, 15:06
bè google diciamo che lo conosco anche io :D
scherzi a parte, vorrei cominciare con le reti neurali, però vorrei qualcosa di abbastanza pratico.. insomma.. poca teoria e che si inizia facendo subito qualcosa di piccolo ma concreto :D


Se vuoi fare qualcosa di pratico senza teoria, nel campo informatico/matematico...puoi giusto zappare la terra ^_^.

La teoira serve comunque!

Ti consiglio di iniziare da questo libro Russell Norvig.

dupa
05-02-2006, 16:13
Se vuoi fare qualcosa di pratico senza teoria, nel campo informatico/matematico...puoi giusto zappare la terra ^_^.

La teoira serve comunque!

Ti consiglio di iniziare da questo libro Russell Norvig.

che libro?
in ogni caso dopo 5 anni di ing. un po' di teoria informatico/matematica dovrei averla :D

io preferisco imparare guardando un esempio pratico e commentato piuttosto che leggere un mucchio di teoria.

mi piacerebbe vedere qualche esempio molto piccolo di rete neurale, con relativa spiegazione della logica in base alla quale funziona

Ghepardo
05-02-2006, 16:30
che libro?
in ogni caso dopo 5 anni di ing. un po' di teoria informatico/matematica dovrei averla :D

io preferisco imparare guardando un esempio pratico e commentato piuttosto che leggere un mucchio di teoria.

mi piacerebbe vedere qualche esempio molto piccolo di rete neurale, con relativa spiegazione della logica in base alla quale funziona

Anche io studio ingegneria. Te, essendo già laureato, sai meglio di me che la teoria è necessaria per affrontare correttamente la stragrande maggioranza dei temi dell'informatica o della matematica, ma una buona dose di teoria, come giustamente hai detto, già ce l'hai ^_^.

Il libro è:
"Russel, Norvig: Artificial Intelligence, a modern approach".

Questo libro è quello che ho usato nel corso di intelligenza artificiale (non dovrei dirlo ma...lo puoi anche scaricare da emule), ed è considerato la bibbia dell'intelligenza artificiale. Nel percorso del libro, gli autori iniziano con degli esempi, per poi svilupparli man mano che le consocenze del lettore si arricchiscono. Sinceramente in molte parti riguardanti la logica o le reti di Bayes dei concetti/meccanismi sono spiegati malissimo a mio parere, ma a di là di queste mie considerazioni personali, deve esserci un motivo per cui è considerato la bibia della AI.

E' per questo che ti consiglio questo libro. Non so darti altri aiuti perchè tutto quello che so viene da un corso che ho fatto all'università, ed il materiale del corso era questo libro.

Se cerchi nei programmi p2p, tipo emule, troverai moltissimo materiale sia sulle reti neurali che sulla AI.

Ciao!

dupa
05-02-2006, 16:34
Anche io studio ingegneria. Te, essendo già laureato, sai meglio di me che la teoria è necessaria per affrontare correttamente la stragrande maggioranza dei temi dell'informatica o della matematica, ma una buona dose di teoria, come giustamente hai detto, già ce l'hai ^_^.



Riguardo il corso che hai fatto di intelligenza artificiale (che io nn ho fatto, su quel ramo mi son fermato a informatica teorica :D) ma voi avete poi fatto qualche retina neurale?

Io mi ero letto tempo fa la guida di matlab relativa alla libreria sulle reti neurali, in pratica era mooolto teorica e mi ero annoiato dopo qualche decina di pagine.

Mi pare che in matlab c'era un esempio di rete neurale che faceva l'inseguimento di funzione, quello che vorrei vedere io è un problema abbastanza semplice da risolvere e la relativa soluzione usando le reti neurali :)

voi avete fatto qcosa del genere al corso?

Ghepardo
05-02-2006, 16:37
Riguardo il corso che hai fatto di intelligenza artificiale (che io nn ho fatto, su quel ramo mi son fermato a informatica teorica :D) ma voi avete poi fatto qualche retina neurale?

Io mi ero letto tempo fa la guida di matlab relativa alla libreria sulle reti neurali, in pratica era mooolto teorica e mi ero annoiato dopo qualche decina di pagine.

Mi pare che in matlab c'era un esempio di rete neurale che faceva l'inseguimento di funzione, quello che vorrei vedere io è un problema abbastanza semplice da risolvere e la relativa soluzione usando le reti neurali :)

voi avete fatto qcosa del genere al corso?

No niente reti neurali. La pagina del corso la trovi sul sito del docente del mio corso (che è un pezzo grosso della AI in italia):

www.dis.uniroma1.it/~aiello

Per le reti neurali, c'è un'esame alla specialistica. Se ti interessa l'argomento, visita la pagina di questo professore (anche questo è un geniaccio):

http://infocom.uniroma1.it/~martin/


Ovviamente devi andare sulla pagina "didattica".

dupa
05-02-2006, 16:40
No niente reti neurali. La pagina del corso la trovi sul sito del docente del mio corso (che è un pezzo grosso della AI in italia):

www.dis.uniroma1.it/~aiello

Per le reti neurali, c'è un'esame alla specialistica. Se ti interessa l'argomento, visita la pagina di questo professore (anche questo è un geniaccio):

http://infocom.uniroma1.it/~martin/


Ovviamente devi andare sulla pagina "didattica".

ma non esiste una sorta di "problema ultrabanale" che si risolve tramite ste reti neurali?

Ghepardo
05-02-2006, 16:41
ma non esiste una sorta di "problema ultrabanale" che si risolve tramite ste reti neurali?


Non lo so ^^.

marco.r
05-02-2006, 20:40
ma non esiste una sorta di "problema ultrabanale" che si risolve tramite ste reti neurali?
Un qualsiasi problema approssimabile con una funzione R^m->R^n o R^m->{0,1}^n è un candidato per l'approssimazione con rete neurale. Più regolare la formula da trovare, più facile che la rete riesca nella sua impresa.

( Tieni presente che nella forma più tradizionale (feed-forward multistrato) una rete neurale non è altro che una composizione di funzioni del tipo f(Wx+w0) con f tipicamente non lineare, e il suo apprendimento consiste nell'imparare i coefficenti della matrice W (e di w0) ).

Il problema quindi sta nel trovare una rappresentazione vettoriale del problema che sia "buona".

marco.r
05-02-2006, 20:45
ma non esiste una sorta di "problema ultrabanale" che si risolve tramite ste reti neurali?
Visto che ho un po' divagato torno sulla domanda originale :P.

Tanto per partire con un problema idiota, si potrebbe insegnare ad una rete a capire quando un colore è "caldo" oppure "freddo", partendo dalle tre componenti fondamentali. Quindi una funzione R^3 -> {0,1} ( o [0,1] se vuoi sapere "quanto caldo" )
Un po' piu' complicato, si potrebbe provare ad insegnarli a convertire da una rappresentazione ad un'altra (da CMYK a RGB)

dupa
06-02-2006, 07:59
Visto che ho un po' divagato torno sulla domanda originale :P.

Tanto per partire con un problema idiota, si potrebbe insegnare ad una rete a capire quando un colore è "caldo" oppure "freddo", partendo dalle tre componenti fondamentali. Quindi una funzione R^3 -> {0,1} ( o [0,1] se vuoi sapere "quanto caldo" )
Un po' piu' complicato, si potrebbe provare ad insegnarli a convertire da una rappresentazione ad un'altra (da CMYK a RGB)

facciamo il caso semplice, da un RGB la rete neurale mi deve dire se il colore è "caldo" o "freddo".
In sostanza la rete partendo da tre valori intero di input ognuno compreso tra 0 e 255 mi restituisce o 0 (freddo) o 1 (caldo).

Ora, da quel che ricordo la rete neurale prevede una forma di "allenamento", in pratica io inizio a buttare dentro dei valori di input e il corrispondente output che la rete "dovrebbe" buttar fuori es: input (255, 0, 0) output (1=caldo)

Se non ricordo male, questa fase di allenamento fa sì che la rete imposti dei coefficienti interni ai suoi neuroni in modo che il suo funzionamento si avvicini il più possibile alla funzione "desiderata"

Ora, sempre se quello che ho scritto non è una strunzata, mi spiegate in modo generico la logica in base alla quale si costruisce il "layout" della rete da "allenare"?

grazie

marco.r
07-02-2006, 00:09
facciamo il caso semplice, da un RGB la rete neurale mi deve dire se il colore è "caldo" o "freddo".
In sostanza la rete partendo da tre valori intero di input ognuno compreso tra 0 e 255 mi restituisce o 0 (freddo) o 1 (caldo).

Ora, da quel che ricordo la rete neurale prevede una forma di "allenamento", in pratica io inizio a buttare dentro dei valori di input e il corrispondente output che la rete "dovrebbe" buttar fuori es: input (255, 0, 0) output (1=caldo)

Se non ricordo male, questa fase di allenamento fa sì che la rete imposti dei coefficienti interni ai suoi neuroni in modo che il suo funzionamento si avvicini il più possibile alla funzione "desiderata"

Ora, sempre se quello che ho scritto non è una strunzata, mi spiegate in modo generico la logica in base alla quale si costruisce il "layout" della rete da "allenare"?

grazie
Faccio un esempio a spanne, per le formule ti rimando ad un testo che potrà spiegartele meglio di me.

Ipotizziamo che il nostro compito, distinguere tra colori caldi e semplici, sia abbastanza semplici, tanto che useremo la rete più semplice possibile allo scopo, ovvero tre neuroni di ingresso collegati direttamente a quello di uscita , a cui aggiungiamo un quarto segnale di ingresso con valore fisso 1 (ci serve per far si' che all'ingresso (0,0,0) possa corrispondere un qualsiasi valore).
In pratica quattro connessioni a cui corrispondono altrettanti pesi.
Dando fondo a tutte le mie (scarse) doti artistiche, il risultato lo vedi nel documento che allego :D.
In termini matematici, il segnale in ingresso dal neurone di destra sarà x∙w, con x = [1,x1,x2,x3] vettore di ingresso (il segnale) e w = [w0,w1,w2,w3] vettore dei pesi ("la forza" delle connessioni).
L'output del neurone una funzione del suo ingresso y = σ(x). Di solito [i]σ(x) = 1 / (1+e^(-x)) (per funzioni che mappano in [0,1]).

Facciamo un esempio con numeri.
Dobbiamo addestrare la rete (ovvero capire i pesi w migliori ) per cui partiamo da dei valori casuali e piccoli per i pesi, ad esempio w = [0.12,-0.01,0.23,0.05]

Sappiano che per il colore (1,0,0) ( il (255,0,0) di prima normalizzato) dovremmo ottenere 1
Otteniamo invece σ( 1*0.12 - 1*0.01 ) = 0.532 circa

Abbiamo un errore E di 0.468 che dobbiamo correggere. Come ?
Possiamo immaginare E come funzione dei pesi E(w0,w1,w2,w3), e quindi vogliamo trovare il punto (w0,w1,w2,w3) che minimizza la funzione E. Ad esempio calcolandone il gradiente.∇E(w) = [δE/δw0,δE/δw1,δE/δw2,δE/δw3] e spostandoci "in discesa" verso un punto con errore più basso.
In altre parole puoi correggere il vettore w con una quantità Δw = -η ∇E(w), con η costante abbastanza piccola (nel nostro caso prendiamo 0.1) . Il nuovo vettore (w+Δw) sbaglierà di meno.
Nel nostro caso (i conti te li lascio per esercizio :D :p )abbiamo
Δwi = η*(t-o)*xi, dove t è il valore che vorremmo ottenere, o l'output del neurone e l'input dell' i-esimo neurone
Ovvero per noi
Δw0 = Δw1 = 0.1*(1-0.532)*1 = 0.046 circa
otteniamo quindi che il nuovo è circa w=[0.17,0.03,0.23,0.05]
ed infatti dando in pasto alla rete il colore di prima otteniamo approssimativamente
σ( 1*0.17 + 1*0.03 ) = 0.549, un po' meglio.

Ora non basta che ripetere l'operazione un bel po' di volte :D.
Avrai notato come non abbiamo toccato i due pesi w2 e w3, questo perchè i corrispondenti valori di ingresso erano a 0 e non davano contributo. Sarà compito di altri altri colori e altri esempi far variare questi due pesi. In alternativa si poteva mappare i colori sull'intervallo [-1,+1] e adattare la funzione σ.
A meno di errori (ce ne saranno di sicuro... son 3-4 anni che non tocco piu' 'sta roba) il succo è questo qua, poi si tratta solo di condirlo con le varie salse, ma soprattutto tanta matematica, che a seconda del modello può spaziare dai frattali al calcolo delle probabilità, passando per Hamilton-Jacobi (alla faccia di chi mi diceva che Meccanica Razionale non serviva un piffero :D :help: )

P.S.: uhm, l'allegato che avevo generato è troppo grosso :cry:, vabbè, forse è meglio cosi' :rolleyes:

DoubleAJ
07-02-2006, 12:39
Se vuoi utilizzare Matlab, c'è il toolbox Netlab...

dupa
07-02-2006, 13:01
Se vuoi utilizzare Matlab, c'è il toolbox Netlab...

sì l'avevo visto, tra l'altro, il poco che sapevo delle reti neurali l'avevo letto proprio nella documentazione di quel toolbox