Informatica
Informatica
ALGEBRA BOOLEANA
2 valori à vero (T) e falso (F)
variabili à assumono solo i 2 valori possibili: vero o falso
operatori à
1) NOT (operatore unario) A NOT
- NOT T à F A
- NOT F à T F T
Tabella di verità à T F
AB A AND B
2) AND (operatori binari) FF F
FT F
Tabella di verità à TF F
“And” è Vero (T) solo se sono entrambi veri TT T
AB A OR B
3) OR (operatori binari)
FF F
Tabella di verità à FT T
“Or” è Falso (F) quando sono entrambi falsi TF T
TT T
Queste servono per controllare il flusso di un programma, per prendere decisioni nel programma:
Supponiamo di analizzare un triangolo x,y,z
SE (x==y)
ALLORA
- SE (x==z), ALLORA scrivi “equilatero”
- ALTRIMENTI scrivi “isoscele”
ALTRIMENTI SE (x==z)
- ALLORA scrivi “isoscele”
- ALTRIMENTI
o SE (y==z), ALLORA scrivi “isoscele”
o ALTRIMENTI scrivi “scaleno”
Esempio 2) AB NOT B A OR (NOT B)
FF T T
FT F F
TF T T
TT F T
AB A XOR B
4) XOR
FF F
Tabella di verità à FT T
XOR è F quando sono UGUALI TF T
XOR è V quando sono DIVERSE TT F
FFF F F F
FTF T F T
FFT F F F
FTT T T F
TFF T F T
TTF T F T
TFT T F T
TTT T T F
Un ALGORITMO è una sequenza finita e ordinata di istruzioni che descrive un procedimento per
risolvere un problema o eseguire un compito. Deve essere ben definito, non ambiguo e garantire un
risultato corretto in un tempo finito.
Es. di algoritmo in italiano
Problema: calcolo del massimo tra due valori A e B
Soluzione: Il massimo è il più grande tra A e B
Algoritmo:
- se A >B allora max = A; stop
- altrimenti max - B, stop
Logicamente per far sì che sia una macchina a risolvere il linguaggio utilizzato deve essere diverso
(nel nostro caso Python)
IF A>B print “A”, ELSE print “B”
I programmi sono PARAMETRICI à producono un output (soluzione) in funzione dell’input (dati
che gli stiamo fornendo)
Inoltre, non descrivono una singola soluzione, ma una soluzione che si può applicare a tutti i problemi
strutturalmente equivalenti (con i necessari adattamenti)
PADRI FONDATORI DELLA PROGRAMMAZIONE
- Alan Turing à macchina di Turing, era in grado di trovare una soluzione in un tempo finito a
qualsiasi problema che presentasse una soluzione. Non è stata realizzata da Turing stesso, ma egli
ha lasciato indicazioni attraverso cui è stata realizzata al MIT
- Corrado Böhm à Teorema di Böhm - Jacopini: qualsiasi algoritmo può essere implementato in
fase di programmazione attraverso l’utilizzo di 3 sequenze di controllo:
o sequenza,
o condizionale (if),
o iterativa (ciclo)
à le due trovate, prese nell’insieme, implicano la certezza di poter trovare una soluzione a un
qualsiasi problema avente soluzione à è questo che ha portato alla creazione delle tecnologie
moderne
LINGUAGGI DI PROGRAMMAZIONE:
La scrittura del programma avviene di solito in un linguaggio di programmazione "ad alto livello"
che viene poi tradotto nel "linguaggio macchina" (il linguaggio effettivamente "compreso" da un
calcolatore) attraverso opportuni strumenti chiamati compilatori o interpreti.
Ogni linguaggio di programmazione dispone di un insieme di istruzioni ed è caratterizzato da:
- una sintassi, cioè l'insieme delle regole che specificano come comporre istruzioni ben formate
- una semantica che specifica il significato di ogni istruzione ben formata
Non è importante come si scriva un codice, è importante cosa si stia scrivendo (pensa a Scratch –
programmazione con ‘blocchi’)
INFORMAZIONE
Va rappresentata all’interno di un dato. Per farlo partiamo da dati à trasformiamo tutto ciò che esiste
nel mondo reale in un programma capace di rappresentarli
Associando un significato ai dati (sennò insensati, es. 230, red, v2) otteniamo un’informazione à
conoscenza, saggezza
Un dato (dal latino datum che significa letteralmente “fatto”) è una descrizione elementare di una
cosa, di una transazione, di un avvenimento o di altro.
L'informazione è l'insieme di dati, correlati tra loro, con cui un'idea (o un fatto) prende forma ed è
comunicata. L’informazione associa un significato ai dati.
L'elaborazione dei dati può portare alla conoscenza di un’informazione.
Informazione e rappresentazione:
- Diverse rappresentazioni della stessa informazione à La stessa informazione può essere
rappresentata in modi diversi
- Diverse informazioni con la stessa rappresentazione à Una stessa rappresentazione può dare
informazioni diverse a seconda del contesto o del destinatario
Il dato non può essere portato o memorizzato o trasmesso; tuttavia, il supporto fisico NON è il dato
stesso: il dato richiede un supporto fisico ma non coincide con esso
Immagazzinamento e trasferimenti dei dati
Il dato è “portato da” o “trasmesso su” o “memorizzato in” o “contenuto in” qualcosa:
• Il supporto fisico NON è il dato stesso
• Il dato richiede un supporto fisico, ma non coincide con esso
Ogni supporto fisico ha le sue caratteristiche in quanto supporto per i dati
- Alcuni supporti sono particolarmente adatti alla trasmissione dei dati, ma non alla loro
memorizzazione (cavi, etere, ...)
- Per altri supporti vale il viceversa (CD, DVD, ...)
Dato e codifica
- Codifica
Permette di rappresentare un dato mediante un certo codice, per poter essere scritta su un supporto
fisico
- Decodifica
Permette di estrarre i dati da un messaggio codificato, letto da un supporto fisico
Il BIT
BIT (BInary digiT):
• elemento (binario) che codifica un dato corrispondente ai valori logici “Falso” o “Vero”
• può essere rappresentato da un dispositivo che assume due stati
Codifica binaria
Alfabeto
• 2 simboli: {0, 1}, {off, on}
Quanti oggetti posso codificare con k bit?
- 1 bit ? (0, 1) ? 2 oggetti
- 2 bit ? (00, 01, 10, 11) ? 4 oggetti
- 3 bit ? (000, 001, 010, ..., 111) ? 8 oggetti
- ...
- k bit (...) 2k oggetti
Quanti bit mi servono per codificare N oggetti? à N ≤ 2K K ≥ log2N K = ⌈log2 N⌉
N=10 ⌈log2 10⌉=⌈3.322⌉=4
La codifica binaria è un sistema per rappresentare informazioni (numeri, lettere, immagini, suoni,
ecc.) usando solo due simboli:
0 e 1, cioè bit (da binary digit).
È usata dai computer perché l’hardware elettronico può facilmente distinguere due stati:
acceso/spento, alto/basso, vero/falso.
NUMERI BINARI
Un numero binario è un numero scritto usando solo 0 e 1.
Ogni cifra (bit) rappresenta una potenza di 2.
Esempio:
Binario: 1 0 1 1
Potenze: 2³ 2² 2¹ 2⁰
Valore: 8 + 0 + 2 + 1 = 11 (decimale)
0 0 0 0
1 0 1 0
1 1 0 1
Sottrazione binaria:
Si può usare il complemento a 2:
A − B = A + (−B) (usando complemento a 2 per −B)
Il BYTE
BYTE: combinazione di 8 bit.
Può rappresentare un simbolo (lettera, cifra o simbolo tipografico) tra 2*2*...*2 = 28 = 256 diversi
Analogico vs. digitale
I segnali/dati possono avere
a) natura analogica: assumono un qualunque valore all’interno di un intervallo (non
necessariamente limitato)
b) natura digitale: possono assumere solo un numero finito di valori distinti all’interno di un
intervallo (finito)
à Molti segnali/dati sono “tendenzialmente” di tipo analogico (audio, video, immagini, etc.) ma è
più conveniente rappresentarli in forma digitale
Qualità della trasmissione: con il segnale digitale è più semplice rilevare errori
Prestazioni: trasmissione digitale consente di trasmettere una maggior quantità di dati all'interno della
stessa banda.
Canali di attacco
- Accesso diretto al computer
- Disponibilità fisica da parte dell’attaccante
- Inserimento inconsapevole (es: inserimento di una chiave USB che contiene virus)
- Accesso via rete
Servizi di sicurezza
- Confidenzialità o Riservatezza: rendere impossibile a terze parti comprendere dati e informazioni
scambiate tra un mittente e uno o più destinatari
- Integrità: proteggere dati e informazioni da modifiche del contenuto, accidentali oppure effettuate
maliziosamente.
- Disponibilità: garantire l'accesso ad un servizio o a delle risorse.
- Non ripudio: garantire che nessuno dei corrispondenti possa negare la transazione
- Autenticazione: assicurare l'identità di un utente
- Controllo degli accessi: impedire l’accesso ad una risorsa da parte di utenti non autorizzati
Tecniche di autenticazione à Si basano su uno di questi 3 fattori
1. Quello che si conosce (una frase, un numero, un fatto, etc)
2. Quello che si ha (una chiave, una scheda, etc.)
3. Quello che si è (caratteristica fisica)
Esempi
- Login e password. È il metodo più diffuso. Se queste non corrispondono a quelle conservate (in varie forme)
nel sistema, l’accesso viene negato.
- Carta magnetica o token: il riconoscimento viene effettuati inserendo la carta in un apposito lettore e digitando
una password oppure, nel caso del token, usando come password quella proposta dal token (OTP)
- Biometrie: si tratta di lettori di impronte digitali o vocali, analisi della retina, analisi della firma.
Autenticazione a n fattori
L’autenticazione a n fattori è una combinazione dei tre fattori base (o di diverse forme di 1 dei 3)
1. Quello che si conosce (password)
2. Quello che si ha (token)
3. Quello che si è (caratteristiche fisiche)
Più è alto n, tanto più è forte l’autenticazione (ma cresce la complessità di gestione…).
Esempio: login con codice utente e password + password per la singola operazione + OTP via SMS per la
conferma
Esempi per buona password:
1. Almeno 8 caratteri
2. Almeno:
a. Una lettera maiuscola
b. Una lettera minuscola
c. Una cifra
d. Un carattere tra ! # $ % ^ & * ( ) -_+ = { } [ ] : ; ‘ “ \ < , > . @
3. Non usare parole in nessuna lingua, dialetto, gergo
4. Non usare dati personali
5. Non usare prefissi o suffissi alle vecchie password
Usare dei “mnemonici”! Usare le lettere iniziali delle parole di una frase ed effettuare delle sostituzioni
CRITTOGRAFIA
La crittografia permette di mantenere e trasmettere, in modo sicuro, tutte quelle informazioni che
sono tutelate dal diritto alla privacy, ma anche quelle che, per qualunque motivo, sono ritenute
“riservate”.
La crittografia nasce MOLTO tempo prima dei computer ed è stata utilizzata, almeno in ambito
militare, fin dall’antichità.
Ci sono due casi in cui è necessario avvalersi della crittografia:
- quando l'informazione deve essere conservata sul posto e dunque “protetta” da accessi non
autorizzati
- quando l'informazione deve essere trasmessa, la cifratura è necessaria perché sono possibili
intercettazioni che pregiudicherebbero la confidenzialità ed integrità della comunicazione.
Crittografia nella comunicazione:
Alice e Bob vogliono comunicare “in sicurezza” significa che:
- Alice vuole che solo Bob sia in grado di capire un messaggio da lei spedito
(CONFIDENZIALITÀ), anche se essi comunicano su un mezzo “non sicuro” dove un intruso
(Trudy) può intercettare qualunque cosa trasmessa attraverso questo canale
- Bob vuole essere sicuro che il messaggio che riceve da Alice sia davvero spedito da lei
(AUTENTICAZIONE)
- Alice e Bob vogliono essere sicuri che i contenuti del messaggio di Alice non siano alterati nel
transito (INTEGRITÀ DEL MESSAGGIO)
Classificazione degli algoritmi
Esistono due classi principali di algoritmi che si basano sull’utilizzo di chiavi:
a) Crittografia Simmetrica (detta anche a chiave privata): mittente e destinatario usano la
stessa chiave per cifrare e decifrare un messaggio
b) Crittografia Asimmetrica (detta anche a chiave pubblica/privata): si usa una coppia di chiavi
(una è utilizzata per cifrare e l’altra per decifrare il dato ma i ruoli sono interscambiabili)
Sicurezza vs. Prestazioni
i. In genere, a parità di algoritmo, più le chiavi sono lunghe (in numero di bit), più è difficile cercare
di “attaccare” il sistema provando tutte le possibili chiavi
ii. In genere, più le chiavi sono lunghe e più gli algoritmi sono lenti (limiti prestazionali)
iii. Un attacco di tipo forza bruta prova tutte le combinazioni: per una lunghezza di n bit, le
combinazioni sono 2n
iv. Attualmente, lunghezze di 128 bit sono considerate abbastanza sicure
Crittografia a chiave simmetrica
Si usa una sola chiave detta segreta o privata, che serve sia per cifrare, sia per decifrare e deve essere
nota al mittente ed al destinatario. Il funzionamento di articola in 3 passi:
1. Il mittente cifra il messaggio con la chiave segreta
2. Il mittente trasmette il messaggio cifrato attraverso un canale (tipicamente insicuro nel senso
che può essere intercettato)
3. Il destinatario riceve il messaggio cifrato e lo decifra con la chiave segreta
Vantaggi e svantaggi
Vantaggi
- Velocità di esecuzione degli algoritmi crittografici (quindi si possono usare chiavi molto lunghe)
- L’integrità e la riservatezza sono legate al gruppo di persone che conoscono la chiave
Svantaggi:
- Scambio della chiave segreta: la comunicazione della chiave condivisa deve avvenire attraverso
un canale sicuro
- Per ogni coppia di interlocutori è necessaria una chiave diversa (quindi n(n-1) /2 chiavi per n
utenti)
- L’uso ripetuto della stessa chiave è poco sicuro
Crittografia asimmetrica (a chiave pubblica)
Ogni utente ha una coppia di chiavi, distinte ma legate tra loro: la chiave pubblica, kpub, divulgabile
a tutti e la chiave privata, kpri, conosciuta e custodita dal solo proprietario
Caratteristiche dell’algoritmo di cifratura:
- Non è possibile risalire alla chiave privata conoscendo la chiave pubblica.
- Un messaggio cifrato con la chiave pubblica Kpub è decifrabile solo con la corrispondente chiave
privata Kpri
- Viceversa, un messaggio cifrato con la chiave privata Kpri è decifrabile solo con la corrispondente
chiave pubblica Kpub
Crittografia simmetrica VS. asimmetrica
Simmetrica
o La stessa chiave è utilizzata sia per codificare che per decodificare.
o Gli algoritmi sono più veloci.
o La gestione delle chiavi è problematica.
o Non offre servizi di non ripudio
Asimmetrica
o La chiave usata per codificare è diversa dalla chiave usata per decodificare
o Gli algoritmi sono più lenti
o La gestione delle chiavi è più semplice (la chiave privata la tengo solo io, l’altra può
essere “pubblica” per definizione) —> n chiavi per n utenti
o Permette di avere servizi di non ripudio
Esempi di algoritmi a chiave pubblica (asimmetrici):
- RSA Proposta da Rivest, Shamir & Adleman nel 1977. Si basa sulla difficoltà presunta della fattorizzazione.
Standard de facto. Cocks aveva già proposto un sistema equivalente nel 1973, classificato.
- El Gamal (logaritmo discreto)
- Rabin (fattorizzazione)
LE FUNZIONI DI HASH
Algoritmi che, a partire da un blocco di dati, generano una sequenza di numeri (impronta o fingerprint
o digest) molto più corta del blocco stesso e che può essere considerata relativamente univoca, nel
senso che è estremamente difficile trovare un altro blocco di dati “sensato”, che generi la stessa
sequenza. Una funzione hash deve godere delle seguenti proprietà:
1. essere coerente: un blocco di dati uguale deve corrispondere uguale hash;
2. essere (o quanto meno apparire) casuale, per impedire l’interpretazione accidentale del blocco
dati originale;
3. essere (relativamente) univoca, ossia la probabilità che due blocchi di dati generino il medesimo
hash deve essere virtualmente nulla;
4. essere non invertibile: non deve essere possibile risalire al blocco di dati originale dalla sua
fingerprint;
5. infine, essere equiprobabile: ognuna delle possibili sequenze binarie che costituiscono l’hash deve
avere la stessa probabilità di essere generata delle altre.
Esempi di Algoritmi di hash
- la serie “Message Digest”: gli ormai obsoleti MD2 e MD4 e il più recente MD5; quest’ultimo in particolare
elabora il messaggio a blocchi di 512 bit per generare una fingerprint di 128 bit;
- il “Secure Hash Algorithm 1” (o SHA-1): derivato da MD4, elabora il messaggio a blocchi di 512 bit e genera
una fingerprint di 160 bit;
- il RIPEMD-160: elaborato da un gruppo di lavoro finanziato dall’UE (RIPE – Race Integrity Primitives
Evaluation), nasce come ideale sostituto di MD5 e SHA-1, rispetto ai quali promette maggiore sicurezza;
elabora il messaggio a blocchi di 256 bit e genera una fingerprintdi 160 bit.
Firma autografa
- Creata manualmente
- Verificata manualmente (metodo sicuro?)
- Non falsificabile (perizia calligrafica, metodo sicuro?)
- Non ripudiabile (perizia calligrafica, metodo sicuro?)
- Apposizione sul documento (non trasferibile)
Integrità, autenticità e non ripudio: Firma digitale
Le funzioni di hash consentono di ottenere un’“impronta digitale” del messaggio (message digest)
basata sul suo contenuto. Cambiando anche un solo bit del messaggio originale cambia il valore del
message digest. Il message digest è quindi crittografato con la chiave privata del mittente e aggiunto
al messaggio originale (in chiaro).
Per verificare che il messaggio ricevuto non è stato modificato durante la trasmissione e che il mittente
è effettivamente chi dice di essere, il destinatario compie le seguenti operazioni:
1. usando lo stesso algoritmo di hashing, calcola un message digest del documento ricevuto
2. usando la chiave pubblica del mittente (prelevata dalla CA), decodifica la firma digitale del
mittente per ottenere il message digest del documento originale
3. confronta i due message digest per verificare se coincidono: se i due message digest risultano
diversi significa che il messaggio è stato modificato oppure il mittente non è chi dice di essere
(ha firmato con una chiave privata diversa)
Combinazione di tecniche
• Firma digitale + crittografia à Per assicurare non ripudiabilità, non modificabilità e segretezza
dei messaggi
• Crittografia mista à L’uso della crittografia asimmetrica è poco pratico (lentezza degli algoritmi,
possibili attacchi di tipo “plain text”). Si usa la crittografia a chiave pubblica per scambiare in
modo sicuro chiavi simmetriche. Le chiavi simmetriche (chiavi di sessione) sono usate per cifrare
il flusso di dati (vengono cambiate per ogni messaggio)
Malware (Malicious software)
- Classificazione in base alla necessità di un programma ospite
o Parassiti: Virus, bombe logiche, backdoors
o Indipendenti: worm
- Classificazione in base alla capacità di autoreplicarsi
o Programmi attivati da un trigger: bombe logiche, backdoor
o Programmi che si autoreplicano: virus. worm
Virus, Worm e Trojan
Un virus informatico è un frammento di programma scritto per eseguire operazioni (in genere
dannose…) senza il consenso o la consapevolezza dell'utente. Un virus è definito da due criteri:
- Necessità di un programma ospite. Il virus inserisce il proprio codice nel file che contiene un altro
programma eseguibile.
- Capacità di autoreplica. Ad esempio, potrebbe inserirsi in altri file eseguibili presenti sullo stesso
sistema. I virus possono colpire allo stesso modo computer desktop, server di rete ma anche tablet
o smartphone!
I worm sono programmi che si replicano da sistema a sistema senza servirsi di un file ospite. Ciò li
distingue dai virus, che si diffondono tramite file ospiti infetti. Anche se dei worm possono trovarsi
all'interno di altri file, ad esempio in documenti Word o Excel, c'è una differenza tra il modo in cui i
worm e i virus utilizzano il file ospite.
Di solito il worm rilascia un documento che contiene già la macro-worm al suo interno. L'intero
documento che viaggia da computer a computer è dunque da considerarsi il worm.
Un Trojan (horse) è un codice malevolo, le cui funzionalità sono nascoste all'interno di un
programma apparentemente utile; quando viene eseguito, il Trojan provoca danni (perdita o furto di
dati). È l'utente stesso che installando ed eseguendo un certo programma (allegati email, applicazione
web), inconsapevolmente, installa ed esegue anche il codice trojan nascosto. Una distinzione molto
importante fra Trojan e virus è che i Trojan non si replicano automaticamente.
Phishing
Il phishing è un tipo di truffa via Internet attraverso la quale un aggressore cerca di ingannare la
vittima convincendola a fornire dati personali sensibili. Si tratta di una attività illegale che sfrutta
tecniche di ingegneria sociale: attraverso email, un malintenzionato cerca di ottenere dalle vittime
credenziali di accesso (password, numero di carta di credito, etc.) o altre informazioni. Spesso il
messaggio contiene un rimando ad una pagina web che imita perfettamente la pagina web ufficiale
(per es. di una banca) per convincere l’utente ad inserire le proprie credenziali
Spamming
Spamming è l'invio di messaggi indesiderati (generalmente commerciali o offensivi). Il canale più
diffuso è costituito da messaggi di posta elettronica. Il costo per chi invia è irrisorio anche per grandi
quantità di destinatari (anche milioni di invii al giorno) Gli spammers si procurano le liste di
destinatari soprattutto attraverso il setaccio di siti web per stringhe di testo che assomigliano a
indirizzi o database trafugati
INTELLIGENZA ARTIFICIALE
- “L'intelligenza artificiale è lo studio di complessi problemi di elaborazione delle informazioni che
spesso hanno le loro radici in alcuni aspetti dell'elaborazione delle informazioni biologiche.
L'obiettivo del soggetto è identificare problemi risolvibili e interessanti di elaborazione delle
informazioni e risolverli.” − David Marr
- La connessione intelligente tra la percezione e l’azione − Rodney Brooks
- Azioni indistinguibili da quelle di un umano − Alan Turing
Il Test di Turing à A. Turing, “Computing machinery and intelligence,” 1950 à La machine
possono pensare? → Possiamo distinguere se la conversazione avviene con un umano o una
macchina? La conversazione avviene tramite testo, sia in ingresso che in uscita. Un test per
distinguere, chiamato Imitation Game. Si pensava che nel 2000 una macchina avrebbe avuto un 30%
di possibilità di superare il test di una durata di 5 minuti
Le principali component di IA: rappresentazione della conoscenza, reasoning (ragionamento), natural
language processing (interpretazione del linguaggio naturale), learning (apprendimento).
MACHINE LEARNING
Tipi di Clusterings
Un clustering è un insieme di gruppi. Una distinzione importante è tra il clustering
hierarchical (gerarchico) e partitional (che crea una partizione)
- Partitional Clustering
Un oggetto dati di divisione in sottoinsiemi (cluster) non sovrapposti in modo tale che ciascun
oggetto di dati si trovi esattamente in un solo sottoinsieme
- Hierarchical clustering. Un insieme di cluster annidati organizzati come un albero gerarchico
Algoritmi di clustering:
i. K-means e le sue varianti
ii. Hierarchical clustering
iii. D ensity-based clustering (basato sulla densità)
IL DEEP LEARNING
Il neurone
L'unità computazionale di base del cervello è un neurone. I neuroni ricevono il segnale di ingresso
dai dendriti e producono il segnale di uscita lungo l'assone, che interagisce con i dendriti di altri
neuroni tramite pesi sinaptici
Il neurone raccoglie informazioni attraverso i dendriti; se l’informazione è abbastanza grande il
neurone emette segnale a sua volta.
Rete neurale
I neuroni sono collegati con circa 10^14 – 10^15 sinapsi à Pesi sinaptici: forza d'influenza
apprendibile e di controllo. Ci sono 86 miliardi di neuroni nel cervello. Questo modello ha ispirato
reti neurali nell'apprendimento automatico
Reti neurali biologiche: Piccioni esperti di arte (Watanabe et al. 1995)
Esperimento:
Piccioni in una Skinner box vedevano dipinti di due artisti diversi (e.g. Chagall / Van Gogh).
Ricompensati se “beccavano” in presenza di un artista specifico
Risultati dell’esperimento
- Errore in-sample del 5%cquando vedevano immagini su cui erano stati “addestrati”
- Errore out-sample del 15%; Nuovi, mai mostrati dipinti di Chagall / Van Gogh
I piccioni devono aver imparato qualcosa (non solo memorizzato!): estrazione e riconoscimento di
pattern (lo ‘stile’), capacità di generalizzare dal già visto per fare previsioni
Questa è l'idea alla base delle reti neurali (biologiche e artificiali)
Reti neurali Artificiali
Le Reti Neurali Artificiali sono un tipo di algoritmo di Machine Learning ispirato al
funzionamento del cervello umano. Sono composte da nodi (neuroni artificiali) organizzati in strati
(layers), che cooperano per apprendere pattern complessi dai dati.
Struttura di base: Una rete neurale è composta da tre tipi principali di strati:
a) Input Layer: riceve i dati in ingresso.
b) Hidden Layer(s): uno o più strati intermedi che elaborano i dati.
c) Output Layer: restituisce il risultato (es. una classe o un valore predetto).
Ogni nodo (neurone) all’interno degli strati:
- Riceve uno o più input (numeri),
- Li pesa tramite dei pesi (weights),
- Aggiunge un bias,
- Applica una funzione di attivazione,
- E produce un output che passa allo strato successivo.
Language Model
È un modello linguistico (statistico) è una distribuzione di probabilità su sequenze di parole. Stima la
probabilità relativa di frasi diverse.
Utilizzato in molte applicazioni NLP, in particolare nella generazione di testo: ad esempio
riconoscimento vocale, traduzione automatica, parte del discorso tagging, analisi, OCR,
riconoscimento della scrittura, recupero di informazioni...
Il modello linguistico, ad esempio, fornisce il contesto per distinguere parole e frasi che sembrano
foneticamente simili. Ad esempio, «AIR» e «HAIR», «MEET» e «MEAT» sono foneticamente simili
ma hanno significati diversi.
Large Language Model
GPT-3 è un modello linguistico di grandi dimensioni (alimentato dalla rete neurale), rilasciato da
OpenAI ([Link] nel giugno 2020.
Prevede la probabilità che esista una frase (nel suo set di training: Web, Wikipedia, Reddit, libri, …).
Ad esempio, un modello linguistico di grandi dimensioni può etichettare la frase "Ho parlato con
Luigi Laura di Algoritmi" come più probabile (in Internet) della frase “Ho parlato con un kiwi della
politica estera del Pakistan”.
Vero per le frasi ma anche per le sequenze di caratteri (ad esempio Python, SQL).
INTERNET e WWW
Internet è un’infrastruttura che, basandosi su protocolli (insieme di regole) di comunicazione, mette
in collegamento reti di computer dando loro la possibilità di scambiare dati.
WWW è un servizio / applicazione che si basa sulla infrastruttura di Internet e permette di
condividere, richiedere e visualizzare contenuti (ipertestuali, multimediali,...)
Internet è qualcosa di essenzialmente fisico (volendo, possiamo toccare i cavi che la compongono e i
computer che la gestiscono)
il Web è qualcosa di virtuale: un insieme di informazioni variamente codificate, i.e., oggetti virtuali
(ossia, non fisicamente esistenti) realizzato sfruttando la possibilità data da Internet di collegare
sistemi tra loro.
Tra Internet ed il WWW esiste più o meno la stessa differenza che c'è tra la rete stradale di una città
e la rete di trasporto pubblico
Reti di calcolatori vs Sistemi distribuiti
- Rete di calcolatori: insieme di calcolatori autonomi tra loro collegati mediante una rete di
comunicazione; gli utenti in genere sanno se le risorse che stanno utilizzando sono locali o
remote; i calcolatori connessi alla rete mantengono un certo grado di indipendenza: in caso di
guasto o indisponibilità della rete ogni calcolatore continua a mantenere gran parte delle sue
funzionalità.
- Sistemi distribuiti: gli utenti non hanno visibilità sull’architettura del sistema; il sistema si
presenta come un sistema omogeneo, progettato per eseguire un’applicazione particolare
(e.g., Bancomat). In effetti, si dovrebbe parlare di applicazioni distribuite piuttosto che di sistemi
distribuiti.
Evoluzione dei sistemi informatici
Da organizzazione centralizzata ...
à tanti “terminali” collegati allo stesso calcolatore (in genere un mainframe, sistema di grandi
dimensioni e costo);
... a organizzazione distribuita ...
à tanti PC collegati tra di loro;
à a rete di collegamento tra i PC è il mezzo principale per condividere le informazioni e le
risorse
... attraverso operazioni di downsizing (= riduzione delle dimensioni) – crescita e diffusione delle reti
sono state assai disomogenee:
à in ogni sede o edificio dell’azienda si è dapprima realizzata una rete locale che servisse alle
proprie esigenze;
à poi si è rivelato utile/necessario collegare le diverse sedi mediante una rete su scala
geografica;
... e di internetworking (= collegamento di reti diverse) – evoluzione bottom-up della rete aziendale:
à integrazione delle diverse reti locali; interesse verso la connessione con le reti di altre
organizzazioni
Sistemi informativi e Sistemi informatici
- Sistema informativo è costituito dall'insieme delle informazioni utilizzate, prodotte e trasformate
da un'azienda durante l'esecuzione dei processi aziendali – dalle modalità in cui esse sono gestite
– dalle risorse sia umane sia tecnologiche coinvolte. Tutto questo partendo da dati di carattere
aziendale o anche esterni all’azienda.
- Sistema informatico indica la porzione di sistema informativo che fa uso di tecnologie
informatiche e automazione.
Tassonomia delle reti:
La tassonomia delle reti è la classificazione delle reti di computer in base a determinati criteri
come dimensione, estensione geografica, funzionalità e struttura.
La dimensione delle reti
- Reti locali (Local Area Network, LAN) – di limitata estensione – collegano dispositivi collocati
nello stesso edificio o in edifici adiacenti.
- Reti metropolitane (Metropolitan Area Network, MAN) – collegano dispositivi collocati nella
stessa area urbana.
- Reti geografiche (Wide Area Network, WAN) – collegano dispositivi diffusi in un’ampia area
geografica (nazione, continente, ...);
- “Reti di reti” (Internetwork), – collegano più reti differenti (a livello sia hardware sia software)
mediante opportuni elementi di interfaccia, che si possono estendere letteralmente ovunque
(e.g., Internet).
INTERCONNESSIONE DI RETI
L'interconnessione di reti si riferisce al processo di collegamento tra due o più reti di
computer per permettere la comunicazione e la condivisione di risorse (come file, stampanti,
internet, ecc.).
In pratica, è ciò che permette a diverse reti locali (LAN) o geografiche (WAN) di comunicare tra
loro, creando un sistema di reti interconnesse, cioè una "rete di reti" — proprio come Internet.
Servizi vs. velocità
- Bassissima velocità – telemetria, telecontrollo, teleallarmi;
- Bassa velocità – fonia, fax, POS (point of sale), transazioni remote (come prenotazione di tratte
aeree, ...);
- Media velocità – audio Hi-Fi, video a bassa risoluzione, fax a elevata risoluzione;
- Alta velocità – interconnessione di reti di calcolatori, trasferimento di file;
- Altissima velocità – distribuzione di segnali video, video on demand, TV ad alta definizione
(HDTV), videoconferenze, videoteche.
Una pagina web
• Una pagina web è un documento HTML, visualizzato in un browser
Client-server
Se vogliamo che la pagina sia visibile da qualsiasi parte, deve risiedere in un server
Terminologia
§ CLIENT: il client è il programma che richiede un servizio a un computer collegato in rete (locale
o Internet) Per estensione, CLIENT è anche il computer su cui gira il programma CLIENT
Esempio: un browser su un computer è un CLIENT. Anche il computer su cui gira il browser si dice CLIENT
Tutti questi protocolli (e tanti altri...) fanno parte della Internet Protocol Suite (nota anche come
TCP/IP Suite)
Terminologia
§ INTERNET SERVICE PROVIDER (ISP): è un fornitore di servizi Internet, che consente a privati
e imprese di collegarsi a Internet.
Esempio: I maggiori Internet Service Provider italiani sono nell'ordine: Telecom Italia, Vodafone Italia, NGI,
TeleTu, Infostrada, Tiscali, MC-Link, Fastweb, Brain Technology S.p.A. - Playnet, Aruba , Ciellegi . I più antichi,
ancora in attività, sono invece MC-link, Galactica (oggi Aconet), Agorà Telematica
ISP italiani: i cavi... à Attenzione: gli ISP italiani sono tanti, ma i cavi verso le abitazioni sono
solo di Telecom (e, per chi è raggiunto dalla fibra ottica, di Fastweb).
§ WEB HOSTING: è il servizio di ospitare (to host) un sito. Di solito a pagamento, gratuito entro
certi limiti. Il costo varia a seconda del sito: statico (solo storage), dinamico (anche cpu), con
database (altro server da amministrare e configurare).
ESEMPIO: i vari siti di blog vi offrono web hosting gratuito (con dominio di terzo livello - vedi dopo). Per i fornitori
a pagamento, provate a cercare con Google...
§ WEB HOUSING: consiste nella concessione in locazione ad un utente di uno spazio fisico,
generalmente all'interno di appositi armadi detti rack, dove inserire il server, di proprietà del
Cliente. Tipicamente i server vengono ospitati in webfarm o Data Center in cui si garantisce
un'attenta gestione degli aspetti hardware, software ed infrastrutturali.
Web Hosting può essere:
- DEDICATO: un solo sito su una macchina
- CONDIVISO: diversi siti sulla stessa macchina
- VIRTUALE (DEDICATO): un solo sito su una macchina virtuale
Esempi: .gov, .com, .biz, .edu, .name e quelli nazionali: .it, .uk, .us, .hk, .es ... Per un elenco completo e
aggiornato: [Link]
- DOMINI DI TERZO LIVELLO: la parte che precede il nome del dominio di secondo livello
§ OPEN SOURCE (termine inglese che significa sorgente aperto) indica un software i cui autori
(più precisamente i detentori dei diritti) ne permettono, anzi ne favoriscono il libero studio e
l'apporto di modifiche da parte di altri programmatori indipendenti. Questo è realizzato mediante
l'applicazione di apposite licenze d'uso.
§
Configurare la rete di casa
Ci sono tipicamente quattro voci da riempire (o che vengono riempite per voi se usate DHCP):
1. IP: indirizzo IP del computer, all’interno della rete di casa (locale)
2. SUBNET MASK: specifica quali indirizzi IP devono essere considerati nella rete locale.
Tipicamente assume il valore [Link], a significare che i computer nella rete locale sono
quelli che hanno indirizzi IP che differiscono da quello del vostro computer solo nell’ultimo
numero (per esempio, se il vostro computer ha IP [Link] gli indirizzi di IP nella rete
interna sono tutti quelli che iniziano con 192.168.16).
Il valore [Link] significa che i computer nella rete interna sono quelli che hanno un IP
identico a quello del vostro computer relativamente ai primi due numeri (nell’esempio di prima,
tutti gli IP che iniziano con 192.168).
3. GATEWAY (o PROXY): è il computer (o, tipicamente, il vostro modem-router), che ha un
indirizzo IP interno alla rete locale, attraverso il quale il vostro computer si collega a internet.
Quindi, tutti i collegamenti verso gli indirizzi IP che non sono nella vostra rete locale passeranno
per il gateway.
DNS SERVER: qui si specifica l’indirizzo IP di uno o più server DNS. Potete aggiungere alla lista,
fornita dal vostro ISP, i server di Google, liberamente accessibili: [Link] e [Link]
VPN (Virtual Private Network)
- Il server VPN è un server che consente di accedere alle risorse interne della rete da fuori.
- Viene spesso usato per "mascherare" la propria posizione nella rete, ad esempio se con il mio
portatile mi trovo negli USA ma mi collego a un server VPN in Italia, quando navigo risulterò in
Italia.
- Come il modem/router, il server VPN ha due interfacce di rete in quanto ha due diversi indirizzi
IP, uno per la rete interna e uno per la rete esterna.
Terminologia
1: relazione simmetrica: Grafo NON orientato
2: relazione NON simmetrica: Grafo orientato
n=numero di vertici
m=numero di archi
I vertici L ed H sono ADIACENTI
L’arco (L,H) è INCIDENTE a L
Grado di un nodo è il numero di archi incidenti
Esempi:
Grafo NON orientato: Facebook - i nodi sono le persone e gli archi sono le amicizie
Grafo orientato: il Grafo del Web (Webgraph) - i nodi sono le pagine Web e gli archi sono i link (diretti) tra le
pagine [torneremo a parlare del Webgraph quando parleremo di come funzionano i motori di ricerca...]
Ricerca su Web
Un motore di ricerca (Google, Bing, etc.) si può dividere in tre parti concettualmente distinte:
1. Crawler: la parte che si occupa di “scaricare” in locale le pagine, che poi saranno processate
dall’…
2. Indexer, che crea un indice dei documenti, che viene usato dal…
3. Query processor, che riceve la query utente e restituisce i risultati ordinati
PageRank
L’algoritmo PageRank è il cuore del motore di ricerca Google.
PageRank serve a ordinare i risultati: se cerco la parola “Luiss” trovo circa un milione e mezzo di
pagine che la contengono!! Come ordinare i risultati? Usando PageRank!
L’idea alla base di PageRank è la seguente: “Un sito web autorevole è quello che è puntato da siti
web autorevoli”.
PageRank, per calcolare i valori delle pagine, guarda solo la struttura di grafo delle pagine à Web
(WebGraph): ogni pagina è un nodo, ogni link tra le pagine è un arco diretto.
Calcolo di PageRank
Inizialmente ogni pagina ha un valore di PageRank, detto il “peso” della pagina, wi pari a 1.
Si ripete la seguente procedura (finché i valori convergono, ovvero non cambiano più tra una
iterazione e l’altra):
- Ogni pagina divide il suo peso tra le pagine che punta
- “Normalizzazione”: divido tutti i pesi per il peso massimo tra tutte le pagine
MONETE DIGITALI
Bitcoin in (super) sintesi
Bitcoin può essere definita come una cripto-moneta open source
- Non esiste un’autorità centrale.
- Non dipende dalla fiducia in una particolare “istituzione”
Equivalente al contante (non è una carta di credito!) ma “circolante” su Internet. Non è la prima
moneta digitale! (Fin dal 1982 erano state poste (da Chaum) le basi per il cash digitale). Creata
da Satoshi Nakamoto (Tuttora non si sa chi ci sia dietro questo nome finto). Basata su una rete
peer-to-peer di computer che eseguono il software bitcoin
- Le transazioni sono verificate tramite un proof-of-work (la risoluzione di un problema) da
sistemi che eseguono un software di mining.
Si stima che nel mondo, in questo momento, il Mining dei Bitcoin consumi più corrente elettrica di
Argentina, Emirati Arabi e Olanda insieme!!!
Cosa rende bitcoin diversa?
Bitcoin è decentralizzata, distribuita, basata sul principio del volunteer computing
Le transazioni sono pubbliche ma non facilmente riconducibili alla reale identità dei partecipanti al
network
I partecipanti al network “confermano” le transazioni e mantengono un “libro mastro” delle
transazioni in quella che viene chiamata block chain. Un trasferimento di bitcoins non implica un
“movimento” ma l’aggiunta e l’accettazione di una nuova transazione alla block chain
È molto difficile creare un nuovo blocco valido ma è molto facile per ogni partecipante controllare la
validità di un nuovo blocco (hash chain). L’algoritmo distribuito garantisce che la creazione di nuovi
bitcoin permetterà di raggiungere il limite asintotico di 21 milioni di unità (bitcoins).
Cosa è un blocco (Block)? Un insieme di transazioni. Contiene informazioni sul blocco
precedente. Tutti i blocchi sono collegati in una catena, da cui il nome BlockChain
Come funziona bitcoin
L’algoritmo distribuito controlla quanta potenza di calcolo è necessaria per validare un blocco in
modo che la creazione di un nuovo blocco richieda (in media) circa 10 minuti. I partecipanti
guadagnano un premio in bitcoin quando riescono a validare un blocco. L’ammontare del premio
diminuisce con il tempo
- Il premio originale era 50 Bitcoin ed è stato dimezzato a 25 nel Novembre 2012 quando è
stato validato il blocco 210000
- Tende ad azzerarsi man-mano che ci si avvicina ai 21 milioni di bitcoins circolanti
Bitcoin pro
- Nessun pericolo di inflazione tradizionale
- Praticamente zero costi di transazione
- Potenzialmente molto difficile da tracciare
- Se si memorizza la password di protezione della chiave privata, l’unico modo di “rubare”
bitcoin è torturare chi conosce la password…
- Facile da usare
Bitcoin contro
- Bitcoin è ancora piuttosto nuova come moneta ed il suo uso è ancora limitato
- È una moneta per Internet, Senza accesso ad Internet non si possono spendere bitcoins
- Se si perde la propria chiave privata si perdono i propri bitcoins!!!
- Nessun meccanismo (noto) per cancellare transazioni!