Nel contesto delle applicazioni digitali, come ad esempio nei circuiti logici dei computer, i valori logici sono rappresentati in forma binaria: 1 per il vero (true) e 0 per il falso (false). Questi valori digitali corrispondono a tensioni elettriche analogiche: nel caso della logica TTL, ad esempio, il valore 1 può essere associato a una tensione di 3,5 V o superiore, mentre il valore 0 corrisponde a una tensione di 0,7 V o inferiore.
La logica proposizionale, nota anche come logica booleana, si basa proprio su questa dicotomia: 0 e 1, falso e vero. In essa, si utilizzano variabili simboliche — come A, B, P, Q — per rappresentare proposizioni che possono essere solamente vere o false, mai entrambe contemporaneamente. Ogni proposizione è un oggetto logico che può essere collegato ad altri mediante connettivi, detti anche operatori logici. Gli operatori fondamentali della logica proposizionale sono cinque: negazione, congiunzione, disgiunzione, condizionale e bicondizionale. Questi connettivi permettono di costruire formule complesse a partire da proposizioni semplici.
La negazione inverte il valore logico di una proposizione. Se A è vero, ¬A è falso, e viceversa. La congiunzione (A ∧ B) restituisce vero solo se entrambe le proposizioni sono vere. La disgiunzione (A ∨ B) è vera se almeno una delle proposizioni è vera. Il condizionale (A → B) stabilisce una relazione causale: se A è vero, allora anche B deve esserlo per rendere la formula vera; se A è falso, la formula è sempre considerata vera, indipendentemente dal valore di B. Il bicondizionale (A ↔ B) è vero se entrambi i valori logici coincidono, sia nella verità che nella falsità.
La rappresentazione dei risultati ottenuti dall’applicazione di questi operatori avviene tramite le tabelle di verità, che permettono di analizzare tutte le combinazioni possibili dei valori di input e determinare il risultato per ogni caso. Tuttavia, quando il numero di variabili aumenta, il numero di righe nella tabella cresce esponenzialmente (2ⁿ per n variabili), rendendo l’analisi complessa e difficoltosa. In questi casi si fa ricorso a sistemi di inferenza, capaci di derivare conclusioni senza enumerare esplicitamente tutte le possibilità.
Il sistema di inferenza è un meccanismo fondamentale nell’intelligenza artificiale. Esso consente di generare nuova conoscenza a partire da informazioni esistenti, applicando ragionamenti logici per trarre conclusioni, prendere decisioni o formulare previsioni. Si tratta di un’estensione della conoscenza disponibile, un andare oltre l’informazione fornita per estrarre implicazioni latenti. I sistemi di inferenza possono essere classificati in quattro categorie: deduttivi, induttivi, abduttivi e per analogia.
Il ragionamento deduttivo procede da principi generali a conclusioni specifiche, mentre l’inferenza induttiva ricava regole generali da osservazioni particolari. L’inferenza abduttiva cerca la spiegazione più probabile di un insieme di dati osservati. L’inferenza per analogia si basa sul confronto tra situazioni simili per trarre inferenze.
Uno dei sistemi di inferenza più importanti e diffusi è il sistema fuzzy (FIS – Fuzzy Inference System). Questo approccio, ispirato al ragionamento umano, non lavora con valori assoluti di verità ma con gradi di appartenenza a certe categorie (funzioni di appartenenza). I dati di input vengono “fuzzificati” e trasformati in valori linguistici (es. “buono”, “mediocre”, “eccellente”), e in base a un insieme di regole si ottiene un output fuzzy, che poi può essere “defuzzificato” per ottenere un risultato preciso.
Ad esempio, in un ristorante, un sistema fuzzy può stabilire l’ammontare della mancia da lasciare in base alla qualità del cibo e al servizio ricevuto. Supponendo tre livelli qualitativi (eccellente, medio, scarso) per entrambe le variabili, è possibile definire un set di regole: se il cibo è scadente o il servizio è pessimo, la mancia sarà bassa; se il servizio è buono, la mancia sarà media; se il cibo è ottimo e il servizio eccellente, allora la mancia sarà alta. Questo tipo di ragionamento riflette più fedelmente la realtà umana rispetto alla logica binaria classica.
A supporto di tali meccanismi, esiste un ciclo di conoscenza dell’AI, articolato in diverse fasi: raccolta dati, pre-elaborazione, costruzione della base di conoscenza, rappresentazione della conoscenza e infine inferenza. Ogni fase è essenziale per il funzionamento di un sistema intelligente. I dati raccolti vengono normalizzati e trasformati per poter essere utilizzati da algoritmi e modelli; successivamente, si passa alla rappresentazione simbolica o numerica, che rende i dati accessibili per l’inferenza automatica. È in questa fase che la conoscenza prende forma operativa.
È cruciale comprendere che, affinché un sistema sia effettivamente “intelligente”, deve poter integrare le sue conoscenze pregresse con le nuove informazioni, aggiornando in tempo reale le sue decisioni. L’abilità di inferire, generalizzare, adattarsi, e scegliere tra alternative ambigue è ciò che distingue un sistema realmente autonomo e adattivo da un semplice esecutore di regole.
Anche se la logica proposizionale e i sistemi di inferenza rappresentano le basi fondamentali, l’intelligenza artificiale moderna si evolve verso modelli sempre più complessi, capaci di apprendere autonomamente e interagire con ambienti dinamici, dove l’incertezza, la vaghezza e la multidimensionalità sono la norma. La comprensione e l’applicazione di questi concetti sono il primo passo per penetrare la struttura del pensiero artificiale.
Come si valuta e migliora il clustering non supervisionato con dati reali?
L'analisi del clustering, particolarmente nel contesto di dati reali come il dataset Diabetes.csv, richiede un approccio metodico e un’attenzione rigorosa alle logiche sottostanti i risultati prodotti. Inizialmente, si costruisce un dataset di test selezionando colonne specifiche — in questo caso, Glucose e BMI — a cui si aggiungono ulteriori osservazioni per ampliare la base dati. La procedura prevede un primo clustering applicato a un campione significativo (ad esempio, 500 osservazioni) e successivamente un secondo clustering su dati di test più piccoli, per verificare la coerenza dei gruppi formati.
Un punto cruciale è la verifica della logica con cui i cluster sono stati etichettati e distinti. La media dei valori all’interno dei cluster serve come indicatore per confermare l’orientamento corretto della separazione; ad esempio, la media del primo cluster deve risultare più alta rispetto a quella del secondo. Qualora questo principio non venga rispettato, è necessario un intervento correttivo per invertire l’assegnazione dei cluster, mantenendo così la coerenza interpretativa dei risultati.
L’assegnazione di ciascuna osservazione al cluster più idoneo si basa sulla somma delle medie delle caratteristiche considerate, con un limite superiore definito che aiuta a discriminare tra i gruppi Glucose e BMI. Questo processo, iterato riga per riga, consente di generare un vettore di cluster di test, che poi si confronta con i risultati originali per valutarne l’accuratezza.
La valutazione si concretizza nel confronto diretto tra i cluster assegnati e quelli previsti, usando un conteggio degli elementi corrispondenti per quantificare la percentuale di correttezza del clustering. Il risultato, variabile a causa della natura probabilistica del metodo, può oscillare in un intervallo significativo (ad esempio, dal 77% al 97%), ma un valore elevato indica un buon adattamento del modello.
Un semplice ma efficace meccanismo di supporto a questo processo è la funzione di inversione (reverse), che scambia i numeri dei cluster nel caso in cui la logica di etichettatura sia stata applicata in modo negativo, garantendo così che l’interpretazione dei gruppi rimanga consistente e interpretabile.
Nell’ambito dell’apprendimento non supervisionato, si affronta poi la costruzione di modelli di regole di associazione, basate su criteri come Supporto, Confidenza e Lift, che valutano la frequenza e la forza delle relazioni tra variabili. Nel caso del dataset modificato Diabetes.csv, si converte il dataset originale in un formato binario, tramite un’operazione di discretizzazione basata sulla mediana dei valori, per poter applicare efficacemente queste regole.
La regola d’associazione {Glucose, BMI} → {Outcome} diventa un esempio pratico per esplorare come la presenza simultanea di determinati valori di Glucose e BMI possa predire con quale probabilità un soggetto sia diagnosticato diabetico. In questo contesto, il Lift si distingue come un indicatore più robusto rispetto a Supporto e Confidenza perché fornisce una misura dell’efficacia reale della regola al di là delle semplici frequenze.
L’utilizzo di MATLAB per implementare queste analisi mostra sia i limiti degli strumenti predefiniti (ad esempio l’assenza di funzioni native per il clustering basato su regole di associazione) sia la necessità di costruire funzioni personalizzate che permettano di gestire la complessità reale dei dati. Il codice sviluppato a questo scopo, come Modify_Diabetes.m, rappresenta un esempio concreto di come l’ingegneria dei dati sia fondamentale per trasformare dati grezzi in informazioni interpretabili e azionabili.
È importante comprendere che la trasformazione di un dataset analogico in uno binario introduce una semplificazione che, seppur necessaria per certe tecniche, comporta la perdita di parte delle informazioni originarie e quindi una possibile riduzione di precisione. La scelta del punto di taglio (la mediana) è critica e può influenzare in modo determinante i risultati ottenuti. Inoltre, il processo di validazione del clustering non dovrebbe limitarsi alla sola percentuale di corrispondenza, ma dovrebbe includere anche analisi qualitative e l’integrazione con conoscenze di dominio per evitare interpretazioni fuorvianti.
Le regole di associazione, benché potenti per scoprire pattern nascosti nei dati, richiedono sempre un’attenta interpretazione del contesto applicativo, poiché valori elevati di Supporto o Confidenza non garantiscono necessariamente relazioni causali o significative. La valutazione combinata con il Lift e altri indicatori multidimensionali arricchisce la comprensione del fenomeno analizzato.
In sintesi, la costruzione e la valutazione di modelli di clustering e regole di associazione devono essere accompagnate da un’analisi critica delle logiche applicate, dalla gestione attenta della qualità e forma dei dati e dalla consapevolezza dei limiti degli algoritmi e degli strumenti utilizzati. Solo così è possibile trarre conclusioni robuste e utili in ambito di apprendimento non supervisionato su dati clinici o similari.
Come la distribuzione dei valori e le tecniche ibride migliorano l’apprendimento per rinforzo
Nell’ambito dell’apprendimento per rinforzo (RL), il metodo tradizionale di predire un singolo valore Q per ogni coppia stato-azione, come nel DQN, è stato superato da approcci più sofisticati che stimano direttamente la distribuzione delle ricompense future. Un esempio emblematico è l’algoritmo C51, che predice un modello a istogramma per la distribuzione di probabilità del valore Q. L’essenza del metodo risiede nell’uso dell’equazione di Bellman distribuzionale, che estende la versione classica descrivendo 𝑍 come la distribuzione delle ricompense future, anziché come uno scalare. Questa distribuzione è caratterizzata dall’interazione tra variabili aleatorie quali la ricompensa corrente 𝑅, la coppia stato-azione successiva (s′, a′) e il ritorno casuale associato 𝑍(s′,a′), formando così una distribuzione di valori che riflette non solo la media attesa, ma l’intero spettro di possibili esiti.
L’approccio QR-DQN (Quantile Regression DQN) si pone come un’alternativa o evoluzione del C51, stimando anch’esso una distribuzione dei valori tramite la regressione quantile. Invece di approssimare l’intera distribuzione con un istogramma, QR-DQN apprende una serie di quantili, ovvero valori soglia associati a probabilità cumulative specifiche. Questo consente un miglioramento della politica poiché si tiene conto di diverse possibili traiettorie di ricompensa, non limitandosi al valore medio. Dal punto di vista architetturale, il QR-DQN modifica il livello di output della rete per riflettere il numero di quantili scelti, sostituisce la funzione di perdita di Huber tradizionale con una versione quantile-Huber più robusta e adotta l’ottimizzatore Adam al posto di RMSProp per una migliore gestione dell’ottimizzazione stocastica.
Un’altra innovazione cruciale nell’apprendimento per rinforzo è rappresentata dall’algoritmo Hindsight Experience Replay (HER), che sfrutta la capacità umana di apprendere dai fallimenti immaginando obiettivi alternativi. In HER, anche se l’agente non raggiunge il goal originario durante un episodio, si rielabora la traiettoria immaginando che lo stato finale raggiunto fosse il vero obiettivo, attribuendo quindi una ricompensa positiva a tale risultato. Ciò permette di arricchire il replay buffer con esempi di successo derivati da fallimenti reali, creando implicitamente un curriculum di apprendimento in cui l’agente è sempre messo di fronte a compiti risolvibili, promuovendo così una progressione graduale verso obiettivi più complessi.
Oltre agli algoritmi singoli, esistono soluzioni ibride che combinano i vantaggi di più approcci. Deep Deterministic Policy Gradients (DDPG) utilizza un modello actor-critic per ambienti con spazi di azione continui, cercando di massimizzare la ricompensa cumulativa attesa con una politica deterministica. Soft Actor-Critic (SAC) aggiunge un ulteriore livello di sofisticazione massimizzando non solo la ricompensa attesa, ma anche l’entropia della politica, favorendo così un migliore bilanciamento tra esplorazione ed esploitazione. Twin Delayed Deep Deterministic Policy Gradients (TD3) affronta il problema della sovrastima dei valori di Q tipico del DDPG introducendo tre innovazioni principali: apprendimento di due funzioni Q per utilizzare la stima minima, aggiornamenti differiti della politica e aggiunta di rumore alle azioni target, riducendo così le politiche subottimali dovute a stime imprecise.
Questi metodi ibridi, grazie alla loro capacità di adattarsi a spazi di stato discreti o continui e di migliorare la stabilità e l’efficienza dell’apprendimento, rappresentano attualmente il cuore pulsante delle applicazioni di RL avanzato. L’implementazione di tali algoritmi è resa più accessibile e modulare da strumenti software come il Reinforcement Learning Toolbox di MATLAB, che fornisce ambienti simulativi, funzioni specifiche e interfacce visuali per sperimentare con differenti agenti e parametri. Attraverso tale toolbox, è possibile rappresentare politiche e funzioni di valore con reti neurali profonde, valutare algoritmi singoli o multipli, sperimentare con l’ottimizzazione di iperparametri e accelerare l’addestramento sfruttando risorse computazionali parallele come GPU e cluster.
Importante è comprendere che la distribuzione delle ricompense e l’adozione di politiche che considerano l’intero spettro delle possibili ricompense future, anziché la sola media, consentono un apprendimento più robusto e una gestione più efficace dell’incertezza. Inoltre, l’uso di esperienze immaginate o modificate, come in HER, permette di sfruttare appieno anche i dati derivanti da fallimenti, trasformandoli in risorse formative preziose. Infine, la convergenza verso soluzioni ibride e modulari testimonia la necessità di bilanciare esplorazione ed esploitazione, nonché di ridurre gli errori sistematici nella stima dei valori, per realizzare agenti capaci di operare in ambienti complessi e dinamici.
Come si crea e si allena un ambiente personalizzato per il controllo di un motore DC con MATLAB Reinforcement Learning App?
La costruzione di un ambiente personalizzato per il controllo di un motore a corrente continua (DC) utilizzando MATLAB Reinforcement Learning APP si basa su una serie di passaggi essenziali, che iniziano dall’assegnazione dei componenti dello stato a variabili locali. Ad esempio, si definiscono due variabili, Theta e ThetaDot, che rappresentano rispettivamente l’angolo attuale e la velocità angolare del motore. La variazione successiva dello stato, indicata come dtheta, viene calcolata tramite una legge di controllo proporzionale-derivativa (PD). L’integrazione di Euler consente di aggiornare lo stato successivo sommando la variazione calcolata allo stato corrente, rendendo così possibile una simulazione continua nel tempo.
In fase di implementazione, il valore corrente dell’angolo Theta viene controllato rispetto a una soglia prefissata. Se Theta supera questo valore limite, viene attivato un segnale di fine episodio (IsDone=true), che influenza direttamente il calcolo della ricompensa. Se l’errore di rotazione è inferiore a 2 gradi, il sistema assegna una ricompensa positiva, altrimenti applica una penalità negativa, guidando così l’agente verso comportamenti desiderabili.
L’ambiente personalizzato si costruisce programmando due funzioni principali: la funzione di reset, che inizializza lo stato, e la funzione di step, che aggiorna lo stato e restituisce l’osservazione successiva, la ricompensa e lo stato di terminazione. Il codice associato a queste funzioni viene salvato in un file script (ad esempio, motor_function_env.m), che deve risiedere nella stessa cartella per garantire la corretta individuazione da parte del compilatore MATLAB.
La definizione dell’ambiente comprende la specifica dell’osservazione (stato del motore: angolo e velocità angolare) e dello spazio d’azione, costituito dalla scelta tra due possibili tensioni applicabili al motore (-50 V o 50 V). Attraverso la funzione di sistema rlFunctionEnv(), si crea un oggetto ambiente personalizzato, che viene successivamente validato tramite validateEnvironment(). Questo controllo automatico verifica la correttezza della definizione e delle funzioni associate, segnalando eventuali errori da correggere.
Una volta definito e validato l’ambiente, si passa alla creazione di un agente tramite il Reinforcement Learning Designer. L’ambiente personalizzato viene importato nell’APP e associato all’agente, per il quale si può scegliere un algoritmo di apprendimento, come il Deep Q-Network (DQN). Si procede poi alla configurazione delle opzioni di ottimizzazione, ad esempio selezionando il metodo sgdm per il critico.
La fase di training dell’agente prevede la definizione del numero massimo di episodi, che rappresentano le iterazioni di apprendimento. Durante l’allenamento, si osservano i risultati, che se soddisfacenti, possono essere accettati e successivamente esportati nello workspace di MATLAB per usi futuri. Il salvataggio della sessione consente di conservare tutte le impostazioni e i risultati ottenuti.
Questo approccio consente di creare ambienti altamente personalizzati, ottimizzati per specifici sistemi di controllo come il motore DC, e di addestrare agenti di reinforcement learning a compiere decisioni efficaci in condizioni dinamiche. La possibilità di integrare facilmente funzioni di reset e step personalizzate, unita all’ambiente grafico e agli strumenti di analisi dell’APP, rende MATLAB uno strumento potente e flessibile per lo sviluppo di applicazioni reali nel campo del controllo intelligente.
È fondamentale comprendere che la qualità del modello matematico e delle funzioni di transizione influenza direttamente le prestazioni dell’agente. La scelta accurata dello spazio d’azione e delle specifiche di osservazione deve riflettere fedelmente la realtà fisica del sistema. Inoltre, il tuning delle ricompense deve essere bilanciato per evitare comportamenti indesiderati o stagnazioni nell’apprendimento. L’accurata validazione dell’ambiente permette di prevenire errori nascosti che possono compromettere il processo di addestramento. Infine, la modularità del sistema, attraverso l’uso di funzioni personalizzate e file script organizzati, facilita la manutenzione e l’aggiornamento di progetti complessi.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский