Riassunti intelligenza artificiale

Riassunti intelligenza artificiale

Che cos’è l’intelligenza artificiale?

L'intelligenza artificiale è la capacità, che hanno le macchine, di elaborare gli stimoli esterni al fine di imitare un comportamento intelligente.

Ci sono due tipologie di intelligenza artificiale:

  • AI debole: possiamo costruire delle macchine capaci di imitare il comportamento intelligente?

  • AI forte: possiamo costruire delle macchine capaci di pensare realmente? Capaci di costruire autonomamente pensieri o provare emozioni?

Dogma centrale dell’AI: partendo dall’assunto che alla base del funzionamento del cervello ci siano calcoli, possiamo anche pensare che l’AI forte è realizzabile.

Approcci AI

Ci sono due approcci all’AI:

  • Top-Down: cerca di replicare comportamente intelligenti attraverso la replicazione di logica, ontologie e simboli a prescindere dal sistema sottostante

Algoritmo = Logica + Motore di inferenza

  • Bottom-Up: cerca di replicare comportamente intelligenti attraverso la costruzione di strutture intelligenti che evolvono autonomamente e fanno emergere l’intelligenza

Algoritmo = Esperienza + Controllo

ProLog

ProLog: è un linguaggio di PROgrammazione LOGica. Esso riesce a effettuare delle inferenze logiche a partire da regole di base e dati. Probabilmente la limitatezza nel modellare logiche complesse e la maggiore semplicità dei linguaggi imperativi ha impedito al PROLOG di emergere.

Sistemi intelligenti

Simulare il comportamento e la logica di tutti quei sistemi che mostrano comportamenti intelligenti:

  • Selezione naturale / Genetica

  • Cervello

  • Comportamento

  • Insetti

Algoritmi genetici

Algoritmi genetici: si basano sulla teoria della selezione naturale di Charles Darwin.

Gli individui di una stessa specie presentano una variabilità genotipica (geni che hanno delle piccole variazioni) e fenotipica (comportamenti leggermente diversi in base all’ambiente), queste mutazioni permettono di avere un vantaggio che porta quelle variazioni ad essere selezionate dall’ambiente in cui vivono.

Questo processo viene simulato generando una popolazione e una funzione di fitness relativa al task che vogliamo compiere, in base agli individui con la fitness più elevata vengono derivati i figli attraverso il crossover, vengono mutati e viene ricalcolata la fitness.

Algoritmi di swarm intelligence

Algoritmi di swarm intelligence (intelligenza degli sciami): simulano il comportamento dei sistemi auto-organizzanti tipici degli insiemi di animali.

Gli algoritmi sono molto simili a quelli genetici: si basano sulla generazione di una popolazione di individui che hanno un obiettivo.

Ogni individuo parte da una posizione e si muove nello spazio seguendo una traiettoria casuale che per è influenzata dagli individui che sono più vicini all’obiettivo, in modo da ottimizzare la loro traiettoria.

Apprendimento

Ci sono tre tipologie di apprendimento:

  • supervisionato: il sistema impara le regole di interesse, attraverso dati strutturati per quel compito;

  • non supervisionato: il sistema impara le regole di interesse, attraverso la struttura intrinseca dei dati;

  • per rinforzo: il sistema impara le regole di interesse, attraverso un bonus (o malus).

Supervised Learning

Supervised Learning: si riferisce a tutti quei compiti di classificazione.

Si tratta, di distinguere due o più categorie, a partire da dati strutturati che hanno incluse le regole di classificazione o annotazioni.

Il classificatore prende in input un vettore di valori (features) e predice a quale classe (label) appartiene quel vettore.

La predizione è svolta in due fasi:

  1. training: nella quale si addestra un modello (o funzione) attraverso degli esempi che sono specificati dalla coppia (vettore, classe) che serve a ottimizzare i parametri del modello;

  2. testing: serve a capire se il modello si comporta bene anche con coppie non viste durante il training.

Il goal degli algoritmi supervisionati è quello di avere un modello generale per classificare i dati.

Underfitting: si ha quando si usa un modello troppo semplice ottenendo dei risultati soddisfacenti, ma non si riesce a costruire un modello molto accurato.

Overfitting: si ha quando si usa un modello troppo complesso, è possibile che questo sia troppo specifico per i dati che abbiamo usato per addestrarlo.

Per evitare il problema dell’overfitting / underfitting è importante seguire delle regole:

  • separare il set di dati per il training e uno per il testing. Se non abbiamo abbastanza dati è possibile utilizzare la cross-validation per capire le performance dell’algoritmo.

  • utilizzare delle tecniche di regolarizzazione o feature selection per facilitare il compito dell’algoritmo.

Unsupervised Learning

Unsupervised Learning (algoritmi non supervisionati): utilizzano dati che non hanno regole di classificazione, ma che vanno raggruppati seguendo alcune caratteristiche comuni del dato, come per esempio la somiglianza fra features.

Le principali tecniche sono quelle di clustering, nel quale i dati vengono classificati attraverso misure di similarità.

Vengono utilizzate anche tecniche che individuano delle componenti principali o indipendenti che possono essere utilizzate per rimuovere rumore e comprimere il dato.

Neural networks

Neural networks (reti neurali): modello che teorizza il funzionamento di un AI come quello di un neurone.

Il neurone artificiale, prende una serie di valori in input (x1, …, xn), questi input vengono opportunamente pesati e passano per una funzione di sogliatura f, che calcola l’output y.

Come apprendono le neural networks

Le reti neurali apprendono attraverso la regolazione dei pesi delle connessioni. Per regolarli opportunamente, hanno bisogno di una procedura di ottimizzazione.

Per iniziare a utilizzare una rete neurale devo fare alcune scelte di progettazione (per fortuna qualcuno ha studiato come ottimizzare le scelte):

  1. Cosa voglio ottimizzare?

Voglio diminuire l’errore fra l’output che ho e quello che voglio ottenere

  1. Come ottimizzo?

Cambiando i pesi delle connessioni in modo da ottenere 1.

  1. Quanti layer uso? Quale funzione di attivazione?

Dipende dal cosa voglio apprendere

  1. Come devo inizializzare i pesi delle connessioni?

Va bene inizializzare i pesi casualmente, ma dipende dal 3.

  1. Dove prendo i dati per addestrare la mia rete?

Database free che sono online, raccolgo io i miei dati.

Da shallow a deep neural networks

Le reti neurali riescono ad approssimare qualsiasi funzione matematica, sia se shallow (poco profonde) o deep (profonde), il grado di profondità è dato dal numero di layer intermedi.

Naturalmente il numero di parametri delle reti shallow cresce esponenzialmente con la complessità della funzione da approssimare mentre con le deep il numero di parametri aumenta linearmente.

Problema dei vanishing gradients, il gradiente svanisce nei layer vicini al layer di output, durante la backpropagation → vengono utilizzate delle tecniche di regolarizzazione e funzioni di attivazione meno sensibili a tale scopo (ReLU).

Naturalmente il numero di parametri da stimare è comunque elevato → ha bisogno di un grande numero di dati per avere un modello corretto.

Questo ha un impatto sul costo delle risorse computazionali da usare per addestrare i modelli → vengono utilizzate GPU ottimizzate per questi scopi, ma sono molto costose.

GPU: Graphics Processing Unit, ovvero processore grafico.

Convolutional Neural Networks (CNN)

Vengono utilizzate per riconoscere cifre scritte a mano e immagini. A partire dall’input, un kernel (filtro) viene fatto scorrere sull’immagine, questo genera altre immagini sulle quali, per ogni layer, vengono fatti scorrere altri filtri e così via.

Gli ultimi layer sono una classica rete neurale, che stima la probabilità che quell’immagine appartenga ad una certa classe.

Le CNN imparano in ogni layer una rappresentazione differente dell’input che viene dato in ingresso.

Ogni filtro fa emergere una caratteristica particolare del dato in input.

I layer più prossimi all’input imparano caratteristiche semplici.

I layer più vicini all’output uniscono queste feature per riconoscere parti più complesse.

Poiché il filtro rimane stabile e viene fatto scorrere sull’immagine da in input, le caratteristiche utili per classificare l’immagine possono trovarsi in varie parti dell’immagine.

Transfer Learning

Transfer learning: è una tecnica che si usa quando ci sono pochi dati per allenare un IA. Si basa sul trasferire la conoscenza di un sistema in altro per fare lo stesso task (o simile). Per la parte di feature extraction si utilizza un modello addestrato in precedenza e disponibile online, si addestra solo la parte di rete neurale densa con i propri dati.

Recurrent Neural Networks (RNN)

Recurrent Neural Networks (RNN): reti neurali nelle quali l’output dei layer intermedi al tempo t-1 è utilizzato per calcolare l’output al tempo t. Questa operazione permette alla rete di avere memoria dello stato temporalmente precedente.

Mixture models

Possono essere anche utilizzati dei modelli di reti neurali ibridi che utilizzano una CNN per estrarre informazioni visive e una RNN per generare il testo associato.

Utilizzare delle reti ibride permette di avere molta flessibilità e si possono usare per compiere diversi task. Hanno bisogno di tantissimi dati per essere addestrate.

Autoencoders

Autoencoders: sono particolari reti neurali strutturate per avere una parte di encoding e una di decoding.

La parte di encoding è una rete neurale con un numero di neuroni decrescente, che serve a ottenere una versione compressa del dato di input.

La parte di decoding è una rete neurale con un numero di neuroni crescente, che serve a ricostruire il vettore di input a partire dalla versione compressa dalla parte di encoding.

Gli autoencoders sono utilizzati per:

  • Comprimere i dati: possono essere utilizzate per comprimere qualsiasi tipo di dato

  • Rimuovere il rumore: hanno bisogno di grandi quantità di dati per discriminare il rumore dall’informazione

Possono essere visti come algoritmi non-supervisionati visto che imparano la struttura del dato, ma sono supervisionati, poiché imparano a ricostruire un segnale.

Generative Adversarial Networks (GAN)

I ricercatori hanno trovato delle “falle” nelle CNN, che sono dovute alla backpropagation.

Questi tipi di attacchi sono chiamati adversarial attacks.

Generative Adversarial Networks (GAN): servono a limitare questo tipo di falle, l’approccio è quello di far competere due network:

  • la prima generativa che crea immagini sintetiche

  • la seconda discriminativa che cerca di capire se queste immagini sono reali o no.

Questo approccio costruisce un generatore di immagini realistiche e un discriminatore molto affidabile.

Reinforcement Learning

Reinforcement Learning: è una particolare metodologia di apprendimento basata sul rinforzo.

Il sistema o ambiente (environment) riceve un’azione (action) da un agente (agent) e l’ambiente a seguito di questa azione ritorna all’agente un premio (reward) e lo stato attuale dell’ambiente (state).

L’agente impara la sequenza di azioni da compiere in base allo stato del sistema in modo da massimizzare il premio nel lungo termine.

La procedura di apprendimento avviene attraverso le prove e l’errore (trial-and-error).

Per trovare una traiettoria ottima e quindi massimizzare il guadagno futuro dobbiamo scegliere fra due strategie: esplorazione o sfruttamento (exploration vs exploitation).

Addestrare un agente a imparare attraverso il solo segnale di rinforzo (o premio) è un approccio promettente e sembra essere un paradigma per risolvere molti problemi.

Ma è molto importante riuscire a costruire una funzione di rinforzo appropriata.

Il problema può essere che l’algoritmo adotti un comportamento non ottimo.

Deep Reinforcement Learning (DRL)

Deep Reinforcement Learning (DRL): metodologia di apprendimento data dall’unione di Reinforcement Learning con le DNN.

Neuroscienze e AI

La nascita dell’AI è stata fortemente influenzata dagli studi sulle Neuroscienze, in quanto essa copia interamente il funzionamento dei neuroni.

MEG (Magnetoencephalography): si basa sul segnale magnetico generato dalle correnti ioniche dei neuroni piramidali nei solchi della corteccia cerebrale.

EEG (ElectroEncephaloGraphy): si basa sul segnale elettrico generato dalle correnti ioniche dei neuroni piramidali nei giri della corteccia cerebrale.

fMRI (functional Magnetic Resonance): si basa sulla variazione dell’ossigenazione sanguigna dovuta all’attività cerebrale ed è associata a una variazione di suscettibilità magnetica catturabile con la risonanza magnetic.

Brain decoding

Brain decoding: è la decodificazione del cervello, per decodificare un cervello si usa un classificatore.

Il classificatore usa il segnale che il cervello riceve da vari input per decodificare l’attività cerebrale e capire cosa stia facendo un determinato soggetto.

Decoding di categorie di oggetti

In questo caso un soggetto viene sottoposto a fMRI mentre osserva determinati oggetti, il segnale fMRI viene utilizzato per addestrare un classificatore che predice quale stimolo stava vedendo il soggetto.

fMRI (functional Magnetic Resonance Imaging): si basa sulla variazione dell’ossigenazione sanguigna dovuta ad attività cerebrale ed è associata ad una variazione di suscettività magnetica che può essere catturata dal segnale di risonanza magnetica.

Decoding di stimoli semplici

In questo caso i soggetti vengono sottoposti a fMRI mentre osservavano diverse griglie con diverse angolazioni. Un classificatore addestrato con il segnale fMRI prediceva con estrema accuratezza l’angolo delle linee della griglia.

Decoding di decisione e movimento

I soggetti, sottoposti a fMRI, devono decidere con un movimento della mano destra o sinistra se uno stimolo era già stato visto, in una sessione precedente.

In ogni istante di tempo è stato addestrato un classificatore per predire quale decisione avrebbe preso e quale movimento avrebbe fatto.

Si è notato che in alcune zone cerebrali il classificatore classificava bene la decisione dopo 3 secondi, mentre in altre il classificatore funzionava bene solo dopo 5/6 secondi.

Ricostruzione degli stimoli

L’idea è quella di utilizzare un classificatore che, a partire dal segnale cerebrale, riesca a predire l’immagine visualizzata.

Uno studio ha confermato la fattibilità di questa ipotesi, in cui i calcolatori riuscivano a ricomporre l’immagine iniziale dal segnale di fMRI di un paziente

Microstati EEG

A partire da un’acquisizione EEG possiamo applicare un algoritmo non supervisionato per vedere se ci sono dei pattern che ricorrono molto più spesso di altri.

È stato visto che ci sono 4 pattern o topografie che sono più ricorrenti.

CNN e sistema visivo

Le CNN riescono a classificare le immagini con prestazioni molto simili a quelle dell’uomo (se non superiori).

Queste reti possono essere utilizzate quindi per cercare di capire come il cervello umano processa le informazioni.

Computational neuroscience

Alcuni tipi di rete neurale sono utilizzate per effettuare task “umani”, possiamo addestrare le reti neurali a fare qualsiasi tipo di task.

Brain Computer Interface

Brain Computer Interface (BCI): è una tecnica per mettere in comunicazione il cervello con un dispositivo esterno. Il segnale proveniente dal cervello viene interpretato e utilizzato per muovere una protesi o comunicare.

Il segnale da utilizzare per muovere una protesi robotica può essere acquisito in maniera:

  • non-invasiva: sono molto rumorose e il segnale viene ricevuto da qualsiasi parte della corteccia.

  • invasiva: prevede l’installazione sulla corteccia cerebrale di microelettrodi capaci di registrare il segnale da gruppi neuronali, che risulterà molto più accurato, ma può registrare solo segnali da piccole porzioni di corteccia.

Una BCI non-invasiva generale che funziona per ogni soggetto e in ogni che funziona perfettamente è molto difficile da realizzare per diversi motivi:

  1. processamento dipende da diversi parametri dipendente dal task, dai soggetti ecc.

  2. la struttura del cervello (giri e solchi) è diversa per ogni soggetto

  3. il funzionamento cerebrale è differente da soggetto a soggetto

  4. i dispositivi e i sensori sono molto diversi tra di loro

  5. un segnale poco rumoroso è difficile da acquisire

  6. alcuni tipi di task sono molto complessi e richiedono studi più approfonditi

La BCI è una tecnica che viene usata principalmente con le disabilità.

Brain control

Se riusciamo a capire i modelli cerebrali patologici, possiamo stimolare il cervello per fargli raggiungere degli stati mentali che sono non patologici.

In questo caso l’intelligenza artificiale può essere utilizzata per classificare particolari pattern patologici, ma anche per ottenere un modello accurato di rete neurale.

L’attività cerebrale viene registrata e un modello precedentemente addestrato viene utilizzato per decodificare lo stato cerebrale presente.

Un altro modello viene utilizzato per capire l’effetto della stimolazione a partire dallo stato attuale.

A seconda dello stato attuale viene stimolato il cervello per raggiungere lo stato desiderato.

Questo paradigma è simile al Reinforcement Learning.

 

 

Commenti