Il competitive learning è un sottoinsieme del machine learning che rientra nell'ombrello degli algoritmi di apprendimento non supervisionato. Nel competitive learning, una rete di neuroni artificiali compete per "attivarsi" in risposta a un input specifico. Il neurone "vincitore", di solito quello che corrisponde meglio all'input dato, viene quindi aggiornato mentre gli altri restano invariati. L'importanza di questo metodo di apprendimento risiede nella sua capacità di raggruppare automaticamente input di dati simili, consentendoci di trovare schemi e raggruppamenti nei dati quando non sono disponibili conoscenze pregresse o etichette.
Competitive Learning: spiegazione
Le reti neurali artificiali spesso utilizzano modelli di competitive learning per classificare gli input senza ricorrere a dati etichettati. Il processo inizia con un vettore di input (spesso un set di dati). Questo input viene presentato a una rete di neuroni artificiali, ciascuno con il proprio set di pesi, che agiscono come filtri. Ogni neurone calcola un punteggio in base ai suoi pesi e al vettore di input, tipicamente tramite un prodotto scalare (un modo per moltiplicare le informazioni in input per il filtro e sommare i risultati).
Dopo il calcolo, il neurone con il punteggio più alto (il "vincitore") viene aggiornato, di solito spostando i suoi pesi più vicino al vettore di input. Questo processo è spesso chiamato strategia "Winner-Takes-All". Nel tempo, i neuroni si specializzano perché vengono aggiornati verso i vettori di input che riescono a rappresentare meglio. Ciò porta alla formazione di cluster di dati simili, consentendo così la scoperta di schemi intrinseci all'interno del dataset di input.
Per illustrare come si può usare il competitive learning, immagina che un e-commerce voglia segmentare la propria base clienti per fare marketing mirato, ma non disponga di etichette o segmentazioni pregresse. Fornendo i dati dei clienti (storico acquisti, pattern di navigazione, dati demografici, ecc.) a un modello di competitive learning, potrebbe individuare automaticamente cluster distinti (come grandi spender, acquirenti abituali, amanti degli sconti) e adattare di conseguenza le strategie di marketing.
Il processo di Competitive Learning: un esempio passo dopo passo
Per questa semplice illustrazione, supponiamo di avere un dataset composto da vettori di input monodimensionali da 1 a 10 e una rete di competitive learning con due neuroni.
Passo 1: Inizializzazione
Iniziamo inizializzando i pesi dei due neuroni con valori casuali. Supponiamo:
- Peso del neurone 1: 2
- Peso del neurone 2: 8
Passo 2: Presentazione del vettore di input
Ora presentiamo un vettore di input alla rete. Diciamo che il nostro vettore di input è "5".
Passo 3: Calcolo della distanza
Calcoliamo la distanza tra il vettore di input e i pesi dei due neuroni. Il neurone con il peso più vicino al vettore di input "vince". Questo può essere calcolato con qualsiasi metrica di distanza, ad esempio la differenza assoluta:
- Distanza neurone 1: |5-2| = 3
- Distanza neurone 2: |5-8| = 3
Poiché entrambe le distanze sono uguali, possiamo scegliere il vincitore casualmente. Diciamo che il neurone 1 è il vincitore.
Passo 4: Aggiornamento dei pesi
Regoliamo il peso del neurone vincitore per avvicinarlo al vettore di input. Se il nostro tasso di apprendimento (un parametro di regolazione in un algoritmo di ottimizzazione che determina l'ampiezza del passo a ogni iterazione) è 0,5, l'aggiornamento del peso sarebbe:
- Peso del neurone 1: 2 + 0,5*(5-2) = 3,5
- Peso del neurone 2: 8 (invariato)
Passo 5: Iterazione
Ripetiamo il processo con tutti gli altri vettori di input nel dataset, aggiornando i pesi dopo ogni presentazione.
Passo 6: Convergenza
Dopo diverse iterazioni (dette anche epoche), i pesi dei neuroni inizieranno a convergere verso i centri dei rispettivi cluster di input. In questo caso, con dati monodimensionali da 1 a 10, potremmo aspettarci che un neurone converga verso l'intervallo inferiore (da 1 a 5) e l'altro verso l'intervallo superiore (da 6 a 10).
Questo processo esemplifica il funzionamento del competitive learning. Nel tempo, ciascun neurone si specializza in un cluster diverso dei dati, permettendo al sistema di identificare e rappresentare i raggruppamenti intrinseci del dataset.
Competitive Learning vs altri modelli di apprendimento
Se confrontato con altri modelli di apprendimento non supervisionato, come il clustering gerarchico e il Density-Based Spatial Clustering of Applications with Noise (DBSCAN), i punti di forza e i limiti specifici del competitive learning diventano evidenti.
|
Modello di apprendimento |
Struttura dei cluster |
Numero di cluster |
Gestione del rumore |
Forme dei cluster |
Riallocazione dei punti dati |
|
Competitive Learning |
Piatta |
Predefinito (in base al numero di neuroni) |
Resiliente ma non distingue il rumore dai dati non rumorosi |
Tipicamente convessa |
Punti dati fissi una volta assegnati |
|
Clustering gerarchico |
Gerarchica (a struttura ad albero) |
Determinato dopo l'analisi |
Dipende dall'implementazione specifica |
Tipicamente convessa |
I punti dati possono essere riassegnati man mano che si forma la struttura ad albero |
|
DBSCAN |
Piatta |
Determinato automaticamente in base alla densità dei dati |
Eccellente, separa il rumore dai dati non rumorosi |
Arbitraria (incluse non convesse) |
Punti dati fissi una volta assegnati |
Come mostrato nella tabella, i tre modelli hanno caratteristiche distinte che li rendono adatti a diversi tipi di problemi. La struttura dei cluster, il numero di cluster, il modo in cui gestiscono il rumore, le forme dei cluster che possono formare e se consentono la riallocazione dei punti dati sono tutti fattori critici da considerare nella scelta di un modello di apprendimento.
La scelta tra i modelli dipende principalmente dai requisiti specifici e dalla natura del tuo dataset.
Il competitive learning è adatto a dataset in cui il numero di cluster è noto in anticipo e i dati sono distribuiti uniformemente tra i cluster. Funziona bene quando desideri una partizione semplice e piatta dei dati.
Il clustering gerarchico, invece, è ottimo quando vuoi scoprire relazioni gerarchiche all'interno dei dati o quando il numero ottimale di cluster è sconosciuto. Offre la flessibilità di esaminare i dati a diversi livelli di granularità.
DBSCAN è una scelta ideale per dataset con rumore o outlier, o quando ci si aspettano cluster di forme arbitrarie. Determina anche automaticamente il numero di cluster in base alla densità dei dati, risultando utile nell'analisi esplorativa quando il numero di cluster non è predefinito.
Ricorda: nessun modello è adatto a tutti gli scenari; comprendere le caratteristiche dei tuoi dati è fondamentale per selezionare il modello appropriato.
Caso d'uso pratico del Competitive Learning
Abbiamo visto che il competitive learning è comunemente usato per il clustering e la riduzione della dimensionalità. Tuttavia, può essere usato anche per l'apprendimento di caratteristiche, il rilevamento di anomalie e persino nell'AI generativa.
Per esempio, le Generative Adversarial Networks (GAN) sono un approccio di modellazione che utilizza il competitive learning tra un generatore (che crea dati fittizi) e un discriminatore (che valuta se i dati sono reali o falsi) per sintetizzare dati fittizi che imitano da vicino quelli reali.
Altri comuni algoritmi di competitive learning includono:
- Winner-take-all competitive learning. In questo semplice algoritmo, il neurone con l'attivazione più alta "vince" e i suoi pesi vengono regolati per avvicinarsi all'input. Gli altri neuroni non si aggiornano.
- Self-Organizing Map (SOM). Mappa dati di input ad alta dimensionalità su una griglia a bassa dimensionalità di neuroni e regola i pesi dei neuroni vicini per renderli più simili a ciascun input.
- Neural gas. Simile al SOM, ma forma i cluster in modo più flessibile senza una topologia rigida. I pesi dei neuroni vicini all'input vengono regolati per diventare più simili.
- Learning Vector Quantization (LVQ). Si basa sulle idee del SOM ma usa etichette di classe esplicite per guidare il competitive learning, producendo prototipi che raggruppano gli input per classe.
L'apprendimento non supervisionato può trarre grande beneficio dal competitive learning, un metodo potente che si prevede diventi più diffuso in futuro. Sebbene le self-organizing map e altri metodi di competitive learning esistano da anni, il successo delle GAN ha mostrato il potenziale dell'apprendimento competitivo avversariale e multi-agente.
In futuro vedremo nuovi algoritmi di competitive learning che combinano principi di apprendimento non supervisionato, semi-supervisionato e per rinforzo per generare risultati migliori.
Se vuoi metterti alla prova e costruire il tuo modello di competitive learning, dai un'occhiata a Simple Competitive Learning with Python. Questa guida ti insegnerà il semplice algoritmo per il competitive learning. Spiegherà anche i processi, le derivazioni matematiche e il codice coinvolto nel modello.
Vuoi saperne di più su AI e machine learning? Dai un'occhiata alle seguenti risorse:
FAQ
Il competitive learning può essere usato per compiti di apprendimento supervisionato?
Sebbene il competitive learning sia principalmente una tecnica di apprendimento non supervisionato, può essere modificato per compiti supervisionati. Le categorie o classi nei compiti supervisionati possono essere trattate come cluster e il competitive learning può essere usato per la classificazione.
In cosa differisce il competitive learning dal collaborative learning?
Nel competitive learning viene aggiornato solo il neurone vincitore. Al contrario, nel collaborative learning tutti i neuroni vengono aggiornati, ma l'entità dell'aggiornamento dipende dalla loro vicinanza al neurone vincitore.
Il competitive learning può gestire grandi dataset?
Sì, il competitive learning può gestire grandi dataset. Anzi, è spesso più efficace con dataset più grandi perché con più dati può individuare schemi più complessi e sfumati.
Quali sono i vantaggi dell'uso del competitive learning?
Il competitive learning può aiutare nella riduzione della dimensionalità, nell'estrazione di caratteristiche e nei compiti di riconoscimento di pattern. Può anche gestire in modo efficace schemi non lineari e complessi. Inoltre, il competitive learning è computazionalmente efficiente e può gestire grandi dataset.
Quali sono i limiti del competitive learning?
Il competitive learning può soffrire di ottimi locali, in cui l'algoritmo rimane bloccato in soluzioni subottimali. È anche sensibile alla configurazione iniziale dei neuroni e al tasso di apprendimento. Inoltre, potrebbe non essere adatto a compiti che richiedono classificazioni molto fini o la gestione di dataset sbilanciati.
Il competitive learning può essere usato nelle architetture di deep learning?
Sì, il competitive learning può essere usato nelle architetture di deep learning. Può essere impiegato come fase di pre-training per inizializzare i pesi della rete neurale o come componente all'interno di una struttura di rete più ampia.
Come si confronta il competitive learning con altri algoritmi di apprendimento come il backpropagation?
Il competitive learning è un tipo di apprendimento non supervisionato, mentre il backpropagation è un algoritmo di apprendimento supervisionato. Il competitive learning non richiede dati etichettati per l'addestramento, mentre il backpropagation si basa su esempi etichettati. Inoltre, il competitive learning è più adatto a compiti come clustering e riconoscimento di pattern, mentre il backpropagation è comunemente usato per classificazione e regressione.
In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.


