Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni21 pagine

Informatica

L'informatica è l'elaborazione automatica dell'informazione, con approcci simbolico/sintattico e semantico. Le radici dell'informatica risalgono a logica, filosofia e ingegneria, con evoluzioni significative come la macchina di Turing e l'architettura di Von Neumann. Il pensiero computazionale è fondamentale per la programmazione e la risoluzione di problemi complessi, e si basa su scomposizione, riconoscimento di pattern, astrazione e algoritmi.

Caricato da

Federica Gianni
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni21 pagine

Informatica

L'informatica è l'elaborazione automatica dell'informazione, con approcci simbolico/sintattico e semantico. Le radici dell'informatica risalgono a logica, filosofia e ingegneria, con evoluzioni significative come la macchina di Turing e l'architettura di Von Neumann. Il pensiero computazionale è fondamentale per la programmazione e la risoluzione di problemi complessi, e si basa su scomposizione, riconoscimento di pattern, astrazione e algoritmi.

Caricato da

Federica Gianni
Copyright
© All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato DOCX, PDF, TXT o leggi online su Scribd

Informatica

Definizione Informatica
Informatica: Neologismo coniato da Dreyfus. Informazione +
automatica: è l’elaborazione automatica dell’informazione. L’informatica
riguarda il computer come l’astronomia riguarda il telescopio: è solo un
mezzo (Dijkstra).

L’informazione non ha una definizione univoca (Shannon); infatti ci sono


due approcci:

1. Simbolico/sintattico: Si occupa di come i simboli possono essere


manipolati e utilizzati, senza prendere in considerazione il contenuto e il
significato dei suddetti, ma solo la forma. Come la teoria dell’informazione
di Shannon: Entropia = misura la quantità di incertezza di una variabile;
più l’informazione è incerta, più è incerta più è informativa (se qualcosa è
prevedibile ti dà poca informazione nuova e viceversa). Concetto
quantitativo.

2. Semantico: Significato e veridicità dei simboli, aspetti qualitativi,


indagine critica. Come Floridi che ricerca la natura dell’informazione.

Elaborazione dell’informazione, o calcolo: Serie di azioni che consente di


manipolare una serie di simboli. Il calcolo nasce prima della matematica.
Origine del calcolo nella scrittura, invenzione di un sistema numerico
collegato all’invenzione della scrittura nelle prime popolazioni. Scrittura
cuneiforme deriva da un sistema di conteggio.

Sistema di notazione additiva: Un simbolo per ogni unità (romani,


egizi).

Sistema di notazione posizionale: Valore del simbolo in base alla sua


posizione (sistema decimale).

Radici informatica precedenti al computer:

1. Radici logiche: Filosofia, logica, matematica.

2. Radici ingegneristiche: Fisica, meccanica.

Progettazione di una macchina sostitutiva di ENIAC (EDVAC), si crearono


due gruppi: gli ingegneri e i logici.

Evoluzione logica dell’informatica


Leibnitz: Inventa calcolo infinitesimale. Voleva creare un linguaggio che,
tramite calcoli e simboli, stabilisse quali enunciati fossero veri e quali no.
Se ogni pensiero è rappresentabile aritmeticamente come simbolo, la
correttezza o meno di esso può essere calcolata.
Caratteristica: Sistema di simboli.

Calculus ratiocinatur: Regole per manipolare i simboli.

Boole: Logica booleana: Sillogismi di Aristotele, ogni enunciato può


essere codificato tramite simboli: y, x. Attribuendoci un valore numerico
binario (0, 1) se ne può calcolare la veridicità (es. Equazione è vera solo
se risultato è 0 o 1). Bisogna stabilire i parametri a priori.

Radici ingegneristiche:
Pascalina di Pascal, sottrazione e addizione (1642).

Telaio Jaquard: Produceva tessuti con disegni specifici.

Macchina analitica: Progettata da Babbage e Lovelace per compiti


generici, mai realizzata.

Colossus: Primo calcolatore a valvole termoioniche.

ENIAC: Molto grande, 5000 operazioni aritmetiche al secondo, dei


lavoratori spostavano interruttori e cavi.

Macchina di Turing: Il suo modello astratto di calcolo è la base dei


sistemi informatici, tutte le macchine moderne sono riconducibili a Turing.
Immagina come una persona compirebbe un’operazione matematica. Un
nastro illimitato diviso in caselle, ognuno delle quali contiene un simbolo.
Una testina legge e scrive i simboli. C’è un controller che ad ogni
passaggio si trova in un determinato stato. Stato corrente R in cui si
esamina simbolo a, per esaminare b si sposta a destra nello stato S.

R a : b -> S

Deve dire se un numero è pari o dispari. Pari: stato E, dispari: stato O. Q:


stato iniziale. F: stato finale che è 0 se l’input era pari, 1 se l’input era
dispari.

Q 2 : [] -> E

[] è il simbolo speciale per la terminazione.

Qualsiasi cosa che può essere calcolata con un algoritmo, può essere
calcolata dalla macchina di Turing. La tesi Church-Turing dice che se
qualcosa non può essere calcolato da Turing, allora non può essere
calcolato da un algoritmo: la macchina di Turing rappresenta il limite di
computazione.

Se ad un’altra macchina di Turing viene dato lo stesso codice di questa


macchina di Turing, l’altra macchina ne simulerebbe il funzionamento. Può
svolgere qualsiasi compito e simulare tutte le altre macchine, può fare
ogni tipo di calcolo (esempio di general purpose).

I calcolatori moderni: Hardware: componenti materiali (RAM, disco,


monitor); Software: applicazioni, sistema operativo.

Anni 50: es. Colossus, erano a valvole termoioniche, commettevano


errori, consumavano molta energia, linguaggio binario (0, 1), rumoroso,
ingombrante.

Anni 60: a transistor: dispositivi semiconduttori funzionano come un


interruttore, più affidabili, consumano meno.

Anni 70: a circuiti integrati, linguaggi di programmazione di alto livello.

Anni 80: personal computer, costi ridotti, calore ridotto, più compatti.

Anni 90: dimensioni ancora ridotte,

Tendenza alla miniaturizzazione, aumento della potenza di calcolo, minor


consumo, maggiore memoria, semplificazione interfaccia, aumento
connettività di rete.

Architettura Von Neumann: Modello di elaboratore elettronico di


struttura, universale, general purpose, memoria condivisa di dati e
applicazioni, codifica binaria di dati e istruzioni, separazione fra
elaborazione e memorizzazione. Componenti: CPU (Central Processing
Unit) opera le trasformazioni sui dati; ALU (Arithmetic Logic Unit) circuiti
per operazioni aritmetiche logiche elementari; dentro CPU memoria
integrata: registro istruzione corrente e indirizzo di memoria per
istruzioni successive; unità di controllo: per comunicazione fra ALU e
memoria; memoria separata da CPU: insieme di celle numerate, il
numero indica l’indirizzo, organizzata secondo una gerarchia: memoria
cache è di piccole dimensioni, molto veloce, integrata CPU, ci sono i dati
utilizzati più spesso; memoria centrale: es. RAM (Random Access
Memory) interagisce con la CPU, volatile: se computer si spegne questa
memoria si svuota; memoria di massa: trattiene contenuto anche se si
spegne il computer, più lenta, più capiente, es. dischi magnetici. La
memoria più vicina CPU: più veloce, meno capiente, più accessibile.
Interfaccia: comunicazione e interazione con l'ambiente esterno, input:
trasferire i dati al computer, es. tastiera e mouse; output: es. monitor.
Bus: canali di comunicazione fra i sotto-sistemi, es. far comunicare la CPU
con la memoria o con i dispositivi di interfaccia input e output.

I PC rispecchiano l'architettura di Neumann: periferiche input output


(tastiera, mouse, stampante), unità centrale che contiene: alimentatore,
ventole di raffreddamento, scheda madre.
Tipi di calcolatori: Embedded: integrati dentro altri sistemi es. semafori,
eseguono un’unica task; mini computer es. PC; mainframe: calcoli
massivi, potenti, utilizzati dalle imprese; supercomputer: prestazioni
molto elevate, ambito scientifico.

Programmare: istruire un calcolatore con istruzioni precise.

Ogni computer va programmato affinché sappia svolgere autonomamente


i compiti insegnatogli.

Per programmare è necessario il pensiero computazionale: capacità di


immaginare e descrivere il procedimento costruttivo per risolvere un
problema. Concetto introdotto da Seymour Papert nel libro Mindstors.
Trasformare un'intuizione in un procedimento costruttivo, ovvero una
soluzione concreta. I ragionamenti devono essere generici in modo da
essere riutilizzati per scopi diversi. Le soluzioni vengono eseguite
automaticamente da un computer. Permette di affrontare problemi
complessi.

Secondo Jeanette Wing: il pensiero computazionale è un processo


necessario per risolvere problemi in forme comprensibili da agenti in
grado di processare informazioni (es. Computer, o persone). La
professoressa ritiene che ogni studente debba acquisire questa
competenza. Infatti è una capacità traversale che nasce nell’informatica,
ma utile in qualunque campo.

Coding: attività di programmare.

Pilastri del pensiero computazionale:


1. Scomposizione: scomporre un problema in parti più piccole (sotto-
problemi) e risolvere i problemi semplici (problem-solving), combinare le
soluzioni dei sotto-problemi per risolvere il problema originale; 2.
Riconoscere pattern: Capire i sotto-problemi simili che possono essere
risolti con la stessa procedura, es. Risolvere una moltiplicazione, anche se
i numeri sono diversi, il processo è lo stesso; 3. Astrazione: Individuare le
informazioni necessarie per la soluzione, ignorando quelle non pertinenti;
4. Algoritmo: Sviluppare una soluzione dettagliata e definire le regole da
seguire, l’ordine in cui le azioni, gli step, devono essere eseguite. Espresso
tramite linguaggio naturale (es. In italiano, in inglese), o tramite uno
pseudo codice, o attraverso i diagrammi di flusso. Punto di partenza per
scrivere un programma.

Istruzioni dell’algoritmo: Devono essere espresse in una lingua


comprensibile sia agli umani sia al computer.

Linguaggio comprensibile all’uomo: Pseudo codice.


Linguaggio comprensibile al computer: Linguaggio di
programmazione.

Diagramma di flusso: Rappresentazione grafica di una sequenza di


istruzioni, unite da una freccia che indica l’ordine di successione, si
dispone in verticale, dalla prima istruzione all’ultima, ci sono un’istruzione
iniziale di inizio e una finale di fine. Uno stesso diagramma può risolvere
più problemi in base alla variabile inserita. Es. Eseguire una
moltiplicazione con cifre diverse. Dopo l’istruzione di inizio, c’è l’istruzione
di input che specifica la variabile, la variabile Tipo (rombo) memorizza
l’input, le cifre inserite sono le varie variabili. In base all’input si
memorizzano variabili diverse.

Programma: Sequenza di funzioni (o procedure), ognuna risolve un sotto-


problema, il corpus del programma combina le funzioni risolvendo il
problema originale (scomposizione). Programmi devono essere generali,
così sono utili per risolvere più problemi specifici. Per quanto riguarda le
immagini, es. 5 pixel rossi resi come un pixel rosso seguito dal numero 5:
compressione dei dati. (Riconoscere pattern).

Sintassi di base diagrammi di flusso: 1. Riquadri particolari per inizio


e fine (rosa), 2. Istruzioni tutte in riquadri rettangolari, 3. Riquadro rombo
della decisione in cui si inserisce la scelta, 4. Input.

Caso studio 1: Trovare valore massimo fra una serie di valori (sotto-
problema frequente). Il computer legge i numeri uno alla volta e li
confronta uno ad uno. Un computer, infatti, può svolgere soltanto
operazioni binarie (ovvero con due operandi): es. 1+2, 6x3, 7>4.

52, 83, 25, 17, 91.

52<83, allora si prende in considerazionel’83.

83>25, si mantiene l’83.

83>17.

83<91. Il valore massimo è 91.

Inizio->input: 52, 83, 25, 17, 91->indicazione di ciò che deve fare (trovare
il nr. massimo confrontandoli uno ad uno)-> rombo: ci sono ancora
numeri-> variabile sì, continua/ -> variabile no, si ferma -> fine

Questo stesso algoritmo può essere utilizzato anche per trovare il valore
minimo, cambiando la variabile.

Caso studio 2: Cercare un determinato elemento in una sequenza di


valori. Comparare il valore preso in considerazione con quello che si sta
cercando.
Pseudo-codice: Non è un codice, ma una descrizione di ciò che sa fare
l’algoritmo, è destinato agli uomini non alle macchine, non c’è sintassi
standard. Occupa meno spazio rispetto al diagramma di flusso. Intermedio
fra diagramma di flusso e codice.

Dato = valore grezzo, spesso numerico, non hanno un significato. Es. 30.

Informazione = valore grezzo che porta un significato, Es. 30 come


l’indicatore di un voto.

Conoscenza = insieme di informazioni collegate fra loro, Es. Se 30 è il


voto dell’esame, ho passato l’esame e ne devo dare uno in meno. (Se ne
possono trarre delle conclusioni).

Piramide della conoscenza: a partire dalla base: Dato, informazione,


conoscenza, saggezza.

Non esiste definizione assoluta.

Dato: ciò che percepiamo con i sensi.

Informazione: qualcosa che è stato processato fino ad acquisire un


significato.

Conoscenza: qualcosa che viene capito e valutato.

Rappresentare i dati: sistema romano, decimale, esa-decimale, binaria


(0,1), livello di mercurio sul termometro, etc.

Sistema binario: notazione utilizzata dai computer per rappresentare i


dati. Usano questa perché è codificato tramite un segnale elettrico
presente (1) o assente (0).

Tradurre nr binario in decimale:

(...)b

(11010)2 = (0x20+1x21+0x22+1x23+1x24) = (26)10

Si moltiplica il numero per 2 elevato al nr corrispondente alla posizione, la


posizione a partire da dx e da 0.

Il 10 indica che 26 è un numero a base decimale.

Da decimale a binario: (37)10

1. Potenza di 2 minore o uguale a 37: 25=32

2. 37-32=5

Il procedimento si ripete fino ad arrivare a 0.

3. Potenza di 2 minore o uguale a 5: 22=4


4. 5-4=1

5. Potenza di 2 minore o uguale a 1: 20=1

6. 1-1=0

Le potenze indicano quali sono i bit accesi (1).

5, 2, 0.

(100101)2

Con un solo bit si possono rappresentare due configurazioni: 0, 1.

Possibili configurazioni con due bit: 01, 11, 00, 10. (quattro
configurazioni)

Con 3 bit, 8 configurazioni.

Con Kbit si possono rappresentare 2k configurazioni. (In base al numero di


bit si può rappresentare un tot di configurazioni)

Avendo il nr di oggetti /configurazioni, quanti bit servono? Si usa il


logaritmo.

Codifica ASCII: Per codificare i caratteri nei file di testo, utilizza 8 bit per
simbolo per un totale di 256 configurazioni/simboli, basata sul sistema
binario.

Immagini digitali invece composte da pixel su una griglia quadrata


regolare. (Il pixel non è solo quadrato, ha varie forme). Una fotografia
analogica è composta da pigmenti di colore o in bianco e nero.

Pixel: Originati da campionamento e quantizzazione. L’immagine


analogica viene campionata: divisa attraverso una griglia (matrice)
composta da celle tutte della stessa dimensione, ogni cella è un pixel.
Questo procedimento può comportare la perdita di informazioni, più le
celle sono piccole, più pixel ci sono e più informazioni ci stanno.
Quantizzazione: Conversione dell’immagine campionata in valori
numerici. Es. Bianco (0) e nero (1). Più bit ci sono, migliore è la qualità.

8 bit = byte. Esistono sia a base 10 (decimale) sia a base due (binari).
Kilobyte: 103 byte; Kibibyte: 210.

Dato: Sequenza binaria su un supporto di memoria.

Per dare significato ai dati, vanno strutturati. Modello di dati:


Rappresenta i dati in un linguaggio formale, processo di astrazione:
Tralasciare dati non importanti. Rappresentati in base a convenzioni, es.
in una lista di quadri devono sempre esserci anche gli autori, questi si
chiamano vincoli di integrità.
Database: Insieme di dati strutturato secondo uno schema,
efficienti ,robuste (permetterne il recupero in caso di guasto), integri (dati
corretti), sicuri (qualcuno può modificarli, ma non chiunque può, la
maggior parte utenti può solo visualizzare).

Tipi di basi di dati


Relazionali: in tabelle; Object-oriented: collezioni di oggetti, ogni
oggetto ha attributi e relazioni con altri oggetti; GIS (Geographic
Information System): Immagazzinano dati spaziali e geografici, in base
alle relazioni spaziali fra gli oggetti si ottengono informazioni.

Quattro fasi della progettazione di un database:

Analisi requisiti: Intervistare gli utenti per capire quali sono le


informazioni utili;

Progettazione concettuale: Usare i diagrammi Entità-Relazione per


costruire il modello;

Progettazione logica: Il modello viene trasformato in uno schema di


tabelle, ad esempio utilizzando lo schema relazionale;

Progettazione fisica: Lo schema logico viene implementato con uno


schema formale, ad esempio SQL.

Modello di dati es.: titolo, altezza, larghezza, pittore, genere; sotto ogni
categoria può essere inserito un dato diverso di quadri diversi.

Vincoli di integrità: es. Sotto “altezza” possono essere inseriti soltanto


valori numerici; “quadro” non può esistere se non c’è un “pittore”
associato e viceversa.

Base di dati: Insieme di dati strutturato secondo uno schema, es. Dati di
pittori e quadri che seguono tutti lo stesso schema. Efficiente (accesso
veloce ai dati), resistente (recuperabili in caso di guasto), integro (dati
corretti), sicura (utenti comuni non possono gestire come amministratore,
per evitare che chiunque possa modificare). Le basi di dati non servono
solo per strutturare e vincolare i dati, ma anche per manipolarli, non è
solo un contenitore, ma è un sistema software che consente di
immagazzinare, gestire e recuperare le informazioni.

Tipi di basi di dati: 1. Relazionali (modello relazionale): tabelle che


possono essere collegate tra loro; 2. Object-oriented: collezione di oggetti
con relazioni con altri oggetti; 3. GIS (Geographic Information System):
dati spaziali e geografici, relazioni spaziali fra gli oggetti.

Fasi progettazione basi di dati: 1. Analisi requisiti: estrarre informazioni


importanti che devono essere rappresentate es. Interviste agli utenti o al
committente della base di dati; 2. Progettazione concettuale: costruzione
di uno schema in cui vengono rappresentate le entità importanti, le loro
proprietà e le relazioni che hanno fra loro, si usano i diagrammi ER Entità-
Relazione; 3. Progettazione logica: si prende il diagramma ER e lo si
trasforma in una serie di tabelle, si usa modello relazionale; 4.
Progettazione fisica: le tabelle vengono implementate con il linguaggio
formale SQL (Structured Query Language) es. Autore CHAR(49) not null:
nella categoria Autore ci possono stare almassimo 49 valori e non deve
essere nullo; può essere inserita la primary key, che nelle tabelle era
espressa tramite sottolineatura.

Modelli ER: rappresentano le entità e le loro classi, i loro attributi e le


relazioni fra le entità.

Entità: Unità di base che si vuole rappresentare nel modello. (es. Pittori e
quadri)

Un’entità è caratterizzata da un insieme infinito di proprietà, selezionate


in base allo scopo. (es. Proprietà dell’entità pittore: nome, data di nascita,
numero di quadri). Le proprietà sono caratterizzate dagli attributi e da un
dominio: Insieme dei possibili valori che la proprietà può assumere. Es.
Attributo: questo quadro è di una collezione privata? Dominio: binario
perché ha solo due valori 0 o 1 (sì o no).

Proprietà atomica: Se il valore non può essere suddiviso in sottogruppi.


(Nome è atomico, data di nascita no perché ha tre valori ovvero giorno,
mese e anno).

Proprietà unica: ha un unico valore.

Proprietà totale: ogni entità ha un valore per questa proprietà (es. Ogni
persona ha un nome).

Proprietà parziale: esistono entità senza quella proprietà (es. Non tutte
le persone hanno un numero di telefono).

Proprietà costante: il valore non cambia nel tempo.

Proprietà calcolata: il valore può essere calcolato a partire da altre


proprietà (es. Età calcolabile da data di nascita e data corrente).

Istanza: i valori specifici dell’entità. (es. Munch è istanza di Pittore).

Chiave: insieme di attributi che identifica in modo univoco un’entità. (es.


Codice fiscale)

Chiave primaria: chiave scelta per identificare univocamente le entità.


Classe: insieme di entità omogenee, es. Artisti: pittori, musicisti...
(accomunati da titolo, data etc.)

Protezione dei dati

Dati real-time: 1. Le tecnologie moderne permettono una raccolta di dati


automatica e sistematica es. App, Internet of Things (domotica),
dispositivi indossabili; i dati vengono conservati nel tempo. 2. L’accumulo
di informazioni avviene a basso costo: meccanismi di incentivi, software di
web scraping, API (interfaccia di programmazione delle applicazioni),
piattaforme di crowdsourcing. 3. I dati sono disponibili pubblicamente.

Dati sociali: raccolti tramite l’osservazione delle attività quotidiane


(observational data), non tramite interventi progettati, ma tramite
interazioni sociali spontanee (es. Engagement sotto a un post). Utile per la
sentiment analysis.

Dati interconnessi: ci sono dei pattern, ovvero abitudini comuni e quindi


prevedibili. Con questi si possono fare dei confronti fra i diversi modelli di
inferenza (es. Capacità d’acquisto, credit scoring).

Target negli USA riuscì a prevedere le gravidanze delle clienti, inviando


poi promozioni mirate.

I dati possono essere condivisi e venduti, se ne può fare un utilizzo


illegittimo. Le raccolte possono essere purpose-driven, o possibility-
driven (in questo caso lo scopo non è specifico, si utilizzano nella ricerca
scientifica e nel marketing per un ipotetico utilizzo futuro).

Tratti personali predicibili: Riuscire a capire dati personali come


l’orientamento sessuale dai like, commenti etc. di un utente.

GDPR (Legge europea sulla protezione dei dati personali) in vigore dal
2016.

Dato personale: Qualsiasi informazione che può portare all’identificazione


di una persona nella sua identità fisica.

Trattamento dei dati: Anche la raccolta è un trattamento dei dati, oltre


registrazione, modifica etc.

Principi GDPR: 1. Liceità, correttezza, trasparenza: in modo lecito, per fini


leciti, con consenso o necessità, devono essere comunicati con
trasparenza i fini e i rischi, il soggetto deve avere accesso ai propri dati;

Consenso informato: la condizione perché ci sia è la comprensione da


parte dell’oggetto di ciò a cui sta acconsentendo, bisogna utilizzare un
linguaggio semplice. Limiti del consenso: incomprensibilità del gergo
tecnico, documenti lunghi, incomprensibilità delle tecniche di trattamento
dei dati, consenso passivo e non attivo, imprevedibilità degli usi futuri dei
dati.

2. Limitazione delle finalità: la finalità deve essere definita prima del


trattamento dei dati, non si può perseguire una finalità non dichiarata, ad
eccezione della ricerca scientifica.

3. Minimizzazione dei dati: Non devono essere raccolti più dati di quelli
necessari, il trattamento dei dati deve avvenire solo se la finalità non è
perseguibile in altro modo, deve esserci un equilibrio di interessi.

4. Esattezza dei dati: Vanno aggiornati regolarmente, eliminare quelli


inesatti e assicurarsi che siano corretti in ogni fase del trattamento.

5. Limitazione della conservazione: Una volta che la finalità è stata


raggiunta i dati vanno cancellati o anonimizzati, i dati archiviati a fine di
interesse pubblico possono essere conservati più a lungo con adeguate
garanzie.

6. Sicurezza dei dati (integrità e riservatezza): es. Anonimizzazione e


pseudonimizzazione (con una stringa alfanumerica).

Rischio di identificazione: caso di Latanya Sweeney che combinò i


registri elettorali della città con un record di visite mediche che era stato
anonimizzato, confrontandoli riuscì a identificare i soggetti anonimizzati.
La stessa cosa è successa con un database di recensioni anonimizzato di
Netflix confrontato con IMDB.

7. Responsabilità (accountability): I responsabili devono dare conto della


sicurezza dei dati, che deve essere continua, e devono saper dimostrare
in ogni momento che stanno operando in conformità con le norme.

Intelligenza artificiale
Intelligenza Artificiale: Non c’è una definizione riconosciuta; macchine che
pensano o agiscono come gli esseri umani, in modo che non si capisca se
una risposta sia data da una macchina o una persona (test di Turing);
che pensano o agiscono razionalmente, non necessariamente
rappresentando la razionalità umana (es. entità astratta che si comporta
in modo da massimizzare un obiettivo).

Linee di sviluppo dell’IA: Strong AI, simula mente umana, o Weak AI, non
simula ma è davvero intelligente; General AI, programmi che sanno
svolgere diversi compiti che richiedono intelligenza (Human Level AI), o
Narrow AI, compiti specifici (spesso applicazioni commerciali).
Storia dell’AI
Workshop di Dartmouth (1956): Studio che vuole provare che una
macchina possa simulare l’intelligenza, uno dei primi tentativi di IA.

Rosenblatt propone il Perceptor (1957): primo modello di rete neurale


(modello bottom-up)

Eliza Program: McCarthy (Advice Taker), Newell e Simon (General


Problem Solver) 1966. Dopo i primi insuccessi, si sviluppano macchine per
compiti più specifici. Sistema top-down o IA simbolica: I simboli vengono
manipolati secondo regole definite dall’uomo, viene osservato il modo
in cui un uomo risolve un enigma, il problema principale viene scomposto
in sottogruppi (configurazioni/insieme di stati), dei sottoprogrammi
(operatori) eseguono la trasformazione da uno stato all’altro, avviene
l’analisi del mezzo e del fine per ridurre la differenza fra lo stato attuale e
quello desiderato. Es. Enigma dei cannibali e degli uomini (barca su due
sponde).

IA sub-simbolica o connessionista: Unità connesse fra loro con input


numerico, regole implicite estratte dai dati attraverso equazioni, si
ispira al modello dei neuroni, le varie connessioni hanno pesi diversi, un
neurone somma gli input ricevuti dagli altri neuroni e se la somma supera
il valore soglia si eccita.

AI winter: Minsky e Papert mostrano i limiti del Perceptor (anni Settanta);


Lighthill report (1973).

Successi commerciali come il network di Hopfield (1982). Deep Blue batte


il campione mondiale di scacchi (1997). Google traduttore (2007). Watson
batte due umani a Jeopardy. (2011) Macchina di Google batte campioni al
gioco Go. (2016) Architettura dei transformer (2017). Scandalo Cambridge
Analytica (2018). ChatGPT (2022).

IA contemporanea: Sistemi progettati da essere umani con un fine


complesso, percepiscono il loro ambiente e organizzano i dati per
raggiungere nel migliore dei modi il fine programmato.

L’IA ha varie aree di specializzazione, es. Machine learning


(apprendimento automatico, può essere supervisionato ovvero deve
associare un’immagine a una risposta corretta; oppure non
supervisionato, in questo caso raggruppa immagini simili; approcci misti,
semi-supervisionato). L’apprendimento automatico si basa sull’approccio
connessionista. L’IA ha anche tante varie tipologie diverse
dalll’apprendimento automatico. Tecniche di Deep Learning: una delle
tecniche di machine learning, basate sulle reti neurali, contengono
moltissimi parametri.
1. Apprendimento supervisionato (metodo predittivo, task driven):
supervisione umana; i dati sono associati a delle etichette e quindi
vengono pre-categorizzati. Training: tramite le etichette aprende i suoi
paramentri interni; Testing: testare funzionamento; Predizione: il sistema
può predire autonomamente le etichette di nuovi dati che incontra.

Classificazione: Le etichette sono un numero finito e vengono chiamate


classi.

Regressione: Le etichette sono un valore numerico continuo.

I dati (training set, dati utilizzati per l’apprendimento): serie di samples


con relativi attributi (proprietà caratteristica del sample), gli attributi
hanno valori numerici o categorici, ogni sample ha una classe associata
(etichetta). Da questo si ricava il modello del sistema. I dati nuovi invece
non hanno una classe attribuita, ma verrà predetta dal sistema sulla base
del modello.

Per fare la classificazione, il dataset va diviso in training set e test set (di
solito 80-20%).

Capacità di generalizzazione: fare previsioni accurate su dati mai visti; il


sistema non deve imparare a memoria i dati di training e questi ultimi
devono essere ben distribuiti e rappresentativi. Se il modello vede solo
gatti rossi, potrebbe non riconoscere come gatto uno di un altro colore.

Complessità del modello: un modello underfit (troppo semplice, high bias)


porta a un alto rischio d’errore sia nel training sia nel test; un modello
ottimale (meno semplice, ma non troppo complesso) ha bassi rischi per
entrambe le opzioni; un modello overfit (troppo complesso, high variance)
ha un alto rischio per il test e uno basso per il training.

Regressione e classificazione possono avvenire utilizzando diversi modelli:


alberi decisionali, support vector machines, K-nearest neighbours (KNN),
reti neurali...

Un buon modello deve costrare correttamente i pattern dei training set e


non deve essere troppo complesso. Un software che impara
perfettamente il training set, però, fa più fatica a generalizzare nuovi dati
(ovvero a comprendere dati nuovi).

Albero decisionale: simile a un diagramma di flusso; ogni nodo è un test


su un attributo (presenta due opzioni di cui se ne sceglie una), ogni ramo
è il risultato del test (l’opzione scelta), ogni foglia è la classe finale
predetta. Il percorso dalla radice alle foglie determina le regole di
classificazione.
Reti neurali: si ispirano alla struttura del cervello, le unità base sono i
neuroni che collegano fra loro le cellule. Un input (x) è collegato a un peso
(w), un input più importante è collegato a un peso maggiore,
moltiplicandosi attivano una funzione di attivazione che genera un output.
Ci sono varie funzioni di attivazione. Gli input sono interconnessi fra loro,
ci sono vari livelli. I livelli non direttamente connessi all’input o all’output
di chiamano hidden levels. Aggiungendo molti layer si ottengono le deep
neural networks.

Durante il training i pesi vengono modificati in modo da ridurre gli errori


(back propagation), questo processo viene ripetuto molte volte. Alla fine
del processo si calcola l’errore, poi i dati vengono fatti passare al contrario
dall’outputverso l’input per aggiustare i pesi.

Unversal Approximaxion theorem: le reti neurali sono approssimatori


universali, ovvero esiste un modello di reti neurali per approssimare
qualsiasi funzione. (Non li conosciamo tutti).

2. Apprendimento non supervisionato (metodo descrittivo, data


driven): Non si danno nuove informazioni, ma in maniera automatica il
sistema fa delle associazioni, solitamente tramite raggruppamenti di dati;
i dati non sono associati a delle etichette.

3. Reinforcement learning: il modello sceglie in automatico le azioni


per massimizzare la ricompensa, senza che gli si impartiscano
esplicitamente delle istruzioni.

4. Semi-supervised learning: alcuni dati etichettati, altri no.

Requisiti per la creazione dell’IA: 1. Rappresentare la conoscenza (Data


Engineering): acquisire e conservare i dati; 2. Apprendimento automatico:
individuare schemi e conclusione sulla base dei dati; 3. Visione artificiale:
percepire il mondo; 4. Interpretazione del linguaggio naturale (NLP): per
comunicare con l’uomo; 5. Robotica: manipolare oggetti fisici e spostarsi
autonomamente.

Apprendimento automatico: acquisire nuove conoscenze o abilità senza


l’intervento umano. Ultimamente lo sviluppo dell’IA è stato così florido
perché oggi sulla rete si possiedono moltissimi dati provenienti dagli
utenti, è semplice creare un algoritmo.

Le cinque V dei Big Data: Volume (moltissimi), Velocità (prodotti


continuamente), Varietà (di molti tipi), Veridicità (non tutti sono di
qualità), Valore (combinando i dati si ottiene del valore, qualcosa di utile).

Ai dati va associata un’informazione, es. 37, 38, 39 (dati), informazione:


temperature corporee. Scoprendo le correlazioni fra le informazioni si
ottiene la conoscenza. Saggezza: capacità di capire le implicazioni della
conoscenza (questo stadio non è ancora stato raggiunto dall’IA odierna).
L’IA spesso confonde correlazione con causalità (che qualcosa sia
correlato non significa che necessariamente sia imputabile come causa di
un fenomeno). I dati hanno rivoluzionato il modo in cui ci approcciamo a
certi problemi: telefonia mobile, e-commerce, carte di credito, polizia
urbana, aziende sanitarie...

Natural language processing (linguistica computazionale): disciplina


che comprende la linguistica e l’informatica. Scopi: facilitare la
comunicazione uomo-macchina (chatbot) e la comunicazione fra persone
(traduzione automatica), analizzare e capire il linguaggio (es. Sentiment
analysis).

La disciplina nasce negli anni Quaranta per la necessità di traduzioni


automatiche, ma divenne importante con il test di Turing.

Negli anni cinquanta si parla di NLP simbolico con le strutture sintattiche


di Chomsy (es. Grammatica trasformazionale), le regole della sitassi
andavano inserite manualmente nella macchina.

Principio base NLP simbolico: stanza cinese di John Searle, ovvero in una
stanza chiusa c’è un uomo con un frasario cinese, fuori dalla stanza delle
persone parlano cinese e lui riesce a rispondergli utilizzando l’insieme di
regole che possiede, ma non comprende realmente la lingua.

L’esperimento di Georgetown: esperimento sulla traduzione automatica,


con 6 regole grammaticale e 260 elementi lessicali per tradurre 70 frasi
dall’inglese al russo, fatto per ottenere finanziamenti per lo sviluppo di un
sistema di traduzione automatica completo. (Problema di overfitting:
pochi dati, non generalizza ovvero non sa rielaborare i dati ma dà risposte
fisse. Problema comune dell’NLP simbolico).

SHRDLU: forme geometriche tridimensionali potevano essere spostate


tramite la macchina, anche qui overfitting.

ELIZA: primo chatbot, dopo un po’ i pattern di risposta si ripetono perché


overfitting.

Negli anni 80-90 strutture ad albero con di base un dizionario che creava
frasi insensate ma grammaticalmente corrette (sostantivi, aggettivi, verbi
al posto giusto).

Dal 1990 al 2010 si parla di NLP statistico, nato grazie all’introduzione di


meccanismi di machine learning, le regole della sintassi venivano rilevate
automaticamente (si basa su grandi quantità di dati testuali, inoltre la
tecnologia permetteva maggiore capacità di calcolo secondo la legge di
Moor). Primi successi nella traduzione automatica (es. Modelli di
allineamento di IBM), utilizzavano i corpora testuali multilingue forniti dai
vari Governi perché si traducessero i procedimenti governativi.

Modello di linguaggio: algoritmo che assegna probabilità ad una sequenza


di parole. Es. Colosseo e Roma devono avere maggiore probabilità di
Colosseo e Parigi. (Es. Sistemi di suggerimeno sulle tastiere degli
smartphone). Unigram (una parola), Bigram (due parole), Trigram (tre
parole): Ngram.

Oggi si parla di NLP neurale, utilizza reti neurali, basata su Word


Embedding e Transformer. L’ngram è stato superato dal percettrone
multistrato (Yoshua Bengio): ad ogni parola viene assegnata una
sequenza numerica, la sequenza viene passata ad uno strato nascosto
della rete che compie delle moltiplicazioni, così il modello tramite una
rappresentazione numerica calcola quale parola è più probabile. Mikolov
sviluppò Word2vec (un singolo strato nascosto), utilizzata per dare
informazioni semantiche sulle parole. (Neural Word Embedding: più parole
passano per lo strato nascosto).

Architettura transformer: il modello impara autonomamente a completare


la frase tramite stimoli e penalizzazione relitivi sia a forma sia a semantica
della parola. Si cancella qualcosa dall’input e si fa in modo che il modello
ricrei correttamente l’input.

Valutazione dei modelli NLP: 1. Creare i dati di addestramento, 2.


Selezionare i benchmark per la valutazione, 3. Identificare i modelli, 4.
Calcolare metriche sui benchmark, 5. confrontare i risultati.

Esempi di task svolte dal NLP:

Optical Character Recognition (OCR): da pdf, immagini, documenti si


estrae il testo. La Post- correction corregge gli errori della prima fase
dell’OCR.

Speech recognition: dalla voce al testo.

Text to speech: ogni parola associata a una rappresentazione numerica e


poi tramite un modello che ha registrato una voce viene poi generato un
audio. Tokenizzare: creare un token per ogni singola parola.

Da modelli semplici su creazione di regole a modelli più potenti che


utilizzano reti neurali che creano rappresentazioni numeriche
dell’informazione. (Scorsa lezione: storia)

Problemi della disciplina:


Pipeline = sequenza di operazioni per processare linguaggio naturale
tramite computer, fornisce al computer la capacità di elaborare i dati:
Morfologia come si formano le parole e la loro struttura, Sintassi come
interagiscono fra loro le parole per creare le frasi, Semantica cosa
significano le parole le frasi e i testi, Pragmatica come il contesto può
influenzare la lettura es. Interpretazioni oltre il senso letterale.

Morfologia: 1. Lemmatizzazione = tecnica per rimuovere le desinenze e


lasciare la forma base di una parola. Viene utilizzato un dizionario; 2.
Segmentazione morfologica = separare la parola in morfemi e analizzarli
(prefisso, radice, suffisso).

Sintassi: 1. Associare ad ogni parola un’etichetta (nome, verbo, ausiliare


etc.); 2. Parsing sintattico: identificare la struttura sintattica, il parsing
determina l’albero di analisi grammaticale (parse tree), ovvero la
gerarchia in cui viene scomposta la frase.

Semantica lessicale = studio significato delle parole per come sono nel
dizionario (sinonimi es, freddo, gelido; contrari es. Caldo; macrogruppi es.
Temperatura); 2. Disambiguazione del senso delle parole: coda come
parte del corpo di un animale, coda come fila in un negozio; con le reti
neurali, rappresentazioni vettoriali delle parole ovvero lista di numeri per
descrivere una parola, vengono apprese dal modello leggendo un testo,
utile per prevedere il contesto (sia linguistico sia culturale es. Capitali, o
diverse coniugazioni verbali o di genere); 3. Named Entity Recognition:
Riconoscere all’interno di un testo parole in quanto facenti parti di una
categoria es. ISIS-Organizzazione; 4. Collegare le entità: Si prende in
considerazione solo l’entità interessata es. Compositore Neumann, si
prende in considerazione solo lui e non omonimi tramite contesto e
metadati; 5. Semantic role labeling: es. Identificazione del predicato,
disambiguazione dei vari significati possibili, identificazione e
classificazione degli argomenti del predicato ovvero il resto della frase; 6.
Parsing semantico: da una frase si crea rappresentazione a grafo,
gerarchicamente dal verbo ai suoi argomenti, eventualmente anche gli
argomenti hanno delle diramazioni.

Topic modeling: tecnica di analisi del testo che raggruppa


automaticamente testi simili fra loro.

Modello di linguaggio: strumento che assegna delle probabilità a delle


sequenze di parole. Approccio self-supervised: non c’è bisogno di
annotare manualmente. Si utilizza architettura transformer. Riescono a
imparare facilmente le task.

Dataset: dati x (input) associati ad etichette y (output), es. X foto di un


gatto, Y etichetta gatto. (0 non succederà, 1 succederà). Data una classe
qual è la probabilità dell’osservazione X: P(X|Y); Data un’osservazione X
qual è la probabilità della classe: P(Y|X).

IA discriminativa: obiettivo di determinare dove finisce una classe e


dove ne inizia un’altra, separare obiettivi di classi diverse. Data
l’osservazione, calcolano la probabilità della classe, ottimizzando il
decision boundary. Utilizzati soprattutto per classificare testi, immagini,
riconoscere oggetti.

IA generativa: avendo abbastanza dati, si può fare una distribuzione di


probabilità su un avvenimento (es. Temperature), i modelli generativi
sono modelli probabilistici. Calcolano data la classe, la probabilità
dell’osservazione. Usano il teorema di Bayes per calcolare P(XY).
Imparano a generare nuovi dati in base ai dati del training. Utilizzati per
generare immagini, dal testo all’immagine. Input = prompt, in base al
quale creano un output. Apprendono automaticamente pattern e statistica
dei dati.

Prima dell’IA moderna, Harold Cohen crea AARON, uno dei primi sistemi
informatici utilizzato per creare arte dal ‘72 al 2010. Si chiese qual è il
minimo indispensabile per definire un’immagine come tale. Non imparava
nuovi stili in autonomia, produce infiniti output, le immagini venivano
riprodotte fisicamente.

Utilizzare immagini come input e output: si utilizza un griglia in cui


ogni casella è un pixel la cui intensità (B&W) è definita da un numero es. 0
= nero. RBG (Red, Blue, Green): componenti primarie della luce, ogni pixel
può essere scomposto in tre numeri. Convoluzione: operazione
matematica, kernel = matrice (solitamente piccola es. 3x3), il kernel viene
fatto scorrere per tutte le posizioni dell’immagine, ogni posizione genera
un valore che corrisponde a un pixel.

Reti convoluzionali: Reti neurali che effettuano convoluzioni in


sequenza, i kernel non vengono inseriti tutti insieme ma vengono
effettuate più convoluzioni in sequenza, ottimizzando i valori nei kernel.
Così si rimpicciolisce l’input, poi si può srotolare l’immagine per poterla
classificare tramite un modello discriminativo.

Modelli generativi: 1. Dal 2014, Variational Autoencoder e Generative


Adversarial Network, primi a creare un’immaggine e non soltanto a
classificarla; 2. 2017 architettura transformer; 3. 2021 DALL-E, modelli di
stable diffusion, IA generativa con input testuale.

GAN: due reti neurali insieme, generativa e discriminativa che determina


se un contenuto è generato o reale, se dice che è generato allora la rete
generativa deve migliorare.
Variational Autoencoder: partendo da un’immagine fa delle convoluzioni,
poi fa delle deconvoluzioni, associ l’input a un vettore latente che lo
comprime in uno spazio più piccolo e così definisce la funzione di
probabilità. Impara a riprodurre il proprio input da solo.

Stable Diffusion: Durante training viene aggiunto rumore hai dati, ovvero
vengono confusi, fino al rumore puro.

Text-to-image models: Non possono generare qualsiasi tipo di immagine,


ma ristretti da un certo tipo di input.

Style transfer: applicare ad un’immagine uno stile proveniente da una


seconda immagine

Trasparenza degli algoritmi: sistemi AI usati per supportare decisioni


basate sulla predizione. Le persone forniscono i dati e traggono poi
benefici dal servizio di AI, può essere pericoloso, es. Macchina a guida
autonoma che investe un pedone. Trolley Problem: sacrificare una
persona per il bene dei più? Problemi etici e giuridici. La trasparenza è
importante perché bisogna chiarire il ragionamento che porta a queste
decisioni. AI utilizzata anche per assunzioni e richieste d’asilo. Diritto alla
buona amministrazione, sancito dall’UE.

Tre livelli di opacità degli algoritmi: 1. Proprietario, un’azienda privata non


concede l’accesso a tutti; 2. Complesso, molto tecnico, solo esperti
capiscono; 3. Altre ragioni, es. Analfabetismo tecnologico.

Per questioni di competizione economica, sicurezza nazionale, ci può


essere un grado di segretezza, ma ci sono degli audit per il controllo da
parte di enti competenti.

Black box model: si conoscono input e output, ma non si sa quale sia il


modello dell’algoritmo della macchina, es. Le reti neurali profonde, è
difficile capire come prendano decisioni anche se ne conosciamo
l’architettura.

Trasparenza: tracciabilità (dei dati e il loro reperimento, dello sviluppo),


può essere spiegato (esplicabilità, es. Perché la macchina si comporta in
questo modo?), comunicazione (es. Utente deve sapere di stare
comunicando con un AI). Scandalo: al posto dell’IA erano persone vere.

Pregiudizi e discriminazioni giuridiche: es. Progetto del MIT “Gender


shades”, il genere delle donne nere veniva identificato erroneamente più
spesso. Es. Voti di maturità degli studenti calcolati tramite un algoritmo,
alcuni ingiustamente molto bassi.

Bias nel word embedding: uomo collegato più probabilmente a


ingegnere, donna collegato più probabilmente a casalinga.
Due tipi di danno: 1. Danno di allocazione: prestiti e posizioni di lavoro,
può discriminare precludendo delle opportunità, facile da quantificare; 2.
Danno di rappresentazione: news e consigliati es. Cercando CEO su
Google apparivano solo uomini, difficili da quantificare.

Si può abbassare il valore-soglia (cut-off) per aumentare i soggetti


ammessi, il numero dei falsi negativi diminuisce. In questo modo è meno
preciso e fa più errori tecnici, ma discrimina meno.

Falso positivo: chi viene ammesso anche se non dovrebbe, questi sono
gli errori tecnici.

Falso negativo: chi viene discriminato e non ammesso.

Matrice di confusione: tabella che confronta le previsioni del modello


con i risultati reali, valutando le prestazioni del modello.

Metrica di parità (fairness): es. Statistical parity, è una funzione.

Trade-off: punti in cui si incontrano unfairness e errori, ovvero punti in


cui avviene meno errore e meno discriminazione. Il migliore è quello che
si avvicina ad un 50-50, vicino al vertice della griglia.

Pareto frontier: elenco di tutti i trade-off possibili.

La concezione di fairness dipende dall’obiettivo dell’ente in questione, può


essere soggettivo.

Sampling bias/selection bias: si selezionano dati che non sono


rappresentativi della popolazione, es. In un’università ci sono pochi
studenti internazionali, quindi si può pensare che gli studenti
internazionali non abbiano successo perché ci sono pochi dati a riguardo,
invece essendoci molti dati riguardo studenti nazionali che hanno
successo il modello tende a preferire quelli.

Social bias: Il modello perpetua discriminazioni esistenti nella società, es.


Le donne vengono penalizzate.

Regolamento UE sull’intelligenza artificiale ha aggiunto l’alfabetizzazione


tecnologica, sistema ALTAI: valuta se le linee guida UE sono rispettate.

MOOC: Intelligenza = comportarsi in modo efficace in situazioni nuove.


Agente razionale = entità che persegue un obiettivo. Anche una pianta
che si muove cercando la luce.

Workshop di Dartmouth (1956): evento inizio dell’IA, descrivere i vari


aspetti dell’intelligenza per poterli simulare in una macchina.

Good old fashioned AI: approccio tradizionale, rappresentazione esplicita


della conoscenza e ragionamento logico. IA simbolica = uso e
manipolazione di simboli per rappresentare concetti. Es. Sistemi esperti:
base di conoscenza in un ambito specifico, regole logiche per nuova
conoscenza.

Data driven: conoscenza e regole sono automatiche (machine learning),


non inserite manualmente. Possibile grazie ai dati presenti del WWW
(World Wide Web). Oggi questo approccio è prevalente.

Apprendimento automatico: le macchine migliorano le proprie prestazioni


con l’esperienza, esperienza = insieme di dati che l’algoritmo impara a
mettere in relazione. Apprendimento supervisionato: addestarto su dati
etichettati, ad ogni input associato un output; apprendimento non
supervisionato: dati non etichettati, identifica schemi; approccio per
rinforzo: apprende interagendo con l’ambiente tramite premi e punizioni.

Algoritmo di classificazione: obiettivo predire classe di appartenenza di un


oggetto tramite classi già note. Il training set è composto da attributi e
etichette, il modello deve individuare le relazioni matematiche fra i due
(regola di classificazione).

Value alignment problem: differenza fra l’obiettivo degli umani e quello


della macchina.

Bias di ancoraggio: decisione influenza da un’idea (punto d’ancoraggio)


che però non ha rilevanza.

Bias in statistica: differenza fra valore atteso e valore reale.

Proxy = informazioni.

Spiegabilità: complessa per le reti neurali profonde (black box), sifficile


scomporre e simulare il procedimento, si usano le model cards = brevi
documenti che portano trasparenza sulla performance e sugli scopi.
Anche i datasheets.

Diversi gradi di rischio prevedono diversi obblighi di trasparenza: Rischio


inaccettabile (divieto), rischio alto, rischio limitato, rischio minimo.

Potrebbero piacerti anche