Skill Factory
Categoria: Home
4.Intelligenza Artificiale: tipi di reti neurali artificiali
Gino Visciano |
Skill Factory - 25/10/2024 13:07:24 | in Home
Come abbiamo visto nell'articolo precedente il primo tipo di rete neurale artificiale è stato il Percettrone costituito da un singolo strato di neuroni, ognuno dei quali riceve un input, calcola una somma ponderata e applica una funzione di attivazione.
Il Percettrone anche se non può risolvere problemi complessi ha gettato le basi per lo sviluppo delle reti neurali moderne, introducendo concetti fondamentali come pesi, bias, soglie e funzioni di attivazione.
Dovete immaginare le reti neurali artificiali come modelli matematici che simulano il funzionamento del cervello umano. I neuroni artificiali, che compongono le reti neurali, non sono altro che mini-processori che svolgono le seguenti attività:
1) Ricevono l'input: il neurone riceve diversi input, ciascuno moltiplicato per un peso specifico;
2) Calcolano la somma ponderata: gli input moltiplicati per i pesi vengono sommati tra loro, spesso aggiungendo un bias;
3) Applicano la funzione di attivazione: il risultato della somma ponderata viene passato attraverso una funzione di attivazione, che introduce non linearità e determina l'output del neurone.
I neuroni sono connessi tra loro da sinapsi artificiali. Queste sinapsi rappresentano il flusso di informazioni da un neurone all'altro. I pesi associati a ciascuna sinapsi determinano l'importanza dell'informazione che passa da un neurone all'altro. Un peso alto indica una connessione forte, mentre un peso basso o negativo indica una connessione debole o inibitoria.
Dovete pensare a una rete neurale come a una rete di tubi. I neuroni sono i nodi della rete, i tubi sono le connessioni (sinapsi) e i parametri (pesi e bias) sono come delle valvole che regolano il flusso d'acqua nei tubi. Le valvole non sono i tubi stessi, ma determinano quanto acqua può passare da un tubo all'altro.
I neuroni artificiali collaborano tra loro per risolvere problemi complessi; l'area del machine learning che si occupa delle reti neurali è il deep learning.
Questi modelli matematici possono essere pre-addestrati attraverso grandi quantità di dati, detti dataset. Dopo il pre-addestramento possono anche essere specializzati con una ulteriore fase di addestramento chiamata fine-tuning.
Oggi le reti neurali vengono utilizzate per identificare pattern, per riconoscere e creare immagini, video e musica, comprendere il linguaggio naturale, generare e sintetizzare testi e molto altro ancora. Con l'evoluzione sono emersi diversi tipi di architetture, ognuna con caratteristiche specifiche che le rendono adatte a compiti diversi.
TIPI DI RETI NEURALI ARTIFICIALI
I principali tipi di reti neurali artificiali sono:
1) Feed-forward
2) Ricorrenti
3) Convoluzionali
4) Generative Adversariali
5) Trasformatori
1. Reti Neurali Feed-forward
Sono le reti più semplici, con un flusso di informazioni che va solo in avanti, da uno strato all'altro. Può contenere anche molti strati interni.
Apprendimento: supervisionato.
Queste reti vengono addestrate su un dataset di esempi, ognuno dei quali è composto da un input e dal corrispondente output corretto (etichetta). La rete cerca quindi di "imparare" la relazione tra gli input e gli output, in modo da poter prevedere l'output corretto per nuovi input mai visti prima.
Come avviene l'apprendimento in una rete feed-forward?
Inizializzazione: i pesi delle connessioni tra i neuroni vengono inizializzati casualmente.
Propagazione in avanti: l'input viene propagato attraverso la rete, strato per strato, fino a raggiungere l'output.
Calcolo dell'errore: si calcola la differenza tra l'output previsto dalla rete e l'output corretto (indicato nel dataset).
Backpropagation: l'errore viene propagato all'indietro attraverso la rete, aggiornando i pesi delle connessioni in modo da ridurre l'errore complessivo.
Ripetizione: i passi 2, 3 e 4 vengono ripetuti per molte iterazioni (epiche), fino a quando l'errore si riduce al di sotto di una soglia prefissata.
Perché l'apprendimento supervisionato è adatto alle reti feed-forward?
La struttura feedforward, con il flusso di informazioni che va in una sola direzione, si adatta bene all'apprendimento supervisionato, dove si vuole mappare un input a un output specifico. Gli algoritmi di apprendimento supervisionato, come la retropropagazione dell'errore, sono relativamente semplici da implementare.
2. Reti Neurali Ricorrenti (RNN)
Queste reti neurali hanno connessioni cicliche che permettono di mantenere uno stato interno, rendendole adatte a sequenze di dati. La caratteristica distintiva delle RNN è la presenza di connessioni ricorrenti, che consentono alla rete di "ricordare" informazioni passate, creando una sorta di memoria a breve termine. Questo le rende particolarmente adatte a lavorare con dati sequenziali, dove l'ordine degli elementi è importante.
Le loro caratteristiche le rendono adatte all'elaborazione del linguaggio naturale (NLP), alla generazione di testo e alle previsioni di serie temporali.
Le RNN di base presentano alcune limitazioni, come il vanishing/exploding gradient problem. Per ovviare a questi problemi, sono state sviluppate diverse varianti:
LSTM (Long Short-Term Memory): Reti Neurali Ricorrenti a Lungo Termine. Le LSTM sono dotate di porte che controllano il flusso di informazioni, consentendo di apprendere dipendenze a lungo termine. Sono ampiamente utilizzate per compiti come la traduzione automatica e il riconoscimento vocale.
GRU (Gated Recurrent Unit): Unità Ricorrente Recintata. Sono simili alle LSTM, ma con una struttura più semplice, le GRU sono altrettanto efficaci nel catturare dipendenze a lungo termine.
Bidirectional RNN: Le BRNN elaborano le sequenze in entrambe le direzioni (da sinistra a destra e da destra a sinistra), consentendo di sfruttare informazioni sia dal passato che dal futuro.
Encoder-Decoder: Questa architettura è composta da due parti: un encoder che mappa la sequenza di input in uno spazio vettoriale e un decoder che genera la sequenza di output a partire da questo spazio. È comunemente utilizzata per la traduzione automatica e la generazione di testo.
Gli Encoder-Decoder sono stati precursori dei Transformer.
Struttura: Sono varianti delle RNN, progettate per affrontare il problema del vanishing gradient, che limita la capacità delle RNN di apprendere dipendenze a lungo termine.
Utilizzo: Simile alle RNN, ma più efficaci per sequenze lunghe.
Apprendimento: gli RNN possono utilizzare tutti e tre i tipi di apprendimento: supervisionato, non supervisionato e per rinforzo, a seconda dell'obiettivo specifico dell'applicazione.
Apprendimento supervisionato
In questo caso, le RNN vengono addestrate su sequenze di dati per le quali è nota la sequenza di output corretta (Etichette).
Ad esempio, in un sistema di riconoscimento vocale, l'input potrebbe essere un'onda sonora e l'output corrispondente la trascrizione testuale.
Esempi:
Traduzione automatica: Tradurre una frase da una lingua all'altra.
Riconoscimento del parlato: Trascrivere un'onda sonora in testo.
Analisi del sentiment: Determinare se un testo esprime un'opinione positiva, negativa o neutrale.
Apprendimento non supervisionato
Le RNN vengono addestrate su grandi quantità di dati senza etichette, cercando di trovare pattern e strutture nascoste nelle sequenze.
Esempi:
Generazione di testo: Creare testi nuovi e coerenti, come poesie o script.
Compressione di sequenze: Ridurre la dimensione delle sequenze mantenendone le informazioni più importanti.
Anomaly detection: Identificare anomalie o eventi insoliti in sequenze di dati.
Apprendimento per rinforzo
Le RNN apprendono interagendo con un ambiente, ricevendo feedback positivi o negativi a seconda delle azioni intraprese.
Esempi:
Giochi: Imparare a giocare a giochi come il Go o gli scacchi.
Robotica: Controllare robot per eseguire compiti complessi.
Sistemi di raccomandazione: Suggerire prodotti o contenuti agli utenti in base alle loro interazioni.
Durante l'addestramento di reti neurali profonde, specialmente quelle ricorrenti, si può verificare un fenomeno noto come vanishing/exploding gradient. Questo problema si verifica durante la retropropagazione dell'errore, quando i gradienti (ovvero le misure di quanto i pesi della rete debbano essere aggiornati) diventano troppo piccoli (vanishing) o troppo grandi (exploding).
Vanishing gradient: I gradienti si avvicinano a zero, rendendo difficile l'aggiornamento dei pesi degli strati iniziali della rete. Di conseguenza, questi strati apprendono molto lentamente o addirittura non apprendono affatto.
Exploding gradient: I gradienti diventano estremamente grandi, rendendo instabile l'addestramento e causando oscillazioni nei pesi.
Perché le RNN sono particolarmente adatte alle sequenze?
La caratteristica distintiva delle RNN è la presenza di connessioni ricorrenti, che consentono alla rete di "ricordare" informazioni passate. Questo le rende particolarmente adatte a lavorare con dati sequenziali, dove l'ordine degli elementi è importante.
3. Reti Neurali Convoluzionali (CNN)
Le reti neurali Convoluzionali utilizzano filtri per estrarre caratteristiche locali dai dati, rendendole ideali per l'elaborazione di immagini e segnali audio. A differenza delle RNN, che sono più adatte per sequenze temporali, le CNN sfruttano una struttura particolare per estrarre caratteristiche rilevanti dalle immagini.
Riconoscimento di immagini, segmentazione di immagini, elaborazione del linguaggio naturale (NLP).
Esempi: LeNet, AlexNet, VGG.
Kernel: Matrice di numeri che agisce come un filtro per estrarre caratteristiche.
Convoluzione: Operazione che applica un kernel all'immagine di input.
Pooling: Operazione che riduce la dimensione spaziale delle feature map.
Esempi:
Riconoscimento di immagini: Sono particolarmente adatte per l'analisi di immagini, come il riconoscimento facciale, la segmentazione di immagini e la classificazione di oggetti.
Elaborazione del linguaggio naturale: Possono essere utilizzate per l'analisi del sentimento, la classificazione di testi e la generazione di didascalie per immagini.
Medicina: Vengono impiegate per l'analisi di immagini mediche, come radiografie e risonanze magnetiche, per la diagnosi di malattie.
Apprendimento: le CNN utilizzano principalmente l'apprendimento supervisionato. Questo significa che vengono addestrate su un ampio dataset di immagini etichettate, dove ogni immagine è associata a una classe (es. gatto, cane, automobile).
Come funziona l'apprendimento in una CNN?
Convoluzione: Il primo passo è la convoluzione. Un filtro (o kernel) viene applicato sull'immagine, scorrendo pixel per pixel. Questo processo crea una feature map, che evidenzia determinate caratteristiche dell'immagine (es. bordi, texture).
Pooling: Successivamente, viene applicata una funzione di pooling, come il max pooling o il average pooling, per ridurre la dimensionalità della feature map e estrarre le caratteristiche più importanti.
Appiattimento: La feature map viene appiattita in un vettore, che viene poi inserito in uno o più livelli completamente connessi (fully connected layers).
Classificazione: I livelli completamente connessi utilizzano l'apprendimento supervisionato per classificare l'immagine in base alle caratteristiche estratte.
Perché l'apprendimento supervisionato è ideale per le CNN?
Estrazione di feature: Le CNN sono eccellenti nell'estrarre automaticamente feature gerarchiche dalle immagini, senza la necessità di ingegnerizzare manualmente i descrittori.
Invarianza alle trasformazioni: Grazie alle operazioni di convoluzione e pooling, le CNN sono in grado di riconoscere oggetti indipendentemente dalla loro posizione, scala o rotazione nell'immagine.
Grandi dataset: L'apprendimento supervisionato richiede grandi quantità di dati etichettati, che sono disponibili in abbondanza nel campo della visione artificiale.
4. Reti Neurali Generative Adversariali (GAN)
Le GAN rappresentano un importante passo avanti nell'evoluzione dell'IA generativa, sono composte da due reti neurali che competono tra loro: un generatore e un discriminatore, vengono utilizzate per generare dati sintetici (immagini, musica) e manipolare immagini, come mostrano gli esempi seguenti:
Generazione di immagini: sono utilizzate per creare immagini fotorealistiche di oggetti o persone che non esistono.
Generazione di dati sintetici: possono essere utilizzate per generare dati sintetici per l'addestramento di altri modelli, come immagini mediche o dati finanziari.
Trasferimento dello stile: possono essere utilizzate per trasferire lo stile di un'immagine ad un'altra, come trasformare una foto in un dipinto.
Esitono molte varianti delle GAN tra queste le più conosciute sono le architetture: DCGAN e StyleGAN.
DCGAN (Deep Convolutional GAN)
Utilizza principalmente convoluzioni e deconvoluzioni (o trasposte convoluzionali) per estrarre e generare caratteristiche dalle immagini. È un modello più generico, adatto a una vasta gamma di applicazioni di generazione di immagini. Può essere utilizzato per generare immagini di oggetti, scene, volti, ecc.
Ha una struttura semplice, facile da implementare e addestrare, ma non può produrre immagini con artefatti e meno dettagliate rispetto a modelli più avanzati.
StyleGAN
L'architettura è basata su DCGAN, ma introduce una serie di modifiche per migliorare la qualità delle immagini generate. Utilizza un'architettura a più livelli che permette di controllare in modo più preciso le caratteristiche delle immagini. Specializzata nella generazione di immagini fotorealistiche, in particolare di volti umani; le immagini generate sono di altissima qualità, con un controllo preciso sulle caratteristiche stilistiche e di identità.
E' più complessa da implementare e addestrare rispetto a DCGAN e richiede maggiori risorse computazionali.
In sintesi:
Le architetture DCGAN offrono un modello generico per generare immagini di diverse tipologie e non hai bisogno di una qualità estrema, mentre quelle StyleGAN permettono di generare immagini di altissima qualità, in particolare volti umani, se hai a disposizione risorse computazionali sufficienti.
DCGAN è un punto di partenza solido per chi si avvicina alle GAN, StyleGAN rappresenta lo stato dell'arte nella generazione di immagini fotorealistiche.
Apprendimento: non supervisionato, ma con una dinamica competitiva molto particolare.
A differenza dell'apprendimento supervisionato, dove ogni esempio di addestramento ha un'etichetta che indica la classe corretta, nelle GAN non ci sono etichette. Il generatore crea nuovi dati da solo, e il discriminatore deve solo determinare se un dato è reale o falso.
Le GAN imparano a generare nuovi dati plausibili osservando la distribuzione dei dati di addestramento, attraverso una dinamica competitiva.
Le GAN sono composte da due reti neurali: un generatore e un discriminatore; la prima creare nuovi dati (es. immagini, testi) che siano il più possibile indistinguibili dai dati reali, la seconda distinguere tra i dati reali e quelli generati dal generatore cercando di classificarle correttamente. Entrambi i modelli vengono aggiornati attraverso la retropropagazione dell'errore. Il generatore cerca di ingannare il discriminatore, mentre il discriminatore cerca di diventare sempre più bravo a distinguere i dati reali da quelli falsi. L'addestramento continua fino a raggiungere un equilibrio, dove il generatore è in grado di creare dati così realistici che il discriminatore non riesce più a distinguerli dai dati reali.
Perché è così speciali le reti neurali GAN?
Le GAN sono in grado di generare dati nuovi e originali, aprendo la porta a numerose applicazioni creative, come la generazione di immagini artistiche, la creazione di video realistici e la sintesi vocale. Trovano applicazione in molti campi, dalla visione artificiale al trattamento del linguaggio naturale, dalla generazione di dati sintetici alla modellazione di sistemi complessi.
5. Transformer
L'ultima forntiera delle reti neurali artificiali, sono i transformer, reti basate su un meccanismo di attenzione che permettono di pesare l'importanza di diverse parti dell'input, sono particolarmente efficaci per l'elaborazione del linguaggio naturale.
I modelli di questo tipo più conosciuti sono: GPT, BERT, T5.
GPT (Generative Pre-trained Transformer)
La famiglia di modelli GPT, sviluppata da OpenAI, è nota per la sua capacità di generare testo di alta qualità e coerente. GPT-3, ad esempio, è uno dei modelli linguistici più grandi e potenti al mondo.
BERT (Bidirectional Encoder Representations from Transformers)
Sviluppato da Google, BERT è un modello bidirezionale pre-addestrato che ha ottenuto risultati eccellenti in numerosi compiti di NLP.
T5 (Text-to-Text Transfer Transformer)
Un altro modello sviluppato da Google, T5 unifica diversi compiti di NLP in un unico framework di trasformazione testo-testo.
L'immagine seguente rappresenta l'architettura di base di un modello transformer. Si focalizza sulla struttura encoder-decoder che è tipica per compiti come la traduzione automatica neurale (NMT).
Encoder
Embedding: la sequenza di input (es. una frase in una lingua sorgente) viene prima convertita in una rappresentazione numerica, chiamata embedding. Questa rappresentazione cattura le informazioni semantiche e sintattiche delle parole.
Positional Encoding: vengono aggiunte informazioni sulla posizione delle parole all'interno della sequenza. Questo è cruciale perché i Transformer non hanno un concetto intrinseco di sequenzialità.
Multi-Head Attention: Questo è il cuore dei Transformer. Consente al modello di pesare l'importanza di diverse parti dell'input quando genera l'output. Ogni "testa" di attenzione si focalizza su aspetti diversi della sequenza.
Feed Forward: Un semplice layer di rete neurale che applica una trasformazione non lineare alle rappresentazioni.
Add & Norm: una combinazione di un'operazione di somma e una normalizzazione layer-wise. Serve a stabilizzare l'addestramento e migliorare le prestazioni.
Decoder
Embedding e Positional Encoding: simili all'encoder, ma con una piccola differenza: la sequenza target viene shiftata di un passo a destra. Questo evita che il modello copi direttamente l'input.
Masked Multi-Head Attention: simile all'attenzione dell'encoder, ma con una maschera che impedisce al modello di "vedere" le parole future quando genera l'output.
Encoder-Decoder Attention: permette al decoder di concentrarsi sulle parti rilevanti dell'input dell'encoder.
Feed Forward e Add & Norm: stessi componenti dell'encoder.
Softmax: Produce una distribuzione di probabilità sulle parole del vocabolario. La parola con la probabilità più alta viene selezionata come output.
Flusso di informazioni
Encoder: l'encoder processa la sequenza di input, creando una rappresentazione contenitiva delle relazioni tra le parole.
Decoder: il decoder genera la sequenza di output un token alla volta, utilizzando l'informazione dall'encoder e dalle parole già generate.
Perché i transformer sono così potenti?
Il meccanismo di attenzione permette di calcolare le relazioni tra tutte le parole in parallelo, rendendo il modello più efficiente. L'attenzione permette al modello di catturare le relazioni tra parole che sono lontane tra loro nella sequenza.
I transformer possono essere applicati a una vasta gamma di compiti di NLP, dalla traduzione automatica alla generazione di testo. Rappresentano un'architettura di rete neurale che ha rivoluzionato il campo del deep learning, in particolare nel settore del linguaggio naturale.
La caratteristica distintiva dei transformer è il meccanismo di auto-attenzione. Questo meccanismo permette al modello di pesare l'importanza di diverse parti dell'input quando genera l'output.
In parole più semplici, il transformer è in grado di "capire" il contesto di una parola all'interno di una frase, considerando le parole che la precedono e quelle che la seguono.
A differenza delle reti ricorrenti (RNN) che processano le frasi in modo sequenziale, i transformer possono catturare dipendenze tra parole molto distanti nella frase, rendendoli particolarmente adatti per compiti come la traduzione automatica e la generazione di testo.
L'auto-attenzione consente al transformer di elaborare l'intera sequenza in parallelo, rendendo l'addestramento più efficiente rispetto alle RNN e CNN.
La maggior parte dei transformer utilizzati per il linguaggio naturale è composta da un encoder e un decoder. L'encoder mappa la sequenza di input in una rappresentazione latente, mentre il decoder genera la sequenza di output. Inoltre, attraverso il meccanismo del multi-head attention riescono a catturare diverse tipologie di dipendenze all'interno dei dati.
Gli strati Feed-forward neural network aggiungono la non-linearità al modello, permettendo di estrarre caratteristiche più complesse, dimostrando di ottenere prestazioni superiori alle reti neurali tradizionali in numerosi compiti di NLP, come la traduzione automatica, la generazione di testo, la risposta a domande e la comprensione del linguaggio naturale. Inoltre, l'architettura dei transformer è molto versatile e può essere applicata a una vasta gamma di compiti, oltre al linguaggio naturale.
I transformer, attraverso un'attività di fine-tuning, possono essere addestrati su grandi quantità di dati, consentendo di creare modelli sempre più potenti e sofisticati.
Nel prossimo articolo vi parlerò dell'Intelligenza Artificiale Generativa e cosa cambia.
1.Intelligenza Artificiale: se la conosci non la temi
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni
3.Intelligenza Artificiale: le reti neurali artificiali
- Abiti in Campania?
- Sei diplomato in ambito contabile, economico o amministrativo?
- Sei alla ricerca di un percorso di formazione gratuito perché vuoi acquisire competenze in amministrazione e contabilità, con un focus sulla piattaforma SAP?
Non perdere questa opportunità, il 18 novembre, presso la "Skill Factory", l'Academy delle professioni digitali, in collaborazione con Keytech - SAP S/4® Solution Operations, parte il corso PAR GOL 10778 finanziato dalla Regione Campania:
📚 𝗗𝗲𝘁𝘁𝗮𝗴𝗹𝗶 𝗱𝗲𝗹 𝗰𝗼𝗿𝘀𝗼:
- 210 ore di formazione online (teoria/laboratorio: dal lunedì al venerdì, dalle 9:30 alle 13:30 e dalle 14:30 alle 16:30)
- 110 ore di tirocinio in presenza presso l'azienda Keytech di Napoli (8 ore al giorno, dal lunedì al venerdì)
🎯 𝗥𝗲𝗾𝘂𝗶𝘀𝗶𝘁𝗶: Diploma o Laurea in Contabilità/Economia o Status di disoccupazione o inoccupazione
Al termine del corso, otterrai la 𝗾𝘂𝗮𝗹𝗶𝗳𝗶𝗰𝗮 𝗽𝗿𝗼𝗳𝗲𝘀𝘀𝗶𝗼𝗻𝗮𝗹𝗲 𝗘𝗤𝗙𝟱, riconosciuta a livello internazionale.
I posti sono limitati! Invia subito il tuo CV a recruiting@skillfactory.it o contattaci ai numeri:
- 3270870141
- 08118181361
Per maggiori dettagli sui corsi PAR GOL, visita il nostro sito: www.skillfactory.it
3.Intelligenza Artificiale: le reti neurali artificiali
Gino Visciano |
Skill Factory - 20/10/2024 11:55:49 | in Home
In questa lezione parleremo di reti neurali artificiali, i modelli computazionali ispirati alla struttura e al funzionamento delle reti neurali biologiche presenti nel nostro cervello. Questi modelli matematici e statistici sono importanti perché sono la parte fondamentale degli LLM, la mente utilizzata da tutti gli strumenti d'Intelligenza Artificiale.
L'area dell'Intelligenza Artificiale che si occupa di apprendimento delle macchine è quella del Machine Learning, in quest'area il settore che si occupa di apprendimento profondo attraverso l'uso delle reti neurali artificiali, è il "Deep Learning".
Il termine "profondo" si riferisce all'architettura delle reti neurali, composte da uno strato esterno, chiamato di input, molti strati nascosti, composti da neuroni artificiali, chiamati anche nodi e uno strato di output.
Maggiore è il numero di strati interni (nodi verdi), maggiore è la profondità della rete.
LA DIFFUSIONE DEL DEEP LEARNING
Le prime reti neurali artificiali sono apparse tra gli anni 50 e 60, ma non hanno avuto una grande diffusione per mancanza di potenza computazionale e perché non c'erano ancora algoritmi capaci di addestrarle in modo adeguato.
A favorire la grande diffusione del Deep Learning e delle reti neurali artificiali, tra gli anni '80 e gli anni '90, sono stati gli eventi seguenti:
1) La grande disponibilità di dati in forma digitale, dopo la nascita di Internet;
2) L'aumento della capacità di calcolo, dopo che alla fine degli anni '90, NVIDIA ha lanciato le GPU (Graphics Processing Unit – Unità di elaborazione grafica), progettate per accelerare la creazione di immagini;
3) La grande disponibilità di spazio su cui archiviare dati in forma digitale, dopo la diffusione del Cloud computing;
4) I grandi progressi fatti nel campo degli algoritmi di addestramento, come ad esempio quelli di backpropagation.
- guida autonoma;
- sorveglianza;
- ricerca medica;
- e-commerce.
Clicca qui per accedere al sito www.image-net.org
Tutto questo diventa possibile perché le macchine, attraverso il Deep Learning, riescono a svolgere le seguenti attività:
- Classificazione immagini;
- Riconoscimento facciale;
- Localizzazione di oggetti;
- Generazione d'immagini;
- Segmentazione semantica.
COME FUNZIONANO LE RETI NEURALI ARTIFICIALI
Una rete neurale artificiale in pratica è un modello computazionale, che esegue operazioni e funzioni, in base agli input ricevuti, capaci di simulare l'apprendimento del cervello umano.
Il funzionamento di questo modello matematico è garantito da mini-processori, chiamati neuroni artificiali, che contengono funzioni di attivazione che regolano il comportamento del modello.
L'interconnessione tra i neuroni, si comporta come un circuito elettrico complesso, capace di apprendere i contenuti con cui viene addestrato.
La rivoluzione delle reti neurali sta nel fatto che questi modelli sono capaci di fare previsioni non lineari, per questo motivo riescono a gestire la complessità dei linguaggi naturali o della classificazione delle immagini.
Anche l'analisi lineare permette di fare previsioni, ma meno complesse, come ad esempio: la previsione dei prezzi, la valutazione del rischio di credito, la previsione delle vendite, la segmentazione dei clienti, la predizione delle malattie, l'analisi delle relazioni sociali.
Ricordate che quando parliamo di previsioni, siamo sempre nel campo della statistica e del calcolo delle probabilità; quindi, anche le risposte degli LLM non sono mai precise, ma sono sempre basate sulla previsione più probabile.
In sintesi, possiamo dire che Il comportamento di una rete neurale artificiale è definito da:
- Dataset di dati: grandi quantità di dati acquisiti sotto forma di numeri durante la fase di addestramento;
- Un algoritmo di addestramento: un algoritmo avanzato come il backpropagation, che attraverso una funzione di perdita misura il livello di errore della rete neurale e ottimizza i parametri per migliorare le prestazioni del modello;
- Neuroni artificiali: nodi organizzati a strati nascosti, che attraverso funzioni di attivazione si comportano come mini-processori in grado di generare o no un output in base all'input ricevuto; grazie ai neuroni artificiali e al tipo di funzioni di attivazione associata, il modello può fare previsioni lineari oppure previsioni non lineari.
- Parametri: numeri, chiamati pesi o bias, che regolano il comportamento dei neuroni artificiali della rete neurale, con l'obiettivo di ridurre gli errori di previsione e migliorare le prestazioni della rete. Questi valori vengono ottimizzati attraverso iterazioni continue dall'algoritmo di addestramento e dalla funzione di perdita associata.
Per fare un'analogia, dovete immaginare una rete neurale come a un'orchestra. Ogni musicista (neurone) può suonare o non suonare delle note, ma è l'insieme delle note suonate da tutti i musicisti che crea la melodia (previsione o risposta). Nessun singolo musicista "conosce" la melodia intera, ma la melodia emerge dalla loro collaborazione. Per raggiungere questo obiettivo vengono fatte tante prova e durante ogni prova, con l'aiuto di un maestro (l'algoritmo di addestramento), ciascun musicista corregge le sue note attraverso l'uso dei parametri.
In una rete neurale maggiore è il numero di parametri, tanto maggiori sono le prestazioni e la potenza dell'LLM associato.
ALGORITMI DI BACKPROPAGATION
Gli algoritmi di backpropagation sono fondamentali per l'addestramento delle reti neurali artificiali, perché attraverso una funzione di perdita riescono a misura la discrepanza tra le predizioni del modello e i valori reali. In altre parole, l'algoritmo è capace di quantificare "quanto sbaglia" il modello; questo permette di apportare correzioni per migliorare le prestazioni del modello nel tempo.
Le funzioni di perdita sono un componente essenziale per l'addestramento delle reti neurali artificiali, perché, attraverso un apprendimento profondo, permettono alla rete di minimizzare gli errori fatti sulle previsioni o sulle risposte, facendo diventare la rete sempre più precisa.
L'intenso addestramento delle reti neurali, attraverso iterazioni continue (epiche), permette agli algoritmi di backpropagation di tarare sempre di più i parametri che servono alla rete per diventare sempre più precisa, come una persona che man mano che ripete una lezione diventa sempre più brava.
In sintesi, i parametri di una rete neurale sono i valori numerici che la rete "impara" durante l'addestramento e che determinano il successo o meno delle sue previsioni.
Le informazioni fornite in input ad una rete neurale, vengono convertite in numeri ad esempio a, b, c.
Successivamente ciascun numero viene moltiplicato per un peso specifico, ad esempio:
1. a * p1
2. b * p2
3. c * p3
La somma dei risultati delle moltiplicazioni fornisce la somma ponderata:
somma ponderata = (a * p1) + (b * p2) + (c * p3)
Il risultato della somma ponderata viene passato alla funzione di attivazione che decide se attivare o meno il neurone attraverso un valore di output. Se verrà generato un nuovo valore di output, diventerà l'input del prossimo neurone dello strato più interno o corrisponderà l'output finale.
Durante l'addestramento, i pesi vengono aggiornati continuamente in modo da regolare il comportamento dei neuroni e minimizzare l'errore tra le previsioni del modello e i valori reali.
Il bias è un valore di correzione, che può essere aggiunto alla somma ponderata, come mostra l'esempio seguente:
somma ponderata = (a * p1) + (b * p2) + (c * p3) + bias.
Lo scopo è quello di rendere ancora più preciso il valore di input fornito alla funzione di attivazione per ottimizzare il comportamento del neurone.
I NEURONI ARTIFICIALI
Per capire il funzionamento delle reti neurali artificiali dobbiamo capire che cosa sono i neuroni artificiali.
Il primo neurone artificiale è stato creato da Warren McCulloch e Walter Pitts nel 1943.
Il neurone di McCulloch-Pitts era estremamente semplice rispetto ai modelli di neuroni artificiali utilizzati oggi nelle reti neurali artificiali (ANN, Artificial Neural Networks). Si basava su una funzione di soglia: il neurone attivava un segnale di output solo se la somma dei segnali di input superava una determinata soglia.
La funzione di soglia era un meccanismo binario. Se la somma ponderata degli input superava una certa soglia, il neurone si attivava; altrimenti, rimaneva inattivo. Era un po' come un interruttore: acceso o spento.
Questo modello rappresentò uno dei primi tentativi di simulare il funzionamento del cervello umano utilizzando sistemi matematici non lineari, ponendo le basi per lo sviluppo delle reti neurali artificiali moderne e, più in generale, dell'intelligenza artificiale.
Nei neuroni delle reti neurali moderne, la semplice funzione di soglia è stata sostituita con funzioni di attivazione più sofisticate; queste funzioni rendono questi modelli di apprendimento molto più potenti ed efficaci.
La funzioni di attivazione più comuni sono:
Sigmoide: produce un output compreso tra 0 e 1.
Tanh (Tangente iperbolica): simile alla sigmoide, ma l'output è compreso tra -1 e 1.
ReLU (Rectified Linear Unit - Unità lineare rettificata): chiamata anche raddrizzatore, restituisce 0 per input negativi e l'input stesso per input positivi.
Il neurone artificiale simula il comportamento di un neurone biologico.
I neuroni raccolgono gli impulsi (INPUT) dell'ambiente esterno attraverso i dendriti. Questi segnali energetici vengono memorizzati nel soma, sotto forma d'impulsi elettrici. il soma è corpo cellulare che contiene il nucleo del neurone e si comporta come un condensatore elettrico. Quando l'energia accumulata supera la soglia consentita, quella in eccesso, attraverso l'assone viene trasferita, in modo parallelo ai dendriti di altri neuroni.
Il passaggio dell'impulso elettrico attraverso l'assone versi i dendriti degli altri neuroni si chiama sinapsi.
Un neurone biologico ha le seguenti analogie con un neurone artificiale:
Segnali: entrambi i tipi di neuroni ricevono segnali in ingresso.
Peso dei segnali: nei neuroni artificiali, i segnali hanno un peso che ne determina l'importanza; nei neuroni biologici, l'efficacia di una sinapsi (la connessione tra due neuroni) può variare, influenzando l'impatto di un segnale.
Soglia: entrambi i tipi di neuroni hanno una soglia che deve essere superata per attivarsi.
Output: Il neurone artificiale produce un output numerico, mentre il neurone biologico genera un potenziale d'azione.
Funzioni: I neuroni biologici sono specializzati in diverse funzioni, a seconda della loro posizione nel cervello. Nei neuroni artificiali, la funzione di soglia è sostituita dalle funzioni di attivazione. Queste funzioni, come la funzione sigmoidale, la ReLU oppure la Tanh, offrono una maggiore flessibilità e permettono ai modelli di apprendere informazioni più complesse. Il concetto di base rimane lo stesso: c'è un valore di soglia che determina se il neurone si attiva o meno; la collaborazione tra tutti neuroni della rete, e il loro stato determina la qualità della predizione.
Le funzioni di attivazione sono importanti perché determinano la linearità o la non linearità del modello.
La non linearità permette alle reti neurali di apprendere relazioni complesse tra i dati ; una rivoluzione importante rispetto ai comuni algoritmi di Machine Learning, che seguono una logica lineare.
Nelle reti neurali artificiali i neuroni artificiali sono interconnessi tra loro come un grafo e caratterizzano gli stati interni nascosti.
Gli strati nascosti, composti da neuroni artificiali, sono il cuore delle reti neurali. E' qui che avviene la maggior parte dell'elaborazione delle informazioni e dove la rete "impara" a riconoscere pattern e a prendere decisioni.
IL PERCETTRONE
Il percettrone è il "nonno" delle reti neurali, ma le architetture moderne hanno superato di gran lunga le sue capacità. Comprendere il percettrone è fondamentale per apprezzare l'evoluzione e la complessità delle reti neurali attuali. È costituito da un singolo strato di neuroni, ognuno dei quali riceve un input, calcola una somma ponderata e applica una funzione di attivazione.
Il percettrone è in grado di separare solo dati linearmente separabili. Ciò significa che non può risolvere problemi complessi che richiedono rappresentazioni non lineari.
Ha gettato le basi per lo sviluppo delle reti neurali moderne, introducendo concetti fondamentali come pesi, soglie e funzioni di attivazione.
Come si comporta un percettrone per prendere una decisione?
Immaginate che il percettrone deve decidere se un frutto è maturo o no. Ogni caratteristica del frutto (colore, dimensione, consistenza) viene valutata e a ciascuna di queste caratteristiche viene assegnato un peso. il valore del peso rappresenta l'importanza che attribuiamo a ciascuna caratteristica nel processo decisionale. Supponiamo che percettrone classifichi un frutto come maturo o acerbo in base a due caratteristiche: il colore (rosso o verde) e la dimensione (grande o piccola). Assegniamo un peso a ciascuna caratteristica e una soglia.
Caratteristiche:
Colore rosso: peso = 2
Colore verde: peso = -1
Dimensione grande: peso = 1
Dimensione piccola: peso = -1
Soglia: 1
Funzione di attivazione:
Utilizziamo una funzione a gradino: se la somma ponderata delle caratteristiche supera la soglia, il frutto viene classificato come maturo (output = 1), altrimenti come acerbo (output = 0).
Calcolo della somma ponderata:
Se il frutto è rosso e grande: 2 (rosso) + 1 (grande) = 3.
Se il frutto è verde e piccolo: -1 (verde) - 1 (piccolo) = -2.
Confronto con la soglia:
Nel primo caso, 3 > 1, quindi il frutto viene classificato come maturo.
Nel secondo caso, -2 < 1, quindi il frutto viene classificato come acerbo.
Interpretazione dei pesi e della soglia:
Pesi positivi: Indicano che una caratteristica aumenta la probabilità che il frutto sia maturo.
Pesi negativi: Indicano che una caratteristica diminuisce la probabilità che il frutto sia maturo.
Soglia: Rappresenta il valore limite oltre il quale il percettrone si attiva e classifica il frutto come maturo.
In sintesi:
I pesi definiscono l'importanza relativa di ciascuna caratteristica nell'influenzare la decisione finale.
La soglia determina il punto di "taglio" tra le due classi (maturo/acerbo).
La funzione di attivazione trasforma la somma ponderata in una decisione binaria.
TIPI DI RETI NEURALI ARTIFICIALI
I principali tipi di reti neurali artificiali sono:
1) Feed-forward
2) Ricorrenti
3) Convoluzionali
4) Generative Adversariali
5) Trasformatori
Nel prossimo articolo vi parlerò delle differenze e in quali campi vengono impiegati.
1.Intelligenza Artificiale: se la conosci non la temi
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni
4.Intelligenza Artificiale: tipi di reti neurali artificiali
- Abiti in Campania?
- Sei diplomato in ambito contabile, economico o amministrativo?
- Sei alla ricerca di un percorso di formazione gratuito perché vuoi acquisire competenze in amministrazione e contabilità, con un focus sulla piattaforma SAP?
Non perdere questa opportunità, il 18 novembre, presso la "Skill Factory", l'Academy delle professioni digitali, in collaborazione con Keytech - SAP S/4® Solution Operations, parte il corso PAR GOL 10778 finanziato dalla Regione Campania:
📚 𝗗𝗲𝘁𝘁𝗮𝗴𝗹𝗶 𝗱𝗲𝗹 𝗰𝗼𝗿𝘀𝗼:
- 210 ore di formazione online (teoria/laboratorio: dal lunedì al venerdì, dalle 9:30 alle 13:30 e dalle 14:30 alle 16:30)
- 110 ore di tirocinio in presenza presso l'azienda Keytech di Napoli (8 ore al giorno, dal lunedì al venerdì)
🎯 𝗥𝗲𝗾𝘂𝗶𝘀𝗶𝘁𝗶: Diploma o Laurea in Contabilità/Economia o Status di disoccupazione o inoccupazione
Al termine del corso, otterrai la 𝗾𝘂𝗮𝗹𝗶𝗳𝗶𝗰𝗮 𝗽𝗿𝗼𝗳𝗲𝘀𝘀𝗶𝗼𝗻𝗮𝗹𝗲 𝗘𝗤𝗙𝟱, riconosciuta a livello internazionale.
I posti sono limitati! Invia subito il tuo CV a recruiting@skillfactory.it o contattaci ai numeri:
- 3270870141
- 08118181361
Per maggiori dettagli sui corsi PAR GOL, visita il nostro sito: www.skillfactory.it
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni (LLM)
Gino Visciano |
Skill Factory - 11/10/2024 20:02:22 | in Home
Fino a qualche tempo fa le macchine potevano svolgere compiti solo se venivano programmate. Oggi il paradigma è cambiato, perché le macchine sono capaci di apprendere e risolvere i problemi da sole, per questo motivo parliamo di "Intelligenza Artificiale".
Le macchine si sono evolute al punto che riescono a comprendere il linguaggio naturale (NLP - Natural Language Processing). Per uno come me che ha iniziato a programmare le macchine negli anni '80 con l'Assembler, un linguaggio artificiale mnemonico, molto simile al linguaggio delle macchine, fatto di lunghe sequenze di numeri 1 e numeri 0, vedere oggi macchine che eseguono comandi o rispondono a domande complesse elaborando il linguaggio naturale rappresenta un passo avanti notevole, impensabile fino a qualche anno fa.
Il settore dell'IA che si occupa dell'apprendimento delle macchine si chiama "Machine Learning". Gli algoritmi di ML permettono alle macchine di apprende grandi quantità di dati, proprio come fanno gli uomini quando studiano.
Un delle aree più avanzata del Machine Learning è quella del Deep Learning, che si occupa dell'apprendimento delle macchine attraverso algoritmi avanzati, anche detti algoritmi di apprendimento profondo, questi modelli sono così evoluti che si comportano come reti neurali artificiali.
Il risultato dei dati raccolti durante la fase di addestramento di una macchina attraverso algoritmi di tipo Deep Learning sono gli LLM (Large Language Model) o modelli linguistici di grandi dimensioni.
Potete immaginare un LLM come un computer super intelligente che ha letto tantissimi libri, articoli e pagine web, grazie a questo è capace di comprendere il linguaggio naturale, rispondere alle domande, tradurre testi in molte lingue, scrivere testi e generare immagini, musica e video.
Attenti a non fare l'errore di credere che gli LLM siano dei database in cui si trovano domande e risposte frequenti, come avviene per le FAQ (Frequently Asked Questions); essi contengono solo le informazioni per creare le risposte, che vengono generate ogni volta dall'inferenza.
COME FUNZIONA L'INFERENZA?
L'inferenza è il processo attraverso cui si utilizzano le conoscenze dell'LLM per rispondere alle domande o risolvere problemi. L'inferenza si basa su algoritmi e modelli matematici che permettono all'LLM di prendere decisioni più probabili.
L'LLM non dà mai una risposta con una certezza assoluta. Le sue risposte sono sempre basate sulla probabilità. Il modello sceglie sempre la sequenza di parole più probabile nel contesto dato. Più dati ha a disposizione, più accurate saranno le risposte, le previsioni o le soluzioni.
Le fasi del processo d'inferenza sono le seguenti:
1) Input: si fornisce all'LLM un input, sotto forma di domanda.
2) Elaborazione: l'LLM analizza l'input, cercando di capire il contesto, il significato e le intenzioni.
3) Generazione: l'LLM utilizza i modelli linguistici che ha appreso durante l'addestramento per generare una risposta o un testo che sia coerente con l'input e con le informazioni che ha a disposizione.
Gli LLM sono strumenti potenti, ma è importante evidenziarne subito i limiti:
- Non pensano come gli umani: gli LLM non capiscono veramente il significato delle parole, ma seguono delle regole che hanno imparato.
- Possono sbagliare: a volte gli LLM possono dare risposte sbagliate o senza senso, soprattutto se le domande sono molto complesse. In questo caso parliamo di allucinazioni.
- Dipendono dai dati: le risposte degli LLM vengono create in base ai dati con cui sono stati addestrati; quindi, potrebbero evidenziare dei pregiudizi che dipendono dal tipo d'informazioni acquisite durante l'apprendimento. Naturalmente questo fenomeno, chiamato BIAS, può creare delle implicazioni etiche.
COME VENGONO ADDESTRATI GLI LLM
L'addestramento degli LLM è un processo complesso, che richiede tempo e una notevole quantità di risorse.
L'addestramento può essere: supervisionato, non supervisionato e per rinforzo.
Nel caso degli LLM:
Addestramento supervisionato: utilizziamo enormi quantità di testo, dove ogni frase o paragrafo è etichettato con un'informazione specifica (es: traduzione, risposta a una domanda). Il modello impara a generare testo simile a quello di esempio.
Addestramento non supervisionato: forniamo al modello grandi quantità di testo senza etichette. Il modello impara a prevedere la parola successiva in una frase, a completare frasi o a tradurre testi, identificando le relazioni tra le parole e le frasi.
Apprendimento per rinforzo: il modello viene addestrato a svolgere un compito specifico (es: giocare a scacchi) e riceve un feedback positivo o negativo in base ai risultati ottenuti.
Il primo passo per addestrare un LLM è la raccolta dei dati che vengono puliti, formattati e pre-elaborati per rimuovere errori, incoerenze e informazioni non pertinenti.
I testi raccolti da internet, libri, articoli, codice e altre fonti, vengono divisi in unità più piccole chiamate token, che possono essere parole, sotto-parole o caratteri speciali.
A ogni token viene assegnato a un numero unico, creando una rappresentazione numerica del testo.
Gli LLM si basano su algoritmi avanzati o modelli, che si comportano come reti neurali artificiali, in particolare quelle chiamate "trasformatori", che sono particolarmente adatte a gestire sequenze di dati come il testo.
La potenza di un modello dipende dal numero di parametri che ha disposizione. I parametri sono numeri che vengono prodotti durante la fase di addestramento. Maggiore è il numero di parametri di un modello, migliori sono le capacità di fare previsioni o prendere decisioni. Il ruolo dei parametri, che si possono immaginare come nodi della rete neurale artificiale, è quello di mettere in relazione tra loro il maggior numero di neuroni in base ad una logica basata sul calcolo della probabilità della conoscenza.
Dovete immaginare i parametri o nodi come a delle piccole unità di calcolo (funzioni matematiche). Quando ricevono degli input (dati in ingresso), li elaborano secondo una certa funzione e producono un output (un risultato). Insieme, i nodi formano una rete complessa che permette all'algoritmo di apprendere e fare previsioni.
Tipi di nodi:
Nodi di input: sono i primi nodi della rete, quelli che ricevono i dati grezzi.
Nodi nascosti: si trovano negli strati intermedi della rete e svolgono la maggior parte del lavoro di elaborazione dei dati.
Nodi di output: sono gli ultimi nodi della rete, quelli che forniscono il risultato finale.
Come funzionano i nodi?
Ricezione degli input: ogni nodo riceve un segnale da altri nodi o dall'esterno della rete.
Calcolo: Il nodo applica una funzione matematica (funzione di attivazione) ai dati in ingresso, generando un risultato.
Trasmissione dell'output: il risultato viene trasmesso ai nodi successivi della rete.
L'organizzazione dei parametri di un modello, attraverso algoritmi di ottimizzazione, viene aggiornata continuamente in modo iterativo con l'obbiettivo di ridurre al minimo la differenza tra previsioni del modello e le risposte corrette. Per misura la differenza tra previsioni del modello e le risposte corrette, si usa una funzione matematica chiamata funzione di perdita.
L'addestramento richiede un'enorme potenza di calcolo, spesso utilizzando cluster di GPU o TPU.
Letteralmente, cluster, significa “computazione a grappolo”: un gruppo di computer collegati in rete tra loro che lavorano in parallelo utilizzando processori potentissimi e veloci specializzati nella gestione delle immagini come le GPU (Graphics Processing Unit) oppure le TPU (Tensor Processing Unit) unità di elaborazione progettate da Google specializzate nelle operazioni di Machine Learning. Sono ottimizzate per eseguire operazioni sui tensori: strutture dati multidimensionali fondamentali per le reti neurali artificiali.
Dopo l'addestramento iniziale, il modello può essere ulteriormente addestrato su dataset più piccoli e specifici per migliorare le sue prestazioni su compiti particolari, come la generazione di codice, la traduzione o la risposta a domande, questa operazione di chiama "Fine-tuning".
PRINCIPALI LLM A CONFRONTO
Anno |
Nome LLM |
Parametri |
Tipo rete neurale |
Scopo principale |
Licenza |
Azienda/Organizzazione |
2023 |
GPT-4 |
>100 miliardi |
Transformer |
Generazione di testo, comprensione, traduzione, ecc. |
Proprietario |
OpenAI |
2023 |
PaLM 2 |
Varianti |
Transformer |
Generazione di testo, comprensione, traduzione, coding |
Proprietario |
Google AI |
2023 |
LLaMA |
7B - 65B |
Transformer |
Ricerca, creazione di contenuti |
Non-commerciale |
Meta AI |
2022 |
T5 |
Varianti |
Transformer |
Molteplici compiti NLP |
Open-source |
Google AI |
2020 |
GPT-3 |
175 miliardi |
Transformer |
Generazione di testo |
Proprietario |
OpenAI |
2020 |
BART |
Varianti |
Transformer |
Generazione di testo, riassunto, traduzione |
Open-source |
Facebook AI Research |
2019 |
RoBERTa |
Varianti |
Transformer |
Comprensione del linguaggio naturale |
Open-source |
Facebook AI Research |
2018 |
BERT |
340 milioni |
Transformer |
Comprensione del linguaggio naturale |
Open-source |
Google AI |
COSA SONO I PROMPT?
I prompt sono lo strumento che ci permette di interagire con gli LLM e di sfruttarne al meglio le potenzialità. Sono il ponte tra le nostre richieste e la capacità dell'LLM di generare testi complessi e informativi. È come una chiave che ci permette di aprire le porte della creatività e dell'innovazione. Più siamo abili nel formulare i prompt, più saremo in grado di sfruttare tutto il potenziale di questi modelli linguistici.
La capacità di formulare prompt è così importante che in futuro, con la diffusione dell'Intelligenza Artificiale, la figura del creatore di prompt sarà sempre più richiesta. Il creatore di prompt non è semplicemente colui che fa domande, ma un vero e proprio ingegnere della comunicazione che, attraverso la formulazione di istruzioni precise e creative, è in grado di sfruttare al massimo le potenzialità degli LLM.
il creatore di prompt è una figura che, oltre alle sue competenze linguistiche e creative, si avvale di una serie di strumenti e tecniche per ottimizzare il processo di creazione dei prompt e ottenere i migliori risultati possibili dagli LLM.
Approfondirò sicuramente l'argomento dei creatori di prompt in uno dei miei prossimi articoli, perché è un argomento molto interessante.
CONCLUSIONI
Gli LLM sono sistemi informatici, chiamati modelli, che attraverso algoritmi di apprendimento profondo si addestrano su enormi quantità di dati.
Le informazioni raccolte vengono organizzate in uno spazio vettoriale e collegate tra loro attraverso l'uso di parametri, anche detti nodi, che utilizzano funzioni matematiche per creare una fitta rete di percorsi usati dall'inferenza per creare le risposte o le soluzioni più probabili alle domande o alle richieste formulate dai prompt.
Dopo l'addestramento gli LLM, possono essere ulteriormente specializzati attraverso una fase di fine tuning, che prevede l'apprendimento di un dataset di dati più dettagliato.
La qualità dei dati durante la fase di addestramento degli LLM è importante per evitare il problema dei pregiudizi o Bias. Un DATASET per essere di valore deve contenere una grande quantità di dati, sempre aggiornati velocemente, provenienti da fonti eterogenee e contesti differenti e le informazioni devono essere affidabili, utili e senza fake.
Gli LLM sono utilissimi nell'ambito scientifico, del lavoro, dell'educazione e dell'intrattenimento; i chatbot e assistenti virtuali sono solo la punta dell'iceberg.
Nel prossimo articolo vi parlerò di reti neurali artificiali, per capire che cosa sono e cosa ci permettono di fare.
1.Intelligenza Artificiale: se la conosci non la temi
3.Intelligenza Artificiale: le reti neurali artificiali
4.Intelligenza Artificiale: tipi di reti neurali artificiali
- Abiti in Campania?
- Sei diplomato in ambito contabile, economico o amministrativo?
- Sei alla ricerca di un percorso di formazione gratuito perché vuoi acquisire competenze in amministrazione e contabilità, con un focus sulla piattaforma SAP?
Non perdere questa opportunità, il 18 novembre, presso la "Skill Factory", l'Academy delle professioni digitali, in collaborazione con Keytech - SAP S/4® Solution Operations, parte il corso PAR GOL 10778 finanziato dalla Regione Campania:
📚 𝗗𝗲𝘁𝘁𝗮𝗴𝗹𝗶 𝗱𝗲𝗹 𝗰𝗼𝗿𝘀𝗼:
- 210 ore di formazione online (teoria/laboratorio: dal lunedì al venerdì, dalle 9:30 alle 13:30 e dalle 14:30 alle 16:30)
- 110 ore di tirocinio in presenza presso l'azienda Keytech di Napoli (8 ore al giorno, dal lunedì al venerdì)
🎯 𝗥𝗲𝗾𝘂𝗶𝘀𝗶𝘁𝗶: Diploma o Laurea in Contabilità/Economia o Status di disoccupazione o inoccupazione
Al termine del corso, otterrai la 𝗾𝘂𝗮𝗹𝗶𝗳𝗶𝗰𝗮 𝗽𝗿𝗼𝗳𝗲𝘀𝘀𝗶𝗼𝗻𝗮𝗹𝗲 𝗘𝗤𝗙𝟱, riconosciuta a livello internazionale.
I posti sono limitati! Invia subito il tuo CV a recruiting@skillfactory.it o contattaci ai numeri:
- 3270870141
- 08118181361
Per maggiori dettagli sui corsi PAR GOL, visita il nostro sito: www.skillfactory.it
1.Intelligenza Artificiale: se la conosci non la temi
Gino Visciano |
Skill Factory - 23/09/2024 08:33:01 | in Home
La storia ci ha abituati alle rivoluzioni tecnologiche, ovvero quei cambiamenti che coinvolgono tutti modificando radicalmente le nostre abitudini e i nostri comportamenti, basta fare l'esempio del telefono, della radio, della TV, del personal computer, di Internet, dei cellulari e del cloud.
Oggi stiamo vivendo la rivoluzione dell'Intelligenza Artificiale; che sia tale si capisce dal fatto che ne parlano tutti e chi non la conosce la teme.
Come le rivoluzioni precedenti, anche questa era inevitabile; il progresso è scritto nel nostro DNA e non si può fermare!
Il progresso da sempre ci ha permesso di aumentare le nostre capacità; attraverso la tecnologia muoviamo e alziamo masse enormi, ci spostiamo velocemente sulla terra, sull'acqua e nell'aria, fino a raggiungere lo spazio estremo, comunichiamo a distanza, osserviamo sia lo spazio infinito, sia i corpi infinitesimali, elaboriamo e memorizziamo enormi quantità di dati e oggi con l'Intelligenza Artificiale abbiamo aumentato anche le nostre capacità intellettuali, come ad esempio: l'apprendimento, la risoluzione di problemi, prendere decisioni, svolgere compiti, sintetizzare argomenti e creare testi, immagini e video.
Il precursore dell'idea d'Intelligenza Artificiale fu il matematico Alan Turing che, in un articolo del 1950, per la prima volta parlò di macchine intelligenti.
Nell'articolo Turing descriveva il modo per testare se una macchina era intelligente. Secondo il test una macchina (A) poteva essere considerata intelligente se il suo comportamento, osservato da un essere umano (C), fosse considerato indistinguibile da quello di una persona (B):
Il termine intelligenza artificiale (IA) è stato coniato per la prima volata nel 1955 da John McCarthy.
Nel 1956, McCarthy e altri scienziati organizzarono la conferenza “Dartmouth Summer Research Project on Artificial Intelligence”; questo evento ha dato origine alla scienza dei dati (data since).
L'idea di macchina intelligente (IA) si è potuta concretizzare solo oggi grazie ai seguenti fattori:
1) quasi tutti i dati che produciamo sono in forma digitale;
2) attraverso il cloud riusciamo a memorizzare enormi quantità di dati;
3) grazie alle GPU (Graphics Processing Unit - Unità di Elaborazione Grafica), è aumentata la potenza di calcolo;
4) l'esperienza ci ha permesso di creare algoritmi capaci di imitare il comportamento dei neuroni.
L'Intelligenza Artificiale attuale è molto lontana da quello che si racconta nei romanzi o nei film di fantascienza e non è quello che vogliono farci credere alcuni divulgatori scientifici o esperti dell'argomento; quindi, per ora, non dobbiamo temerla, anzi, al contrario penso che sia estremamente utile per tutti.
Per comprendere il progresso e le sfide attuali nell'ambito dell'Intelligenza Artificiale, è importante comprendere la differenza tra: IA Debole e IA Forte.
L'IA debole è progettata per eseguire compiti specifici e predefiniti, come:
- il riconoscimento del linguaggio naturale
- la classificazione delle immagini
- la previsione dei dati
- la generazione di testi, immagini e video
Un esempio di IA debole sono gli assistenti virtuali come Siri, Cortana o Alexa: essi possono rispondere alle domande degli utenti e compiere una serie di funzioni, ma non hanno nessuna consapevolezza di sé e non capiscono veramente ciò di cui si sta parlando.
Le macchine che riescono a fare queste cose, anche se sembrano “intelligenti”, non comprendono realmente quello che fanno e non hanno nessuna percezione del mondo o del contesto in cui stanno operando.
L'IA forte, anche conosciuta come Intelligenza Artificiale Generale (AGI - Artificial General Intelligence), rimane ancora largamente teorica e non esiste concretamente al momento. Essa dovrebbe essere in grado di eseguire qualsiasi compito intellettuale che un essere umano può fare e di avere una forma di autoconsapevolezza e comprensione del mondo.
Al momento l'IA forte resta ancora un obiettivo a lungo termine per la comunità scientifica.
Oggi gli strumenti di IA più evoluti sono gli LLM (Large Language Model - Modello linguistico di grandi dimensioni), algoritmi molto avanzati capaci di riconoscere il linguaggio naturale (NLP - Natural Language Processing) e le immagini.
Gli LLM vengono usati dai chatbot:
Chat: conversazione
Bot: robot (programma informatico)
oppure dagli assistenti AI come Siri, Cortana o Alexa per rispondere alle domande poste dagli utenti che li usano. Questi programmi nonostante sembrano intelligenti, rientrano nell'ambito dell'intelligenza artificiale debole.
Gli attuali chatbot, attraverso gli LLM, oltre a riconoscere il linguaggio naturale, riescono anche a comprendere il contenuto delle immagini e a generare testi, immagini e video di fantasia; per questo motivo parliamo anche di intelligenza artificiale generativa.
I modelli linguistici più avanzati, sono di tipo GPT (Generative Pretrained Transformer - Trasformatore Generativo Preaddestrato); utilizzano algoritmi di apprendimento profondo (Deep Learning), per generare risposte simili a quelle umane all'interno di un discorso.
I chatbot AI e gli assistenti AI più diffusi sono: ChatGPT, Zendesk, Gemini, Copilot, Claude, Perplexity AI, Jasper Chat.
Nel prossimo articolo approfondirò l'argomento degli LLM.
2.Intelligenza Artificiale: i modelli linguistici di grandi dimensioni (LLM)
3.Intelligenza Artificiale: le reti neurali artificiali
4.Intelligenza Artificiale: tipi di reti neurali artificiali
- Abiti in Campania?
- Sei diplomato in ambito contabile, economico o amministrativo?
- Sei alla ricerca di un percorso di formazione gratuito perché vuoi acquisire competenze in amministrazione e contabilità, con un focus sulla piattaforma SAP?
Non perdere questa opportunità, il 18 novembre, presso la "Skill Factory", l'Academy delle professioni digitali, in collaborazione con Keytech - SAP S/4® Solution Operations, parte il corso PAR GOL 10778 finanziato dalla Regione Campania:
📚 𝗗𝗲𝘁𝘁𝗮𝗴𝗹𝗶 𝗱𝗲𝗹 𝗰𝗼𝗿𝘀𝗼:
- 210 ore di formazione online (teoria/laboratorio: dal lunedì al venerdì, dalle 9:30 alle 13:30 e dalle 14:30 alle 16:30)
- 110 ore di tirocinio in presenza presso l'azienda Keytech di Napoli (8 ore al giorno, dal lunedì al venerdì)
🎯 𝗥𝗲𝗾𝘂𝗶𝘀𝗶𝘁𝗶: Diploma o Laurea in Contabilità/Economia o Status di disoccupazione o inoccupazione
Al termine del corso, otterrai la 𝗾𝘂𝗮𝗹𝗶𝗳𝗶𝗰𝗮 𝗽𝗿𝗼𝗳𝗲𝘀𝘀𝗶𝗼𝗻𝗮𝗹𝗲 𝗘𝗤𝗙𝟱, riconosciuta a livello internazionale.
I posti sono limitati! Invia subito il tuo CV a recruiting@skillfactory.it o contattaci ai numeri:
- 3270870141
- 08118181361
Per maggiori dettagli sui corsi PAR GOL, visita il nostro sito: www.skillfactory.it
Il 2024 è un anno bisestile. In programmazione come facciamo a capire se un anno è secolare e bisestile?
Gino Visciano |
Skill Factory - 02/03/2024 12:20:59 | in Home
Il 2024 è un anno bisestile, perché febbraio è di 29 giorni. Questo significa che il 2024 durerà 366 giorni e non 365 giorni come accade per gli anni non bisestili.
Nel calendario Gregoriano è bisestile un anno ogni 4, questa correzione è necessaria perché astronomicamente un anno solare dura circa 365,25 giorni.
Se non tenessimo conto di questa variazione, ogni 4 anni si accumulerebbe un ritardo di un giorno. I continui ritardi accumulati nel tempo, modificherebbero le date delle stagioni che corrispondono agli equinozi di primavera e autunno e i solstizi d'estate e inverno, spostandole in avanti nel tempo.
Gli anni secolari, ovvero quelli divisibili per 100, sono bisestili se oltre ad essere divisibili per 100 sono divisibili anche per 400. Quindi un anno è sicuramente bisestile se è divisibile per 400.
Ad esempio il 1600 è bisestile perché è divisibile per 400, mentre il 1700 non è bisestile perché non è divisibile per 400.
Gli anni non secolari sono bisestili solo se sono divisibili per 4.
Quindi, un programmatore, per verificare se un anno è bisestile, deve prima controllare se è secolare, in caso affermativo deve anche vedere se è divisibile per 400. Se l'anno non è secolare, per essere bisestile deve essere divisibile per 4.
Il programma Python seguente, ci permette di verificare se un anno è secolare e bisestile:
# Verifica se l'anno è bisestile
# Funzione
def tipo_anno():
try:
messaggio="L'anno "+str(v_anno.get())+" "
if v_anno.get()%100==0:
messaggio=messaggio+"è secolare e "
if v_anno.get()%400==0:
messaggio=messaggio+"bisestile."
else:
messaggio=messaggio+"non è bisestile."
else:
messaggio=messaggio+"non è secolare e "
if v_anno.get()%4==0:
messaggio=messaggio+"bisestile."
else:
messaggio=messaggio+"non è bisestile."
tk.messagebox.showinfo(title='Informazioni', message=messaggio)
except:
messaggio="Inserisci l'anno da verificare"
tk.messagebox.showinfo(title='Errore', message=messaggio)
def reset():
v_anno.set("")
# Programma
import tkinter as tk
from tkinter.messagebox import showinfo
root=tk.Tk()
root.geometry('350x100+150+150')
root.resizable(False, False)
root.title('Verifica anno secolare e bisestile')
v_anno=tk.IntVar(root,"")
lbl_anno=tk.Label(root,text="Inserisci l'anno per verificare se è secolare e bisestile").pack(pady=5)
txt_anno=tk.Entry(root, justify="right",textvariable=v_anno).pack(pady=5)
frm_button=tk.Frame(root)
btn_verifica=tk.Button(frm_button,text="VERIFICA",command=tipo_anno).pack(side=tk.LEFT)
btn_reset=tk.Button(frm_button,text="RESET",command=reset).pack(side=tk.RIGHT)
frm_button.pack()
root.mainloop()
Se sei interessato ad approfondire questo argomento, clicca qui, per imparare a creare un calendario perpetuo con Python.