Home    About me    Publications    Blog    Undergrad memories

Fabio Ruini’s blog

Because Italians do it better! What the f**k? Ehm… the blogs, I mean… obviously! :-/

Archivio per ottobre, 2006

Bestie rare crescono…

E’ arrivato il grande momento. No, non mi sto per sposare. Semplicemente ho deciso che stasera vi racconterò di quello su cui sto lavorando all’ISTC. Dunque mettetevi comodi. Sono prolisso per natura, ormai lo sapete. E in più le cose da dire sono tante. Prendetevi pure qualcosina da bere, possibilmente caldo (un bel caffè americano é quanto di più adatto allo scopo mi viene in mente), mettete a letto i bambini, pulite gli occhiali ed infine allacciate le cinture. Fatto tutto? Perfetto, ora siete pronti ad imbarcarvi con me per questo affascinante viaggio alla scoperta della mia tesi di laurea.

Ma siete davvero sicuri di essere pronti, vero? Ok… lettore di blog avvisato, lettore di blog mezzo salvato. Siccome sarò lungo e palloso è bene avvisarvi due volte.

Tutto ebbe inizio in una buia e tempestosa notte (perdonate la licenza poetica, in realtà non so se quel giorno ci fosse tempesta, ma di sicuro non era buio e tantomeno notte) del lontano 1993, quando Domenico Parisi e Federico Cecconi presentarono, nel contesto della Second International Conference on Simulation of Adaptive Behavior (detta pure “From Animals to Animats 2“), un loro lavoro dal titolo: “Neural Networks with Motivational Units“. Si trattava di una serie di simulazioni, mirate a studiare come organismi artificiali potessero arrivare ad esibire comportamenti di tipo “goal-oriented”.

Le simulazioni di vita artificiale (e questo doveva valere in particolar modo all’epoca in cui l’articolo venne scritto), si focalizzano spesso su singoli aspetti, estremamente ristretti e circoscritti, del comportamento degli esseri viventi. Spesso si tratta di una necessità pratica, dettata dalle limitazioni delle macchine sulle quali queste simulazioni devono “girare”. Più frequentemente ciò è invece dovuto all’esigenza di semplificare il più possibile il reale, in maniera tale da poterlo ricreare virtualmente in maniera sufficientemente agevole. Ma al di là delle motivazioni che vi stanno alla base, quello che si fa solitamente è creare un determinato ambiente ed inserire al suo interno un organismo, il cui comportamento è in qualche modo “dettato” dagli stimoli ambientali che percepisce. Al comparire di due stimoli sensoriali tra loro simili, in sostanza, la risposta comportamentale dell’organismo é pressapoco lo stessa.

Le cose diventano più interessanti, e questo è il caso analizzato da Cecconi e Parisi nel loro lavoro, quando si cerca di ottenere dagli organismi virtuali un più elevato livello di autonomia rispetto all’ambiente nel quale essi vivono. Autonomia che si traduce, nella pratica, in comportamenti che non sono eslcusivamente funzione degli stimoli sensoriali prodotti dall’interazione con l’ambiente, ma che dipendono anche da una componente interna all’organismo: lo “stato motivazionale”.

Per andare ancor più nello specifico, i due ricercatori hanno creato un’ambiente virtuale bidimensionale discreto (rappresentabile graficamente da una matrice di dimensione 10×10), alcune delle cui 100 celle possono essere caratterizzate dalla presenza di unità di cibo o di acqua. Una popolazione di reti neurali (overro, ciò che abbiamo chiamato fino a questo momento “organismi”), dotate, oltre che dei recettori dell’input sensoriale, anche di un’unità aggiuntiva che codifica lo stato motivazionale interno (fondamentalmente, la sensazione di “fame” o di “sete”), viene inserita nell’ambiente e fatta evolvere tramite algoritmo genetico per 50 generazioni. Ciò che si osserva con il passare del tempo è che l’evoluzione porta alla comparsa di individui che si muovono nello spazio, raccogliendo cibo ed acqua, in accordo con il proprio stato motivazionale (vanno alla ricerca di cibo quando hanno fame, di acqua quando hanno sete).

Matrice 10x10 (3D)

Più chiaro ed esauriente del sottoscritto risulta essere l’abstract dell’articolo in questione, che riporto integralmente:

Organisms with multiple goals exibit behavior which is more autonomous with respect to the environment because the same environmental input can be responded to with different behaviors as a function of the currently active goal. We present simulations of the evolution of populations of neural networks with motivational units, i.e. units which contribute to the network’s output but are not activated by environmental events. Different activation states of these units mean “hunger” or “thirst”. Organisms endowed with these units evolve a behavior that seeks food when the motivational state is “hunger” and water when it is “thirst”, thereby exibiting multiple goals. A final simulation shows that organisms will spontaneously evolve such motivational units to control their behavior.

Per ora, visto che si sta facendo tardi, non mi addentro nei dettagli tecnici di queste simulazioni. Lo farò a partire da domani (se ve lo state chiedendo, sì… è una minaccia). Il mio lavoro, comunque, consiste nel ricostruire queste simulazioni (uso il plurale non a caso, siccome vengono provate varie “combinazioni”, ma su questo punto ci ritorneremo più avanti) e studiare alcuni aspetti interessanti che emergono da esse. In particolare, mi è stato chiesto di analizzare la struttura (intesa come insieme dei pesi sinaptici) delle reti neurali che rappresentano gli organismi “efficienti”, in maniera tale da capire come sia possibile che esse riescano ad esibire un comportamento “intelligente” (cercare cibo quando sono affamate, acqua quando sono assetate). La teoria di Parisi è che l’unità motivazionale funzioni in qualche modo da “deviatore”, facendo sì che l’organismo ignori completamente (con un meccanismo definito di “attenzione selettiva”) le informazioni sensoriali relative al cibo quando è assetato e viceversa. L’idea, sulla carta, appare più che plausibile, ma deve essere verificata in maniera un po’ più approfondita. Ed è esattamente ciò di cui si occuperà principalmente il sottoscritto.

Più marginalmente, almeno all’inizio (poi tutto dipenderà dal tempo a disposizione), dovrò inoltre affrontare anche un altro paio di aspetti. Il primo riguarda sempre questo tipo di simulazione, ma con reti neurali leggermente diverse, dotate di due unità motivazionali invece che una sola. Con tale topologia di rete, un organismo può avvertire allo stesso tempo fame e sete, seppur con intensità tra loro differenti. Questo differente status quo ha chiaramente la sua influenza sul comportamento degli organismi, ma si è tuttavia osservato che essi riescono comunque a “performare” bene nella maggior parte delle situazioni. Il problema, si è osservato, sorge quando l’organismo avverte al tempo stesso un forte livello di fame e di sete. In questa particolare situazione, invece che muoversi indifferentemente alla ricerca di acqua e cibo, capita che l’organismo si blocchi del tutto. Incapace di scegliere tra due alternative, entrambe estremamente allettanti, finisce per non mangiare né bere, lasciandoci così le penne. Parlando dell’argomento, Parisi mi ha lasciato intendere che potrebbe trattarsi di un meccanismo simile a quello della depressione negli esseri umani, che lui legge principalmente come patologia che rende incapaci di effettuare scelte.

Il secondo aspetto cui facevo riferimento nel paragrafo qui sopra è invece di carattere più generale. Alcuni studi (ancora in fase preliminare) svolti di questi tempi hanno mostrato come reti neurali dotate di un sufficiente numero di neuroni nello strato intermedio siano in grado di far evolvere comportamenti intelligenti simili a quello sopra descritto. Niente di strano su questo punto. La faccenda curiosa è che, una volta che il comportamento “intelligente” è stato appreso, la rete “azzera” il peso di alcune connessioni sinaptiche, “disattivando” di fatto alcuni dei suoi neuroni dello strato intermedio. Questi neuroni non vengono più utilizzati e ciò porterebbe pertanto a pensare che non siano necessari. Al contrario, invece, è stato visto che con un minor numero di neuroni il comportamento “intelligente” non riesce ad evolvere. Probabilmente, sempre secondo Parisi, si tratta di ciò che avviene anche agli esseri umani: un boom di connessioni neuronali che vengono attivate durante l’infanzia (quando l’apprendimento è il più massiccio della vita dell’uomo), per poi decadere prima di raggiungere l’adolescenza.

Vedremo un po’. Di carne al fuoco, come avrete potuto intuire, ce n’è tantissima. Per quanto riguarda il software, invece, oggi pomeriggio ho completato la stesura del codice, scrivendo le ultime funzioni che mi mancavano. Ok, qualche problemino c’è ancora. Analizzando i dati risultanti dai primi run di questo pomeriggio, mi sono accorto che gli organismi (almeno per quanto riguarda la prima generazione), non modificano l’output della propria rete neurale durante i vari steps, nonostante gli inputs (angolazione e distanza delle più vicine unità di cibo e di acqua) si modifichino correttamente. Questo va in qualche modo bene per coloro che casualmente iniziano la loro evoluzione con pesi sinaptici che portano all’attivazione del pattern (1,1) e riescono così a muoversi lungo i bordi dell’ambiente e raccattare il più possibile. Va un po’ meno bene per coloro che hanno gli altri pattern di output: con (0,0) gli organismi rimangono irrimediabilmente fermi per tutti gli step, mentre con (1,0) o (0,1) si limitano a ruotare continuamente su se stessi. Sorvoliamo poi sul fatto che alcune delle mie bestioline abbiano mangiato, secondo i risultati stampati a video, qualcosa tipo -1029384 unità di cibo e/o di acqua. Da domani, fino a data da destinarsi, consideratemi in fase di debug…

PS: Mi sono casualmente imbattuto nel sito Internet del libro “La società dei beni” degli ormai “soliti” Domenico Parisi e Federico Cecconi. A parte il fatto che il sito meriterebbe una visita anche soltanto per com’è realizzato (credo sia Flash, comunque gradevolissimo ed usabilissimo al tempo stesso), lì dentro potete vedere la demo di una simulazione in qualche modo simile a quella su cui sto lavorando io: “Acqua e Cibo“.

PPS: Il riferimento bibliografico all’articolo di cui si è parlato nel post è: F. Cecconi, D. Parisi, Neural networks with motivational units, in J.-A. Meyer, H.L. Roitblat, & S.W. Wilson (eds.) From Animals to Animats 2, Cambridge, Mass., MIT Press, 1993.

PI Greco – Il teorema del delirio

Ma che faccio, mi metto a parlare di film pure io, che non ci ho mai capito un piffero (eufemismo)?

Locandina di "PI Greco - Il teorema del delirio"

Avrei un sacco di altre cose da raccontare, da spiegare, da provare a far capire. Ma le mie energie, oggi, si sono tutte esaurite all’istituto. Che non si fraintenda. Da un punto di vista meramente efficientista, la giornata di oggi è stata una delle più produttive che la mia carriera ricordi. Ho aperto XCode verso le nove e mezza di mattina (oggi proprio non ce la facevo a svegliarmi, piena “sindrome del lunedì mattina”, segno che ormai mi sono ambientato fin troppo bene qui a Roma…) per richiuderlo alle sei e mezza di sera (un po’ in anticipo rispetto al solito, ma ero cotto), senza staccare gli occhi dal codice neppure per un attimo. Nonostante fosse lunedì, oggi il santo protettore dei programmatori doveva essere dalla mia parte. Qualunque riga di C++ scrivessi, anche apparentemente assurda, funzionava senza fare una piega. E quasi sempre produceva il risultato a cui avevo vagamente pensato quando avevo iniziato a scriverla.

Fatto sta che, raccogliendo le mie ultime forze, sono giusto riuscito a trascinarmi barcollante fino a casa. Senza neppure inciaparmi su qualche barbone o litigare con qualche elemosinante come mi succede ormai abbastanza frequentemente. Ma ora la voglia di parlare di cose serie (ad esempio, raccontare una volta per tutte su cos’è che sto lavorando all’ISTC, in maniera tale da potermi togliere il dente e raccontare giorno per giorno l’evoluzione del tutto) non c’è. Così parlo del faceto. Di questo film, “Pi Greco – Il teorema del delitto”, che ho finito di guardare ieri notte prima di addormentarmi.

Davvero bello. Le premesse non erano delle migliori. Pensavo di trovarmi di fronte al solito film-idiota che parla di un qualche scienziato autistico che, chiuso in un qualche scantinato, scopre il modo di salvare il mondo. Niente di tutto ciò. Chiaro, vi è sempre una visione un po’ romantica e stereotipata dello scienziato, che in questo caso è epilettico e pesantemente affetto da schizofrenia (sì, ricorda un po’ il Nash di “A Beautiful Mind”). Ma una volta tanto i riferimenti “pseudo-scientifici” sono solidi (commuovente un richiamo alla teoria della complessità, mentre il protagonista e il suo professore/confidente giocano a un gioco da tavolo cinese che non saprei meglio definire) e la psicologia del protagonista ricostruita in maniera convincente. Altro non saprei dirvi. Di regia, fotografia (qualcuno, per favore, mi spieghi una volta per tutte che cazzo è la fotografia in un film) e attori non ne so assolutamente niente. Ma il film mi è piaciuto.

E mi basta questo per consigliarvene la visione… :-)

Lottomatica Roma 86 – Armata Brancaleone Reggio Emilia 64

Che tristezza, gente…

Sfogliando un po’ distrattamente “L’Informazione” (per quanto si possa “sfogliare” un qualcosa che si sta leggendo in PDF), questa mattina ho scoperto che oggi la Bipop giocava proprio qui a Roma.

Così, mi sono informato un pochino su dove si trovasse il PalaLottomatica. Scoprendo che é raggiungibilissimo con la linea B della metro (c’è proprio la fermata “EUR Palasport”). Ma la sorpresa più bella della giornata non è stata quella. E’ stata l’aver visto i prezzi dei biglietti per assistere alla partita:

- Tribuna d’onore: 35 euro;
- Tribuna centrale: 15 euro;
- Tribuna laterale: 10 euro;
- Curva: 8 euro.

Ripensando ai prezzi del PalaBigi mi sono quasi commosso. Mi era persino venuta la tentazione di prendermi un posto in tribuna d’onore, ma poi sono riuscito a resistere, dirottandomi verso una meno vistosa tribuna centrale. Mi sono beccato pure il posto in prima fila. Ero praticamente in campo. Talmente vicino che, se mi fossi messo una canotta, un allenatore un po’ distratto prima o poi mi avrebbe detto di andare sul cubo dei cambi.

Tutto bello, insomma. Non fosse stato per la prestazione offerta dalla Bipop. Mamma mia, che disastro! Io non so da dove sbuchi fuori questo Pasquali, ma dio mio… rispeditelo immediatamente da dove è venuto!!! Mai vista una squadra così priva di gioco e di idee. Rispetto alla Bipop di Frates siamo lontani anni luce. Tutti i giocatori, dal primo all’ultimo, in attacco davano l’impressione di non avere la minima idea di cosa fare. Nessun blocco, tagli fatti con il contagocce. Sembrava davvero tutto lasciato alla fantasia di chi era in campo. Come quando giocavo da ragazzino e, non avendo schemi per giocare contro la difesa a zona, quando trovavamo una squadra che l’applicava l’allenatore chiamava la “5 fuori”: due in post-basso, due fuori area ed il play in posizione centrale. Nella speranza che qualcosa saltasse fuori. E’ piuttosto deprimente vedere una squadra di Serie A che gioca pressapoco allo stesso modo…

A voler essere ottimisti, potrei sperare si sia trattato soltanto di una serata storta. Ma l’impressione che ho è che questa Bipop sia una squadra senza capo nè coda. Manca un centro degno di tal nome (Ortner è stato forse l’unico positivo, ma è un giocatore leggerino; Infante lotta, ma non è uno in grado di risolvere una partita; Violette, mamma mia…) e Watson sembra tutto tranne che un playmaker, con l’aggravante che non la mette dentro neanche a sparargli. A questo ci aggiungiamo Boscagin, fuori fino a fine stagione, e Minard, alle prese con un infortunio alla caviglia. Ed ecco che la frittata reggiana è completa. Non si possono dare giudizi definitivi sulla base di una sola partita, ma io la vedo veramente grigia quest’anno. Speriamo soltanto che Livorno ed Avellino siano messe così male come dicono i giornali.

Va beh, consoliamoci con qualcuna delle foto scattate oggi.

Il PalaLottomatica
L’esterno del PalaLottomatica

Il Collettivo Biancorosso
Gli stoici tifosi biancorossi giunti a Roma pochi minuti prima dell’inizio del match

Carra, Infante & c...
Carra, Infante, Violette e Minard a colloquio prima della palla a due

Bodiroga
Sua Maestà Dejan Bodiroga, a fine partita, mentre firma autografi e batte il cinque ai tifosi in estasi (per la cronaca, pochi istanti dopo questa foto, il buon Dejan batterà il cinque pure al sottoscritto, fattosi rapidamente contagiare dalla festa romana)

Turista per caso

Varcata la ben poco invidiabile soglia delle 8’500 lune del programma MilleunaTIM (vi lascio immaginare quanto il sottoscritto stia spendendo di telefono nel corso degli ultimi mesi) mi sono finalmente deciso ad approfittare della cortesia di mamma Telecom, trasformando in qualcosa di materiale, concreto e tangibile, la mia manifesta fedeltà nei confronti del succitato carrier telefonico. Spulciando il catalogo, ho deciso di “farmi regalare” un bel Samsung SGH-Z510. In settimana mi sono informato un po’ per dove andarlo a ritirare, ho individuato un negozio, e oggi, di buona mattina, mi sono messo in viaggio con il preciso intento di scroccare un telefono alla TIM.

Soliti 20 minuti di camminata per raggiungere Castro Pretorio. Da qui metropolitana: linea B per Termini e, una volta arrivato, cambio con la linea A per Barberini. Sceso nell’omonima piazza, via per un altro chilometro a piedi lungo Via del Tritone alla disperata ricerca del centro TIM. Che alla fine ho trovato. Come mi accade con una puntualità ormai disarmante, ogni volta che mi fermo alla disperata in un bar per prendere un caffè e chiedere indicazioni, scopro che la mia destinazione è giusto dieci metri più avanti. Esattamente ciò che mi è successo pure questa volta.

Negozio fichissimo, con tanto di numero da prendere per farsi servire. Non ne avevo mai visti al di fuori delle panetterie. L’unica differenza è che qui non devi strapparlo da un volgare rullo di carta, ma c’è un computerino con annessa stampante che te lo stampa in diretta. Fatto sta che, preso il biglietto, ho aspettato pazientemente il mio turno. Per poi scoprire che, come da copione, il telefono che cercavo non l’avevano disponibile in magazzino.

Così, passata la relativamente breve fase di incazzatura, ho deciso di approfittare della situazione per fare il classico turista. Il bello di Roma è che, se non hai un cazzo di fare, in qualunque punto tu ti trovi puoi andare a vedere qualcosa di carino. Così, mi sono messo a cercare qualche turista che avesse bisogno di informazioni, giusto per riuscire a dare un’occhiata a scrocco ad una cartina della città. La ricerca è durata pochi secondi. Girando senza zaini, trolley, marsupi e valige, un sacco di gente si convince che sei romano e ti viene a chiedere informazioni. A volte diventa pure difficile convincere il malcapitato turista di turno che manco sai dove ti trovi e che neppure tu sai dove stai andando. Beh, fatto sta che senza neppure accorgermene ho scoperto di essere in pieno centro. Così mi sono mischiato ad una massa informe di crucchi, giapponesi e quant’altro offre il mercato globalizzato del turismo e mi sono passato una classica mattinata da turista. Classica, ma classica per davvero. Talmente classica da sfociare nel banale. Al punto che quasi mi vergogno a dire che sono andato a vedermi Trinità dei Monti, Piazza di Spagna e la Fontana di Trevi…

Fontana del Tritone
La “Fontana del Tritone”, del Bernini, in piazza Barberini

Trinità dei Monti e relativa scalinata verso piazza di Spagna
Trinità dei Monti (impacchettata) e la relativa scalinata che porta a Piazza di Spagna

Fontana di Trevi
La Fontana di Trevi

Il resto delle foto, come sempre, lo trovate nella PhotoGallery. Ma non aspettatevi un granchè. Metereologicamente è una giornata splendida oggi. Tanto per dare un’idea, sono in maniche corte e al sole si cuoce per davvero. Ma le foto, non so. Quelle di oggi non mi piacciono… :-/

Il codice nascosto

No, non l’ho letto questo libro. Ma è una cosa che sicuramente farò a brevissimo. Mi sono guardato un po’ la newsletter di NuoviMondiMedia arrivata stamattina. Era da un po’ che le mettevo da parte e non mi prendevo qualche minuto per spulciarle. E oggi ci ho trovato un sacco di cose interessanti. Primo su tutti questo libro, di tale Clotaire Rapaille, che dall’introduzione presente sul sito sembra davvero interessante. Talmente interessante che l’introduzione la copio pari pari qui dentro.

Buona lettura… :-)

Il codice nascosto

Perché acquistiamo auto lussuose? Perché scegliamo televisori al plasma? Perché frequentiamo i fast-food? Perché preferiamo i Presidenti di bell’aspetto? Cosa influenza e determina il nostro modo di agire, di comprare, di provare emozioni? Esiste un codice culturale che rende i nostri comportamenti specificatamente italiani, americani, tedeschi, giapponesi o francesi?

Clotaire Rapaille – guru del marketing internazionale, stimato e influente antropologo, presidente dell’autorevole Archetype Discoveries Worldwide – raccoglie nel suo volume il risultato di trent’anni di fondamentali ricerche e svela i meccanismi che, in maniera impercettibile ai diretti interessati, condizionano il comportamento quotidiano: un sottile sistema di archetipi – o “codici nascosti” – che inconsciamente acquisiamo mentre cresciamo immersi nella cultura a cui apparteniamo.

Il Codice Nascosto non si limita a farci comprendere la natura delle scelte alla base dei nostri consumi, bensì ci illumina sui processi evolutivi della vita familiare, dei rapporti sentimentali, delle modalità con cui scegliamo i nostri leader, degli approcci secondo cui ci rapportiamo con il resto del mondo.

Clotaire Rapaille ci suggerisce perché gli americani socializzano con disinvoltura ma non riescono a coltivare un’amicizia, perché i bambini tedeschi hanno bisogno di istruzioni per giocare con i ‘Lego’, perché gli italiani sono così bravi nel sedurre, perché George W. Bush al momento della sua elezione è stato considerato il presidente ideale per gli Usa e perché John Kerry lo sarebbe stato per la Francia.

Similarmente a Blink. In un batter di ciglia (Mondadori, 2005) e Il punto critico. I grandi effetti dei piccoli cambiamenti (Rizzoli, 2000) di Gladwell Malcolm, oppure a Intelligenza Emotiva (Rizzoli, 1999) di Daniel Goleman e a Freakonomics. Il calcolo dell’incalcolabile di Steven D. Levitt e Stephen J. Dubner (Sperling & Kupfer, 2005), Il Codice Nascosto propone al lettore un punto di vista rivoluzionario per capire perché “viviamo, compriamo, amiamo e perché lo facciamo in questo modo”.

Una prospettiva non convenzionale per capire e affrontare il mondo.

Clotaire Rapaille è il presidente di Archetype Discoveries Worldwide. È consulente pubblicitario per oltre 50 aziende. Le sue teorie sono state oggetto di intenso dibattito sui più noti media statunitensi, tra cui il ‘New York Times’ e la trasmissione ’60 minutes’. Rapaille vive a Tuxedo Park, New York.

Esperimenti di lingua inglese

Ok, io questo post lo pubblico. Ma voi, se possibile, evitate di spanciarvi dalle risate per i grossolani errori di lingua che sicuramente ci saranno, sparsi qua e là. Evitate di sorridere quando vi accorgete che il genitivo sassone (l’unico termine tecnico che mi ricordo dai tempi dell’inglese studiato a scuola) è probabilmente utilizzato in modo un po’ “allegro”. Insomma, non rompete.

Perchè questo incipit? Ma perchè ho appena finito di tradurre in inglese (o almeno ci ho provato) quel mini-tutorial sull’utilizzo del NNFW sotto Mac OS X che ho scritto ieri. E, vittima di una non meglio identificata forma di masochismo, ho deciso di non dare il mio lavoro in pasto soltanto ad un ben ristretto e selezionato clan di informatici nottambuli, ma persino di pubblicarlo qui sul blog. A vous…

Ispettore Perogatt

Using NNFW on Mac OS X 10.4 Tiger in 10 steps

Step 1 – From the NNFW’s home page, download the package containing the source files of version 0.5.0. Unpack the archive in a directory of your choice;

Step 2 – Go to: http://www.cmake.org/HTML/Index.html and download the CMake (Cross-platform Make) software. The package for Mac OS X can be found in the “Download” section (choose the “Darwin Universal – Tiger only installer” version). Once downloaded and unpacked, install the software using the installer tool included in the package;

Step 3 – From the Terminal, move to the directory where NNFW has been unpacked. Here, launch the command “ccmake .” (without quotes) to start the CMake’s semi-graphical interface;

Step 4 – Press the “c” key on the keyboard to check the pre-compiling configuration’s parameters (please consider that default parametrs should works correctly);

Step 5 – Press the “g” key on the keyboard to generate the Makefile and return to the Terminal;

Step 6 – Launch the command “make” to compile the library. A file named “libnnfw.a” will be created.

Step 7 – Launch the command “make install” to “install” the library. The .a file will be copied to “/usr/local/lib”. The various headers will be copied to “/usr/local/include/nnfw”;

Step 8 – The library is now installed. To use it with XCode, start creating a new XCode’s project and choosing the “C++ standard tool” template. According to the Xcode’s default setting, in the left section of the program’s windows should be present an area called “Group & Files”. Locate the “libnnfw.a” file through the Finder, select it then drag&drop it inside the “Source” subsection of “Group&Files”;

Step 9 – The library is now included in your project. Now, all we have to say to XCode is where he can find the NNFW’s headers files. Inside the “Group & Files” area, select the project’s target and right click them. From the contextual menu appeared, choose “Get Info”. Then, move to the “Build” tab and fill the “User Header Search Path” field with the string “/usr/local/include/nnfw” (withouth quotes);

Step 10 – Have fun! :-)

Qualcuno potrebbe spiegarmi…

… per quale motivo, Google Adsense, oggi pomeriggio, ha deciso che il mio blog (dunque il sottoscritto, unitamente a coloro che vagano per queste pagine lasciando di tanto in tanto qualche commento) fosse un covo di tossicodipendenti afflitti da depressione?

Questi gli annunci pubblicitari comparsi nella sidebar:

Annunci di Google Adsense

Basito…

NNFW 0.5.0 su Mac OS X 10.4

Ieri non ho avuto un attimo di tempo per scrivere sul blog. Ho lavorato veramente come un cane, ma sono finalmente riuscito a risolvere, una volta per tutte, i miei problemi col C++. Uddio, non voglio dire che d’ora in avanti non avrò più problemi con questo linguaggio, ci mancherebbe. Però sono riuscito a superare tutti gli scogli che mi stavano tediando da un paio di giorni a questa parte.

In poche parole, sono riuscito a compilare correttamente ed utilizzare anche sul mio fido Mac, in combinazione con il buon XCode, il Neural Network Framework. Per chi si fosse perso le puntate precedenti (anche se non sono sicurissimo di averne parlato), il Neural Network Framework è un set di classi C++, scritte da Gianluca Massera e dedicate alla creazione/gestione/quant’altro di reti neurali. Davvero un gran bel lavoro per quel che ho avuto modo di vedere fino a questo momento. Avrò comunque tempo per conoscerle meglio nei prossimi mesi, visto che il mio lavoro si poggerà completamente su di esse.

Logo del Neural Network Framework

Ma tornando a noi, il procedimento da seguire, per chi volesse emulare le mie gesta, è il seguente:

  1. scaricare dall’home page di http://www.nnfw.org il pacchetto contenente i sorgenti della versione 0.5.0, quindi scompattarlo in una directory a scelta;
  2. scaricare il software CMake (Cross-platform Make). L’home page del progetto è http://www.cmake.org/HTML/Index.html; il pacchetto da scaricare lo si può trovare nella sezione Download del sito (scegliere la versione “Darwin Universal – Tiger only installer“). Una volta scaricato il pacchetto, scompattarlo ed installarlo attraverso l’apposita utility;
  3. dal terminale, accedere alla cartella dove è stato scompattato il NNFW e lanciare il comando: “ccmake .” (senza virgolette) per avviare l’interfaccia semi-grafica di CMake;
  4. all’interno di questa interfaccia di CMake, premere il tasto “c” per accedere ai parametri di configurazione pre-compilazione (quelli di default dovrebbero comunque andare bene) e quindi il tasto “g” per generare il Makefile e tornare al terminale;
  5. lanciare il comando: “make” per compilare la libreria. Verrà creato un file denominato “libnnfw.a“;
  6. lanciare il comando: “make install” per “installare” la libreria. Il file .a verrà copiato dentro alla directory “/usr/local/lib“, mentre i vari headers saranno copiati in “/usr/local/include/nnfw“;
  7. a questo punto la libreria è installata. Per utilizzarla da XCode, creare innanzitutto un nuovo progetto di tipo “C++ standard tool“. All’interno dell’area “Groups & Files” (presente, di default, nella parte sinistra della vista “Workspace” di XCode), individuare il contenitore “Source” e trascinarvi al suo interno, selezionandolo dal Finder di Mac OS X, il file libnnfw.a generato in precedenza. Come riferimento è possibile utilizzare lo screenshot eseguito sul mio iBook, presente qui sotto (cliccando sull’immagine è possibile ingrandirla);

    Screenshot del mio XCode

  8. la libreria è stata inclusa nel progetto. Rimane soltanto da indicare ad XCode dove trovare i relativi headers. Per farlo, clic con il pulsante destro (e con questa frase i maccisti puri mi banneranno a vita…) sul target del progetto, selezionare “Get Info” e, nella scheda “Build“, compilare il campo “User Header Search Path” con “/usr/local/include/nnfw” (senza virgolette);

Tutto qua! Il NNFW è ora pienamente utilizzabile da XCode.

Sorvoliamo sul fatto che io ci abbia impiegato due giorni per elaborare il procedimento di cui sopra… :-p

Organismi che cercano cibo

Che sia il momento di svelare su cosa sto lavorando? ;-)

Forse sì. Se non altro, scrivere della mia tesi mi aiuterà a fare un po’ di chiarezza tra le migliaia di cose che mi stanno frullando tra la mente.

Siccome sono prolisso per natura, però, considerate questo post soltanto come un’introduzione. Una generica introduzione all’argomento per chi ancora non mi seguiva quando pubblicavo qua dentro i riassunti di “Mente. I nuovi modelli della vita artificiale”.

Vari studi svolti in passato hanno dimostrato ormai con chiarezza come organismi artificiali, modellizzati attraverso semplici reti neurali (ossia, senza alcuna regola di condotta codificata al loro interno), possano, con il passare delle generazioni, arrivare pian piano ad esibire comportamenti assolutamente “goal-oriented”.

Supponiamo, ad esempio, che all’interno di un’ambiente virtuale rappresentato da una matrice bidimensionale di dimensioni 10×10, venga inserito un organismo. Questo è modellizzato attraverso una semplice rete neurale di tipo feedforward a tre strati, simile a quella riportata nella figura qui sotto (solo un po’ meno complicata):

Esempio di rete neurale feedforward a tre strati complessivi

Le unità di input codificano le informazioni sensoriali dell’organismo. Si consideri, infatti, che ogni cella della matrice/mondo può essere vuota oppure caratterizzata dalla presenza di “cibo”. Dunque, quello che l’organismo è in grado di percepire del mondo che lo circonda è fondamentalmente la posizione dell’unità di cibo a lui più vicina.
Le unità di output codificano invece la risposta motoria dell’organismo. Ovvero, in quale direzione muoversi una volta elaborato lo stimolo sensoriale.

Gli organismi vengono creati con pesi delle connessioni sinaptiche del tutto casuali. Inizialmente, pertanto, il loro comportamento è del tutto casuale. Essi vagano nell’ambiente, catturando di tanto in tanto qualche unità di cibo. A questo punto entra però in gioco un algoritmo genetico che li fa evolvere, favorendo, attraverso un’apposita funzione di fitness, la riproduzione di coloro che, nel corso della loro vita, sono riusciti a catturare la maggior quantità di cibo. L’operatore di mutazione, che ad ogni processo riproduttivo varia casualmente il valore di qualcuno dei pesi sinaptici, fa il resto.

E’ così che, con generazione dopo generazione, arriva a diffondersi all’interno delle popolazioni un comportamento “goal-oriented”. Gli organismi vanno alla ricerca del cibo. E lo fanno in maniera sempre migliore, affinando la propria strategia con il passare delle generazioni.

Tutto ciò, senza che da nessuna parte sia codificato l’obiettivo di “cercare cibo”. E’ proprio questo il fascino della Artificial Life.

Non dire gatto finché non ce l’hai nel sacco

Mai dire che sia stata una brutta giornata, prima che questa sia finita. Arrivato a casa, dopo una ventina (mi sa pure abbondante) di minuti passati a scarpinare, con lo zaino sulle spalle e l’ipod nelle orecchie, ecco la sorpresa che ha risollevato di prepotenza il mio umore.

Oggi pomeriggio sono arrivati i signori Fastweb. E la mia casettina (ma posso chiamarla “mia casettina?) è ora una casettina a banda larga. Uddio, per il momento la banda larga, qui nella mia cameretta, è soltanto un miraggio. Nel senso che il buon Gianlu (alias, il mio coinquilino) è in piena sindrome eMule Adunanza e sta scaricando il mondo. Così, a me non rimangono che le briciole, più che sufficienti, tuttavia, per la normale navigazione. E d’altronde, ci mancherebbe soltanto che mi lamentassi. Primo perchè, in un modo o nell’altro, navigo a scrocco. Secondo perchè quella sindrome l’ho avuta anche io a mio tempo. Eccome se l’ho avuta…

Fatto sta che mentre preparavo la cena ho approfittato di un momento di stallo (leggi “mentre la pasta stava cuocendo”) per uploadare nella PhotoGallery le foto che ho scattato sinora.

Campanile della basilica di San Lorenzo

Uddio, non sono proprio tante, per essere una settimana che sono a Roma. Ma sicuramente lieviteranno con il passare dei weekend. Per il momento c’è qualche scatto dell’ostello, della mia nuova stanza e della basilica di San Lorenzo fuori le mura, che sono andato a visitarmi domenica pomeriggio. E dove, con mio sommo stupore, mi sono trovato di fronte alla tomba di De Gasperi. Ancora non ho ben capito perchè si trovi lì. Se qualcuno ha qualche informazione in merito ben venga…

Tomba di Alcide De Gasperi

Inizio a pensare che avrei dovuto fare il fotografo piuttosto che l’economista-informatico-appassionatodivitaartificiale…

Pagina successiva »