Il ruolo dell’intelligenza artificiale nell’automazione delle reti di telecomunicazione

A cura di Elena Baldino

I sistemi esperti

Negli anni Ottanta, gli studi in ambito AI (Artificial Intelligence) si concretizzarono nell’implementazione dei cosiddetti sistemi esperti (expert systems), cioè framework progettati per imitare le capacità decisionali degli esperti umani in un determinato ambito, detto dominio.

I sistemi esperti hanno una conoscenza che si basa su fatti e su euristiche (cioè regole logiche di ragionamento) che caratterizzano il processo decisionale degli esperti umani in un settore specifico.

Sulla dimensione e sulla qualità di questa base di conoscenza si misurano le prestazioni di un sistema esperto:

“la potenza di un programma intelligente nel risolvere un problema dipende primariamente dalla quantità e qualità di conoscenza che possiede su tale problema”. (E. A. Feigenbaum)

Il modello di sviluppo di un sistema esperto si fonda su due componenti chiave:

  • la base di conoscenza (knowledge base), un insieme di fatti e di regole del tipo if-then create da persone esperte del dominio;

  • il motore inferenziale (inference engine), uno strumento che applica le regole contenute nella base di conoscenza a problemi specifici mettendo in atto, autonomamente, procedure di inferenza: a partire dall’analisi di fatti o circostanze, arriva a una conclusione seguendo un processo induttivo o deduttivo.


Il processo di inferenza è quello che rende un sistema esperto “intelligente” e diverso dai normali programmi software: a partire da determinati fatti, i sistemi esperti sono in grado di dedurre nuovi fatti. Inoltre, un sistema esperto è sempre in grado di fornire i passaggi logici che hanno portato alle sue conclusioni, alle decisioni prese o alle azioni compiute. In questo, il sistema esperto si differenzia dal deep learning e dalle reti neurali moderne per le quali non è possibile risalire al processo che ha portato al risultato.

Possiamo individuare due tipologie di regole inferenziali:

  1. Regole deterministiche: sono rigide, inequivocabili e portano a una conclusione definitiva e certa.
    Esempi:
    -  se la temperatura corporea di una persona è superiore a 37.5 °C, allora ha la febbre;
    -  se il cavo Ethernet è danneggiato, allora la rete non funziona;
    -  se il segnale Wi-Fi è debole e il router/access point è lontano, allora la connessione di rete è lenta.



  1. Regole probabilistiche: incorporano l'incertezza esprimendo una relazione di probabilità tra una condizione e una conseguenza; nella regola può anche essere inserito un indice di probabilità.
    Esempi:
    -  se il motore di un'auto non si avvia e la batteria è scarica, allora c'è una probabilità dell'80% che il problema sia la batteria;
    -  se la velocità di download è molto bassa e il tempo di ping è elevato, allora c’è una probabilità del 70% che ci sia un problema di congestione della rete;
    -  se un sito web non è raggiungibile e i ping falliscono, allora è probabile che ci sia un problema di connettività;
    -  se un dispositivo mobile si connette a una rete Wi-Fi pubblica non sicura, allora c’è una probabilità dell’85% che i dati dell'utente possano essere intercettati.


I sistemi esperti si diffusero molto negli anni Ottanta, soprattutto nel dominio della diagnostica medica (divenne famoso il sistema MYCIN, che suggeriva trattamenti medici basati sui sintomi) e del supporto tecnico per la diagnosi e la risoluzione di problemi tecnici (per esempio, la gestione dei guasti nei sistemi e nelle reti di telecomunicazione). Tuttavia, i sistemi esperti presentavano alcune grandi limitazioni:

  • La staticità delle regole: ogni adattamento a nuovi scenari richiedeva degli aggiornamenti manuali. Pensiamo alle regole probabilistiche: eventi imprevisti o fattori esterni possono influenzare la probabilità di un evento, pertanto i cambiamenti nel sistema richiedono periodici aggiornamenti delle percentuali.

  • La scarsità di dati: spesso i processi decisionali richiedono grandi quantità di dati, mentre le capacità computazionali di allora permettevano di lavorare solo su insiemi ristretti di dati.

  • L’applicabilità limitata: i sistemi esperti erano focalizzati su attività specifiche e ben definite, non erano quindi in grado di fornire risposte in condizioni dinamiche o incerte.


Questi limiti hanno spinto i ricercatori a sviluppare nuove metodologie, più efficienti e potenti, per simulare il processo decisionale umano.

 

Evoluzione dei sistemi esperti: i sistemi di intelligenza artificiale

Ai giorni nostri, l’intelligenza artificiale ha fatto enormi progressi rispetto agli anni Ottanta e ai sistemi esperti di allora. Negli anni, infatti, il progresso tecnologico ha consentito di introdurre innovazioni fondamentali, quali:

  • il Machine Learning (ML), che consente l'apprendimento automatico dai dati, eliminando la necessità di definire regole manualmente;

  • l’adattamento dinamico, che consente ai modelli di intelligenza artificiale di adattarsi automaticamente ai cambiamenti in tempo reale;

  • l’analisi predittiva, che sfrutta i dati storici e i dati in tempo reale per formulare previsioni su eventi e comportamenti futuri. Grazie alle moderne tecnologie di AI è possibile analizzare velocemente enormi quantità di dati, ottenere conoscenze che potrebbero sfuggire all’esame umano e rendere più articolata e precisa la previsione di eventi futuri.


Pertanto, possiamo dire che il concetto di sistema esperto non è scomparso, ma si è evoluto in quello più generico di sistema intelligente o sistema di intelligenza artificiale. I sistemi attuali integrano diverse tecniche avanzate di intelligenza artificiale, come il deep learning (che apprende da grandi quantità di dati), il reinforcement learning (che si basa sull’interazione con un ambiente per migliorare le decisioni) e il natural language processing (che consente di comprendere e generare testi scritti o parlati).

I principi fondamentali dei primi sistemi esperti, come la rappresentazione della conoscenza e il ragionamento logico e inferenziale, restano comunque validi, ma vengono ora integrati nelle nuove tecnologie, che consentono di applicarli in modo molto più sofisticato e potente.

 

Le attività di automazione di rete con l’AI

Rispetto ai primi sistemi esperti, che erano semplicemente un ausilio nella risoluzione dei problemi, l’AI permette di automatizzare numerose attività di gestione delle reti e dei sistemi in modo molto sofisticato, migliorandone significativamente l'efficienza e la sicurezza.

L'applicazione dell'AI nel contesto dei sistemi e delle reti di telecomunicazione si concentra su alcuni ambiti fondamentali:

1)  Gestione degli errori (Fault management)

La gestione degli errori implica il rilevamento, la diagnosi e la risoluzione dei problemi nella rete prima che essi abbiano un impatto sugli utenti. L’applicazione delle tecniche di AI aiuta nelle seguenti attività:

  • rilevamento delle anomalie: con l'apprendimento automatico si possono individuare deviazioni dal normale funzionamento che potrebbero generare guasti in futuro;

  • analisi delle cause di errori: gli algoritmi di AI permettono di tracciare rapidamente la causa di un errore, spesso in tempo reale, accelerando i tempi di risoluzione del problema;

  • manutenzione predittiva: sulla base di analisi predittive, si possono individuare potenziali guasti e pianificare soluzioni proattive.


2)  Gestione della configurazione (Configuration management)

L'AI può ottimizzare la configurazione delle risorse di rete e le successive eventuali modifiche per garantirne un funzionamento efficiente. Attività come la configurazione dei dispositivi, il setup dei parametri e la distribuzione degli aggiornamenti, sono semplificate e migliorate dalle capacità predittive e adattive dell'AI. Parliamo in particolare di:

  • previsione delle configurazioni ottimali: i dati in tempo reale sono analizzati insieme ai dati storici al fine di realizzare in automatico la configurazione migliore di un apparato, riducendo gli errori umani e velocizzando il processo;

  • reti auto-riparanti: configurazioni non ottimali vengono identificate e modificate in tempo reale al fine di evitare, per esempio, colli di bottiglia o periodi di inattività;

  • scalabilità: la configurazione di reti in espansione può avvenire in modo automatico, riducendo la necessità di interventi manuali.


3)  Gestione delle prestazioni (Performance management)

L'AI permette un utilizzo più efficiente delle risorse di rete, supportando l’amministratore per quanto riguarda:

  • ottimizzazione delle prestazioni: sono analizzati i dati prestazionali e suggerite azioni per migliorare la velocità, la disponibilità e la scalabilità della rete;

  • previsione della capacità della rete: è possibile prevedere l'utilizzo futuro delle risorse e pianificare eventuali espansioni della rete.


4)  Gestione della sicurezza (Security management)

L'AI rafforza la sicurezza identificando le minacce, prevenendo le violazioni e adattandosi ai nuovi rischi man mano che emergono. In particolare, l’applicazione delle tecniche di AI aiuta nelle seguenti attività:

  • rilevamento delle intrusioni: sono analizzati i dati sui dispositivi o i comportamenti anomali nel traffico in rete per individuare segnali di attacchi informatici;

  • difesa adattiva: i modelli di apprendimento automatico si evolvono per contrastare minacce nuove e adottare le misure di sicurezza necessarie;

  • automazione della risposta agli incidenti: i sistemi coinvolti possono essere messi automaticamente in quarantena, per poi individuare le misure correttive.


 

Attività laboratoriale sull’analisi del traffico di rete con Python e l’AI

La scelta di affrontare l’automazione e la gestione della rete utilizzando il linguaggio di programmazione Python è dovuta a varie ragioni, prima fra tutte la disponibilità di numerose librerie di codice sviluppate proprio a questo scopo. A ciò possiamo aggiungere la licenza open source, la semplicità del linguaggio (facile anche da leggere), la sua ampia diffusione e l’esistenza di una forte community di supporto agli sviluppatori.

Nella proposta di laboratorio seguente utilizzeremo la libreria Python scikit-learn che implementa algoritmi di Machine Learning e fa uso di alcune librerie Python per il calcolo scientifico, tra le quali: NumPy, SciPy, matplotlib.


Esercitazione di laboratorio: previsione di crescita del traffico di rete


L’esercitazione proposta ha lo scopo di far comprendere agli studenti cosa significa svolgere un’analisi predittiva sul traffico di rete sulla base di dati storici.

Gli studenti scriveranno uno script Python molto semplice per prevedere il traffico futuro nella rete sulla base dei dati rilevati in alcune ore del giorno, utilizzando un modello di regressione lineare fornito dalla libreria scikit-learn.

Per lo svolgimento di questo esercizio utilizziamo:

  • un computer con sistema operativo Windows

  • il terminale Windows PowerShell per eseguire i comandi

  • l’editor Visual Studio Code (VS Code) per scrivere il codice

  • il linguaggio di programmazione Python (l’ultima versione 3.x di Python è scaricabile dal sito ufficiale: python.org/downloads/)


Vediamo come procedere, passo dopo passo.

1)  Creiamo la cartella TrafficAnalysis che conterrà il programma e apriamo il terminale di PowerShell.

2)  Creiamo l’ambiente virtuale per il programma Python (non è obbligatorio, ma fortemente consigliato per una gestione ottimale del progetto), attiviamolo, quindi installiamo/aggiorniamo il package pip, necessario per la successiva installazione del package scikit-learn:
PS C:\Lab Python\TrafficAnalysis> py -m venv .venv
PS C:\Lab Python\TrafficAnalysis> .venv\Scripts\activate
(.venv) PS C:\Lab Python\TrafficAnalysis> py -m pip install --upgrade pip

3)  Installiamo il package scikit-learn
(.venv) PS C:\Lab Python\TrafficAnalysis> pip install --upgrade scikit-learn

Al termine delle operazioni di download viene visualizzato l’elenco dei package in fase di installazione e il relativo esito positivo:
Installing collected packages: threadpoolctl, numpy, joblib, scipy, scikit-learn
Successfully installed joblib-1.4.2 numpy-2.1.3 scikit-learn-1.5.2 scipy-1.14.1 threadpoolctl-3.5.0

4)  Apriamo l’editor VS Code, dal menu File apriamo la cartella TrafficAnalysis e creiamo il nuovo file PredictTrafficGrowth.py in cui scriveremo lo script Python, mostrato nella figura seguente:



Nella prima parte del codice creiamo lo storico dei dati sul traffico nelle varie ore del giorno, per semplicità inseriamo solo tre ore: 7, 8 e 9. Utilizziamo la libreria NumPy per la creazione dell’array delle ore e dell’array con i dati sul traffico in Mbps.

Per la parte centrale del codice, quella in cui entrano in gioco l’AI e il ML, utilizziamo il modulo linear_model del package sklearn che contiene classi e funzioni per implementare modelli lineari. LinearRegression è una classe di questo modulo che implementa un algoritmo di regressione lineare. Sulla base dei dati di addestramento contenuti negli array, il processo di apprendimento definisce un modello in grado di stimare il valore finale.

Il modello di ML creato prevede che ci sia una relazione lineare tra x e y (un’equazione del tipo:
y = ax + b).

Dopo l’addestramento, nel nostro esempio il modello determina che il traffico aumenta di 50 Mbps ogni ora e può quindi fare la previsione sul traffico  che ci sarà alle 10 del mattino.

5)  Eseguiamo lo script e leggiamo l’output: “Traffico previsto alle ore 10: [300.]”. Il modello di regressione ha imparato lo schema: il traffico aumenta di 50 Mbps ogni ora, quindi, se alle ore 9 era pari a 250 Mbps, alle ore 10 sarà pari a 300 Mbps.

Chiaramente i dati di input sono stati inseriti al semplice scopo di provare lo script, quindi è opportuno riflettere con gli studenti su come migliorare il modello per renderlo più accurato. Possibili spunti sono, per esempio:

  • aggiungere più dati?

  • introdurre una casualità (numeri random) per rispecchiare la variabilità del traffico renderebbe più realistico l’esercizio?

  • inserire anche un array con il giorno della settimana per simulare condizioni reali del traffico nella rete che variano non solo in base all’ora del giorno, ma anche tra giorni lavorativi e giorni festivi?


 

Conclusioni

La capacità di adattarsi in modo intelligente e automatico a condizioni e requisiti dinamicamente mutevoli rende l'AI uno strumento importante per la gestione delle reti moderne. Gli operatori di TLC e le aziende possono utilizzare l’AI per gestire i picchi di carico della rete o integrare nuovi tipi di dispositivi senza dover intervenire con configurazioni manuali. Inoltre, i sistemi di intelligenza artificiale sono in grado di analizzare modelli di utilizzo e flussi di dati, permettendo di ottimizzare costantemente le configurazioni e di migliorare l’utilizzo della banda. Infine, l’automazione di rete consente di allocare le risorse di rete in modo flessibile e on-demand, ottimizzando l’utilizzo delle capacità di rete e garantendo una migliore efficienza dell’infrastruttura.

Fonti

  • A. Feigenbaum “Expert Systems in the 1980s” Standford University CA (1980)

  • Oswalt, C. Adell, S. Lowe, J. Edelman “Network Programmability and Automation, 2nd Edition”, O’Really Media (2023)

  • Python language https://www.python.org/

  • Scikit-learn https://scikit-learn.org/stable/