Newsgroup: it.comp.ia
Titolo: Ancora sulle CNN

Quello che segue è uno stralcio della missiva che ho scritto a Ciberneta in
privato, trattando argomenti interessanti (per tutti coloro che mi chiedono
delle CNN) ho postato anche qui:
...
Non ho detto quali sono le differenze tra le NN e le CNN! E questo ha tratto
in inganno sia te che qualche altra persona che mi ha scritto di recente.
Sperando di essere chiaro nella mia spiegazione (in caso chiedimi
tranquillamente maggiori lumi):
una NN come credo tu sappia è un'insieme di neuroni, tale insieme è formato
mettendo insieme quelli che vengono chiamati strati, ottenendo le
configurazioni conosciute come 5-5-5 ecc..., ossia 5 neuroni dello strato
d'ingresso, 5 dello strato nascosto e 5 in quello d'uscita. Questo porta
nell'implementazione classica ad avere che le uscite del primo strato
diventano l'ingresso del secondo e così via, in una forma x così dire
piramidale.
Le CNN sono invece insieme di celle (le chiamo così per distinguerle)
spazialmente distribuite in versione lineare, planare o spaziale.
L'influenza sia come ingressi che come uscite avviene "solo" tra celle
circostanti, in pratica chiamiamo contorno (neighborhood) il raggio che ci
indica quali celle sono influenti e influenzate.
Ad es. con tale raggio = 1,
la cella (i,j) ha come ingressi:
            y(i,j) , y(i-1, j) , y(i+1, j) , y(i-1,j-1) , y(i, j-1) ,
y(i+1,j-1) , y(i-1,j+1) , y(i,j+1) , y(i+1,j+1) e ancora
            u(i,j) , u(i-1, j) , u(i+1, j) , u(i-1,j-1) , u(i, j-1) ,
u(i+1,j-1) , u(i-1,j+1) , u(i,j+1) , u(i+1,j+1)
dove con y(..) indico l'uscita della cella e con u(..) l'ingresso della
cella. Ognuno di tale ingresso alla cella (i,j) è opportunamente pesato da
quella che è detta template.
Quindi ogni cella dipende oltre che dal suo ingresso, dagli ingressi
circostanti, dalle uscite delle celle circostanti e dal suo stato.
Ora la distinzione maggiore sta proprio nei pesi, nelle NN essi variano con
l'algoritmo d'apprendimento, qui invece i pesi (template) sono costanti,
altrimenti sarebbe improponibile la mia dichiarazione di implementazione
fisica in termini di un semplice circuito.
Nelle mie celle 5x5x5 cm di cui ti avevo scritto, fisso le template essendo
realizzati con dei trimmer.
Differenze tra celle e neuroni, nella cella singola abbiamo uno stato x che
dipende dal suo stato trascorso e dagli ingressi citati sopra e in aggiunta
da un bias (o offset). Dallo stato viene poi ricavata l'uscita con una
funzione non lineare:
y=f(x)=1/2(|x+1|-|x-1|)
So che a prima vista qualcuno potrebbe dire: ma allora la CNN esegue
funzioni matematiche e basta, non apprende, ecc. A che servono?
Qui urge una risposta prima di creare fraeintendimenti, le CNN (quelle
hardware funzionano meglio di quelle software) sono nate nell'1988 e la
prima cosa che esse sapevano fare era l'image processing, quella era
un'applicazione diciamo "stupida". Ossia come molti programmi di fotoritocco
già facevano e fanno, però si faceva in hardware, quindi ottimo per un
sistema di visione di un robot.
La cosa sorprendente (e credo unica nel suo genere) è che in dodici anni le
applicazioni sono divenute moltissime, si va dalla simulazione di fenomeni
fisici come i pattern, le autoonde, generazione di dinamiche caotiche (nella
trasmissione dati e non solo), signal processing e qualc'altra cosa che al
momento non mi sovviene ;-). Questi sono i titoli ma ognuna di
esse ha sotto applicazioni.
In particolare l'autoonda (di cui per maggiore chiarezza spero in qualche
giorno di pubblicare una pagina sul sito) sopperiscono alla mancanza nel
modello delle reti neurali dell'impulso sinaptico e dell'impulso nervoso. In
parole povere un'autoonde è in tutto e per tutto (si sono convinti anche i
biologi) simile all'impulso nervoso. Qui a Catania, abbiamo usato tale
impulso per far camminare un robot-scarafaggio e per far muovere un
robot-pesce, affidando il CPG a degli interruttori per il momento.
L'uscita del neurone (della NN) è costante, mentre sappiamo che il neurone
genera un impulso con una certa durata temporale e una propria forma d'onda.
In futuro credo che qualcuno costruira il CPG (Central Pattern Generator)
con una NN e la base di locomozione con un anello di CNN.
Colgo l'occasione di ringraziare tutti coloro che mi scrivono sia in email
che qui sul ng.
Grazie mille.
--
Adriano Basile
e-mail: 
adrian...@hotmail.com
web page: 
http://digilander.iol.it/adrianobasile/

Ho appena caricato la pagina sulle autoonde.
Scusate il disturbo.


Scusate il disturbo.
'azz, disturbo!!!
Byez
P.S. Non e' che ci abbia capito granche', ma apprezzo... :)
un DeK che se disturbassero tutti quanti cosi'...
--
DeK - Delirio & Kaos
FAN n.1 del CrossPost e dell' OT :)
Visita One Big Mob - 
http://dek.hey.to

P.S. Non e' che ci abbia capito granche', ma apprezzo... :)
Scusa Dek,
 credo che l'incomprensione sia dovuta al fatto che mi sto scrivendo in
privato con Ciberneta, ma ho estratto una parte di una lettera per tutti
coloro che mi avevano scritto in email. E a cui avevo risposto in modo forse
lacunoso.
Se vuoi saperne di + sulle CNN visita il mio sito o chiedimi. Sarò
disponibile alle tue domande. Come ho già scritto:
"Non è pubblicità, non vendo nulla, non voglio riconoscimenti.
Voglio solo presentare qualcosa di diverso dalle NN classiche ed
eventualmente confrontarmi con qualcuno che conosce o vuol conoscere le
CNN."
Ciao.


coloro che mi avevano scritto in email. 
No. L'incomprensione e' dovuta al fatto che gia' di NN non ci capisco
niente, figuriamoci di CNN...
Byez
un DeK che con molta umilte' frequenta' un ng straordinerio...


Byez
[cut sign]
Ciao Dek,
se mi posso permettere di darti un consiglio: prova ad implementare una NN
e vedrai che tutto ti sarà + chiaro. Ovviamente sono fondamentali i vari
testi che in parecchi post sono consigliati sulla teoria che sta alla base
dell'IA, se poi ci aggiungi il toccare con mano una NN anche 2-2-1 per lo
XOR vedrai forse il tutto sotto un'altro punto di vista. Per implementare un
rete puoi usare anche il Matlab  se non vuoi mettere mani ad un linguaggio
di programmazione.
Dopo aver letto i primi articoli sulle NN, fuzzy logic, algoritmi genetici
mi sembrava tutto campato in aria (come S. Tommaso: non vedo -> non credo)
ho poi messo su una NN in Pascal e via funzionava tutto come riportato e
quindi sono andato avanti provando con cose diverse.
Sono arrivato alle CNN ed anche lì ho voluto verificare, ricordo la mia
prima cella di CNN in Matlab, lentissima. Eppure sono arrivato a costruire
un sim. di CNN più veloce, versatile e a ricevere i lunsinghieri complimenti
del grande
Alessandro Monti. :-)
Ciao e alla prossima.


 Alessandro Monti. :-)
Noto con piacere che hai messo lo smile.
In effetti, sono felice di averti dato un buon incoraggiamento, ma devo
anche dire che la mia opinione non è che conti poi molto...
Intendo dire: non ti inviterà nessuno al Maurizio Costanzo Show perchè il
"grande Alessandro Monti" ha detto che il tuo programma è realizzato molto
bene! :-))))
Semmai è più facile che ti invitino *indipendentemente* dal mio parere.
Ciao, e in bocca al lupo.
--
Alessandro Monti

e vedrai che tutto ti sarà + chiaro.
Ovviamente, appena mi sara' possibile, e appena quel dannato DJGPP
comincera' a degnarsi di produrre qualche eseguibile, e appena avro'
tempo (ua', come sembra tragica...) mi dedichero' ad approfondire
l'argomento seriamente.
Byez
un DeK rilocabile


Alessandro Monti ha scritto nel messaggio ...

Ciao Alessandro,
la mia affermazione non voleva essere assolutamente una presa in giro. E'
anzi verissimo che i tuoi complimenti sono stati lusinghieri per me, e il
tuo consiglio sulla realizzazione degli script è stata accolta con grande
favore anche dal prof, va beh se devo dirla con più precisione la
discussione è andata + o meno così:
Io: "Ing. ho finalmente messo sul sito Marge e un po' di materiale, ho avuto
parecchi riscontri ed una proposta interessante da un collega di Milano di
creare degli script da caricare e salvare ... che ne pensa?"
Lui: "Bella idea, a dire il vero ci avevo già pensato io da parecchio tempo
ma non te l'ho chiesto perché ti so impegnato nella realizzazione 3d! ..."
Sinceramente non credo che ci avesse già pensato, ma il capo ha sempre
ragione! :-)
Inoltre ho visitato il tuo sito, e mi sono reso conto che non sono l'unico a
fare un buon lavoro, ecco xché "grande"! Magari potresti farci sapere
qualcosa in +.
Ciao alla prossima.
P.S. Ho riletto la lettera che ti ho spedito in privato, e ti chiedo
pubblicamente scusa per il mio tono arrogante. Anzi visto che so che hai
scaricato
Marge per farmi xdonare ti svelo che c'è la mia foto all'interno del sim. Lo
messa dopo che ho scoperto il flipper all'interno di Word 97. Per farla
apparire si deve caricare come immagine 1: name.bmp e poi all'interno della
finestra autori (Informazioni->Autori) cliccare sull'icona di Marge. ;-)
Inoltre nella sign di quella lettera è partito anche il mio nick, incidenti
di pecorso. ;-)


 Marge per farmi xdonare ti svelo che c'è la mia foto all'interno del sim.
Lo
Bellissimo!
Anche io volevo mettere un easter egg, ma finora non ce l'ho fatta. mi sono
accontentato di mettere un joke attivabile da menù.
Tra l'altro, sai che anche Word, e persino Internet Explorer hanno i loro
bei mini-programmini?
Ciao
--
Alessandro Monti

Alessandro Monti
Per esempio?
F.

 Per esempio?
Erano tutti su Focus del mese scorso, mi pare. Se passi in una biblioteca
cittadina...
Altrimenti vai sulla mia home page:
http://digilander.iol.it/nonlibero/
e cerca tra le cazzate quella dal titolo pressapoco "l'anticristo č tra
noi?".
Lě mancano quelle di Explorer, ma non me le ricordo. Ha qualcosa a che fare
con l'impostazione della lingua, ma di piů non ricordo.
Ciao
--
Alessandro Monti

Alessandro Monti ha scritto nel messaggio ...

Grazie.
La home page é molto interessante, soprattutto la tesi: sto guardando la
bibliografia.
Non ho capito bene chi finanzia il progetto (il CILEA?); non che abbia
importanza, é solo curiositá.
F.

 importanza, é solo curiositá.
Nessuno :-)
Non mi ricordavo di aver messo anche l'account del policlinico, ma comunque
non c'entra niente nè con al tesi nè con me. Ho lavorato per qualche tempo
per il policlinico di Milano, e mi hanno aperto un account di posta. A loro
volta, sono collegati ad internet tramite il Cilea, e questo spiega
l'indirizzo.
Ora potrebbero togliermi l'account, ma sapendo come viene gestito il server
Internet, penso di poterlo considerare permanente...
--
Alessandro Monti

Alessandro Monti ha scritto nel messaggio ...
[cut]
Scusa ma è un xiodo che becco gente stramba e quindi ho paura di essere
frainteso.
Conoscevo le egg di Word ma non di IE mi informerò.
Aspetto con impazienza di scaricare il tuo prg. ora sto provando a scaricare
il Stuttgart Neural Network Simulator che qualcuno qui sul ng ha
consigliato.
Chi l'ha provato?
Ciao e alla prossima, vedo che non hai detto nulla del mio nick: grazie!


Pape' Satan, pape' Satan aleppe, comincio' Adriano con voce chioccia:
AB> dell'IA, se poi ci aggiungi il toccare con mano una NN anche 2-2-1 per lo
AB> XOR vedrai forse il tutto sotto un'altro punto di vista. Per implementare un
AB> rete puoi usare anche il Matlab  se non vuoi mettere mani ad un linguaggio
AB> di programmazione.
a proposito di implementazioni di NN...
Se avete una macchina unix a disposizione (linux va benissimo) e
volete smanettare sulle NN, vi consiglio caldamente il programma 
SNNS (stuttgart neural network simulator). Permette di costruire,
addestrare, analizzare un sacco di tipi di NN, secondo me e' davvero
molto completo. E quando avete addestrato la rete dei vostri sogni
potete convertirla in C, pronta per essere inclusa nei vostri programmi
preferiti. Comodissimo :)
Potete trovarlo in ftp su 
ftp.informatik.uni-stuttgart.de/pub/SNNS
,
scaricate la versione 4.2 e il manuale. C'e' anche un sito web, ma
non ho l'URL sotto mano...
PS: se non riuscite a compilarlo sotto linux, aggiungete all'inizio
del file tools/sources/symtab.c la riga  #define MAXFLOAT FLT_MAX)
PS2: la 4.2 ha dei problemi a caricare i file di configurazione degli
esempi che si trovano nella dir examples, se volete provarli usate la
4.1
-- 
ciao,
Claudio

Chi l'ha provato?
Io in effetti l'ho indicato, ma solo per chiedere se qualcuno
l'avesse provato.
L'ho scaricato e ho visto girare qualche esempio, ma il tempo é
poco e io sono ignorante, almeno di NN.
F.

Claudio
Grazie per i consigli.
Mi pare che della 4.1 esista anche una versione per windows.
Occorre comunque un server X, ma qualcosa in rete si trova.
F.

...
[cut]
Ottimi consigli su SNNS. Ma vuoi mettere il bello di farsi una NN in casa
anche se stupidissima credo dia molte + soddisfazioni, non credi?


poco e io sono ignorante, almeno di NN.
A scusa non ricordavo chi era stato, lo sto provando ma anch'io ho poco
tempo.
