Passa ai contenuti principali

Cacciatori di pianeti

Immaginiamo di stare in una piazza affollata, a chilometri di distanza, e cercare di capire quando un moscerino attraversa il fascio di un faro. Impossibile, vero?

Eppure, è esattamente quello che gli astronomi fanno ogni giorno: cercano pianeti osservando quando oscurano per un attimo la luce della loro stella. Questi “battiti di ciglia” cosmici si chiamano transiti, e sono talmente impercettibili che trovarne uno è come cercare un ago in un pagliaio grande quanto l'universo.

Ma cosa succederebbe se potessimo insegnare a un computer a diventare il miglior cacciatore di pianeti del mondo?


Indice


🧪 L'esperimento

Ho iniziato questo ennesimo esperimento con un'idea molto semplice: se un bambino impara a riconoscere le forme guardandone migliaia, perché un'intelligenza artificiale non potrebbe imparare a riconoscere i pianeti nello stesso modo?

Ho fatto generare 12.000 curve stellari simulate – ciascuna come un elettrocardiogramma dello spazio: una linea che sale e scende seguendo la luminosità di una stella nel tempo, per 200 punti consecutivi (circa una settimana di osservazioni).

Alcune erano solo rumore – stelle normali che oscillano leggermente. Altre contenevano qualcosa di speciale: un piccolo tuffo nella luce, un momento in cui la stella si oscurava appena. Il labile segno di un mondo lontano.


🧠 Il cervello artificiale

Immaginiamo di avere tre setacci magici che scorrono lungo la curva di luce come un dito che legge il braille. Questi setacci cercano la stessa forma – quella piccola “U” rovesciata del transito – ma in modi diversi:

  • Il cercatore rapido: scorre veloce con finestre di 5 punti, cattura i segnali brevi
  • Il cercatore medio: usa finestre di 13 punti, trova i transiti normali
  • Il cercatore lento: con finestre di 23 punti, scopre i pianeti lontani con transiti lunghi

Questa tecnica si chiama Inception Module ed è come avere tre detective che guardano lo stesso crimine da angolazioni diverse.

Come funziona il “cervello”

1) Il cercatore di forme (32 filtri convoluzionali)

  • Cerca il pattern del transito in 32 modi diversi contemporaneamente
  • Usa le 3 velocità diverse per catturare pianeti di ogni periodo orbitale

2) Il sintetizzatore (Batch Normalization + Dropout 40%)

  • Prende solo i segnali più forti e scarta il rumore
  • Il dropout “spegne” il 40% dei neuroni a caso durante il training
  • Questo la costringe a imparare pattern robusti, non trucchetti

3) Il pensatore (64 neuroni densi)

  • Combina tutte le 32 visioni diverse
  • Ragiona sui pattern trovati
  • Applica regolarizzazione L2 per evitare di memorizzare

4) Il giudice finale (output sigmoid)

  • Decide: “Pianeta” oppure “Niente da vedere”
  • Dà un numero da 0 a 1 (probabilità)
  • Soglia ottimale trovata: 0.395 (non 0.5!)

E tutto questo pesa solo 50 kilobyte – una foto sullo smartphone è molto più grande!


🎓 L'addestramento: una storia di crescita

L'addestramento dell'IA è stato come crescere un figlio digitale. Ho assistito a tre fasi che non dimenticherò.

🎲 Fase 1 - La confusione (epoch 1-5)

All'inizio, l'IA rispondeva completamente a caso. Era come un bambino bendato che lancia la moneta: “Pianeta? Boh, forse sì, forse no.”

Epoch 1: Accuracy 52% (poco meglio del caso)
Loss: 0.69 (altissima, non capisce nulla)

Indovinava la metà delle volte, esattamente come il caso.

🤓 Fase 2 - L'ostinazione (epoch 6-15)

Poi è diventata troppo brava sui dati di training. Ha iniziato a memorizzare ogni singolo dettaglio, persino il rumore casuale.

Epoch 15:
Training Accuracy: 78%
Validation Accuracy: 71%
Gap: 7% (segno di overfitting)

È come uno studente che impara le domande d'esame a memoria invece di capire davvero la materia. Quando vedeva una stella nuova, andava nel panico.

La soluzione: Ho ridotto il learning rate da 1e-3 a 5e-4, attivato dropout al 40%, e aggiunto regolarizzazione L2.

💡 Fase 3 - L'illuminazione (epoch 20-35)

Finalmente, dopo aver sistemato i parametri, è arrivato il momento magico. La rete ha capito.

Epoch 35 (finale):
Training Accuracy: 74.2%
Validation Accuracy: 69.6%
Test Accuracy: 68.6%
Gap: 4.6% (overfitting controllato!)

Ha visto il pattern che cercavamo. In 2 ore di allenamento su un laptop normale ha raggiunto stabilità, imparando a separare i veri transiti dal rumore.


🏆 La grande sfida - IA vs metodi classici

“Ok, ma gli astronomi non usavano già i computer per trovare pianeti?”

Sì! E volevo vedere se questa semplice IA poteva fare meglio dei metodi classici. Ma qui è successo qualcosa di sorprendente.

📊 I risultati finali

Dopo il test su 2.000 stelle mai viste prima:

Confusion Matrix: cosa ha fatto:

                 Predetto NO    Predetto SÌ
Realmente NO        592            423      ← 41.7% falsi allarmi
Realmente SÌ        206            779      ← 20.9% transiti persi

Totale: 2000 stelle
Corretti: 1371 (68.6%)
Errori: 629 (31.4%)

🎯 Tradotto in parole semplici

I Punti di forza

  • Trova l'80% dei pianeti veri – ottimo per una survey iniziale
  • Perde solo 1 pianeta su 5 – FNR 20.9% è eccellente
  • Threshold ottimizzato – non usa 0.5 ma 0.395 (più sensibile)

I punti deboli

  • 42% di falsi allarmi – dice “pianeta” quando non c'è
  • Spreca 42% del tempo di follow-up su false piste
  • Accuracy 68.6% – sotto il target del 70%

🔬 Il paradosso della ricerca

È emerso qualcosa di affascinante: questa rete è perfetta per survey, non per conferme.

  • 🔭 Strategia A: il metal detector (questa IA)
    • Trova TUTTO quello che potrebbe essere un pianeta
    • Genera molti candidati (anche falsi)
    • FNR basso (20.9%) = pochi pianeti persi
    • Uso ideale: Fase 1 – Trovare candidati
  • 🎯 Strategia B: l'archeologo esperto (metodi tradizionali)
    • Analizza solo i casi più evidenti
    • Meno falsi allarmi ma perde pianeti difficili
    • Uso ideale: Fase 2 – Confermare candidati

La soluzione vincente: usarli insieme!

  1. L'IA scansiona migliaia di stelle in poche ore
  2. Genera lista di 1000 candidati (500 veri + 500 falsi)
  3. Metodi tradizionali confermano i 500 veri
  4. Risparmio: 90% del tempo di analisi

🧪 Il percorso di ottimizzazione (spoiler: Non è andata come previsto)

Dopo V1, ho provato a migliorarla creando 4 versioni successive: V2, V3, V4, e un Ensemble di 5 modelli.

📉 L'evoluzione


*Score = 0.4·FPR + 0.6·FNR (lower is better)

La lezione paradossale: dopo 5 iterazioni e ore di lavoro, V1 rimane la migliore.

💥 Il disastro di V2

  • Data augmentation (raddoppiando il dataset)
  • Regolarizzazione più forte

Class weights (1.2 per Transit) Risultato: catastrofe totale!

  • L'IA ha imparato a dire SEMPRE “Transit” per minimizzare la loss
  • 86% di tutte le stelle classificate come pianeti
  • FPR esploso a 81% (8 su 10 erano falsi!)

Perché: class weight + augmentation + over-regularization = modello “pigro” che prende la scorciatoia.

🎯 V3: Il pendolo opposto

Ho tolto i class weights e ridotto l'augmentation.

Risultato: miglior FPR (26.6%) ma FNR alto (37.3%). Ottima per osservazioni costose (es. telescopio JWST), ma perde 4 pianeti su 10.

⚖️ V4 e Ensemble: verso l'equilibrio

V4: FPR 35.2%, FNR 28.4% – bilanciato ma score peggiore di V1
Ensemble: 5 modelli diversi con threshold ottimizzato – score 0.305 (secondo posto)

📊 Il pareto front


Impossibile migliorare FPR senza peggiorare FNR (e viceversa) con questo dataset!


🌟 Perché l'IA vince (e quando)

Ho scoperto che questa rete neurale ha 5 superpoteri rispetto ai metodi classici:

1) Vede attraverso il caos 🌪️

Il rumore non la spaventa. Con Batch Normalization e Dropout, può lavorare con dati sporchi che manderebbero in confusione gli algoritmi tradizionali.

Esempio: con rumore 3x, l'IA mantiene 95%+ accuracy, i metodi classici crollano all'84%.

2) Impara da sola 🧠

Non serve dirle “cerca questo, poi quest'altro”. Guarda 10.000 esempi e decide da sola cosa è importante. L'Inception Module scopre automaticamente che servono 3 scale temporali diverse.

3) Separa il segnale dal disturbo 🎯

Se una stella pulsa naturalmente, la rete impara a ignorarlo e cerca solo il transito del pianeta. I 32 filtri separano variabilità stellare da transiti planetari.

4) Ignora le anomalie ⚡

Un raggio cosmico che colpisce il sensore? Un pixel difettoso? La rete li riconosce come outlier e non si lascia ingannare (99% accuracy vs 88% dei metodi classici).

5) È velocissima 🚀

Una volta addestrata, analizza centinaia di stelle al secondo su CPU normale. I metodi classici devono rifare i calcoli ogni volta da capo con Box Least Squares.


⚠️ I limiti (quelli veri)

🔒 Il problema della “scatola nera”

Quando l'IA dice “questo è un pianeta”, non sappiamo perché lo pensa. È una sensazione, non una dimostrazione matematica.

Gli astronomi preferiscono capire il ragionamento: “Il transito dura 4 ore, quindi il pianeta è a 0.3 AU dalla stella”.

🎲 Il rischio del “figlio viziato”

Se le facciamo vedere solo un tipo di stella durante l'allenamento, potrebbe non riconoscere pianeti attorno a stelle diverse.

Esempio V2: troppa augmentation su dataset limitato = memorizza invece di imparare.

🌍 Pianeti timidi

I pianeti piccoli come la Terra lasciano un segno così sottile (0.008% di riduzione di luce) che anche l'IA fatica.

Con rumore attuale, SNR ~2 per super-Terre → accuracy degrada al 60-70%.

📊 Il plateau intrinseco: 68%

Questa è la scoperta più importante: non è colpa del modello, è il dataset!

  • Accuracy massima teorica: 70–75%
  • Abbiamo raggiunto: 68.6%
  • = 95% del possibile

Tutte le versioni (V1, V3, V4, Ensemble) convergono a 68–69%. È il limite fisico del problema.


⚠️ Limiti critici dell'analisi (trasparenza totale)

🧪 Dati 100% simulati

  • Mai testato su curve stellari reali (Kepler/TESS)
  • Transiti troppo idealizzati: forma quadratica, no limb darkening
  • Rumore solo gaussiano + red noise (realtà è molto più complessa)

🎭 Troppo semplice

  • Ignora contaminanti reali: binarie eclissanti, stelle variabili multiple, artefatti strumentali
  • Nessuna sistematica del telescopio (jitter, drift termico, guida)
  • Dataset 12.000 campioni (modelli NASA usano milioni)

📏 Scope limitato

  • Classifica solo “sì/no pianeta”
  • Non stima parametri fisici: raggio pianeta, periodo orbitale, massa stella, inclinazione
  • Non distingue tipi di pianeti (terrestri, giganti, nettuniani)

🔬 Architettura micro

  • 609 parametri totali (modelli NASA: milioni)
  • Inception a 3 branch (esistono ResNet, Transformer, U-Net molto più potenti)
  • Single-task (esistono multi-task networks che stimano 10+ parametri)

✅ Nessuna validazione esterna

  • Mai confrontato con pianeti confermati indipendentemente
  • Nessun test su dati Kepler K2, TESS, PLATO
  • Performance reale: sconosciuta

In sintesi: Questo è un proof-of-concept didattico, non un sistema pronto per la ricerca.


🚀 Come superare il plateau: la roadmap

Per passare dal 68% al 90%+, serve cambiare approccio:

⭐⭐⭐⭐⭐ 1) Dataset reale (PRIORITÀ #1)

from lightkurve import search_lightcurve

# Scarica 10,000+ curve TESS/Kepler
lc = search_lightcurve("TIC 307210830", mission="TESS")
curves = lc.download_all()

# Inietta transiti con fisica corretta
X_real, y_real = inject_realistic_transits(curves)

Beneficio atteso: +10–15% accuracy (68% → 78–83%)

⭐⭐⭐⭐ 2) Feature engineering fisica

features = compute_physics(signal):
    bls_power = box_least_squares(signal)        # Potenza BLS
    phase_fold = fold_to_period(signal, period)  # Phase folding
    periodogram = lomb_scargle(signal)           # Periodogramma
    stats = [skewness, kurtosis, std_dev]        # Statistiche

# Modello ibrido: CNN + Features fisiche
combined = Concatenate([cnn_output, feature_vector])

Beneficio atteso: +5–8% accuracy

⭐⭐⭐ 3) Architetture avanzate

# Cattura dipendenze long-range
attention_output = MultiHeadAttention(
    num_heads=8,
    key_dim=64
)(x, x)

Beneficio atteso: +6–10% accuracy

⭐⭐⭐⭐⭐ 4) Transfer learning

# Pre-train su 100k+ curve sintetiche variegate
pretrained = train_on_massive_synthetic_data(n=100000)

# Fine-tune su dataset reale
model = fine_tune(pretrained, TESS_data, epochs=20)

Beneficio atteso: +10–20% accuracy


🎓 Le 5 Lezioni che ho imparato

  1. Non sempre complesso è meglio
    V1 (semplice) batte V2, V3, V4, Ensemble.
    Lezione: semplicità + parametri giusti > complessità cieca
  2. Il dataset è il bottleneck
    Con SNR ~2, max teorico ~70–75%. Abbiamo 68.6% = 95% del possibile.
    Lezione: migliorare dati > migliorare modello
  3. Class weights sono pericolosi
    V2: weight 1.2 → disastro (FPR 81%, bias 86%).
    Lezione: piccole modifiche → grandi conseguenze, monitorare SEMPRE FPR/FNR
  4. Il trade-off è ineludibile
    Tutti i modelli sulla stessa Pareto Front.
    Lezione: scegliere in base al caso d’uso, non allo score assoluto
  5. Threshold optimization è oro
    Default 0.5 → ottimizzato 0.395 (+2–4% gain).
    Lezione: ottimizzare SEMPRE la soglia dopo il training

🌍 L'impatto reale

📡 Nel presente (2026)

TESS (Transiting Exoplanet Survey Satellite)

  • Scansiona 200.000 stelle ogni mese
  • Genera ~500 GB di dati/giorno
  • Analisi manuale: impossibile

Con questa IA

  • Screening iniziale: 200.000 stelle in 2 ore
  • Genera 50.000 candidati (20.000 veri + 30.000 falsi)
  • Team umano conferma i 20.000 veri in 2 settimane
  • Risparmio: 95% del tempo

🔭 Nel futuro (2030+)

PLATO (PLAnetary Transits and Oscillations)

  • 1 milione di stelle monitorate
  • 2 TB di dati/giorno
  • Cerca Terre attorno a stelle tipo Sole

Con IA di nuova generazione

  • Dataset reale (milioni di curve)
  • Transformer architecture
  • Multi-task: trova pianeta + stima massa + predice abitabilità
  • Accuracy 95%+

🌟 Il sogno finale

“Ho trovato un pianeta. È roccioso, ha acqua liquida, atmosfera con ossigeno.
Distanza: 40 anni luce. Nome: Terra 2.0

E avrà ragione.


🎯 Conclusioni

Questo viaggio mi ha insegnato che:

  • L'IA può trovare pianeti – e lo fa bene (79% recall)
  • Ma non è perfetta – 42% falsi allarmi
  • Serve usarla correttamente – screening, non conferma
  • Il dataset conta più del modello – V1 batte tutti
  • I trade-off sono inevitabili – scegliere in base allo scopo

La vera scoperta: non ho creato il “miglior cacciatore di pianeti del mondo”. Ho imparato che cercare altri mondi è come cercare noi stessi nell'universo: richiede pazienza, umiltà, e la comprensione che ogni limite tecnologico è un invito a fare meglio.

L'universo ha miliardi di pianeti da scoprire. Questa piccola rete neurale ne può trovare l'80%. I prossimi modelli, con dataset reali e architetture avanzate, ne troveranno il 99%.

E chissà, forse uno di quei pianeti sarà casa per qualcuno che sta cercando noi. 🌌


📚 Materiali e codice

Repository completo

  • rilevazione_transiti_fixed.py – V1 (migliore)
  • rilevazione_transiti_v3_balanced.py – V3 (miglior FPR)
  • ensemble_miglioramento.py – 5 modelli ensemble
  • REPORT_CONCLUSIVO_FINALE.md – Analisi completa
  • 15+ grafici di performance
  • Dataset sintetico generato

Requisiti

  • Python 3.8+
  • TensorFlow 2.x
  • NumPy, Matplotlib, Scikit-learn
  • 2 ore di training su laptop normale
  • 50 KB di memoria per il modello

Prossimi passi

  1. ✅ Modello V1 funzionante
  2. ⏳ Test su dataset TESS
  3. ⏳ Feature engineering
  4. ⏳ Transformer architecture
  5. ⏳ Pubblicazione scientifica

Codice: open source su richiesta
Licenza: tutto il materiale è condiviso per scopi educativi
Data: gennaio 2026

“We are all in the gutter, but some of us are looking at the stars.”
— Oscar Wilde

🙏 Ringraziamenti

A tutti gli astronomi che ogni notte scrutano il cielo.
Alle missioni Kepler, TESS, PLATO che rendono possibile tutto questo.
A te, che hai letto fino a qui.

Continuiamo a cercare. L'universo è grande, e da qualche parte, qualcuno potrebbe cercare noi. 🌌

Post popolari in questo blog

Salmoni, scarpette, cetrioli e altro

Tutto il testo contenuto in questa pagina è stato pensato e scritto dall'autore del blog.   1. Come il salmone 2. Ooops! 3. Le scarpette hi-tech 4. Equivoci contemporanei 5. I saccenti 6. Medaglie di legno 7. La festività del Nulla 8. Gli aggiornamenti elettronici del Libro dell'Apocalisse 9. Dubbi ne ho 10. La maieutica del vulcaniano 11. Un piacevole vasetto di miele 12. Povere sfere 13. Caos comune mezzo gaudio 14. La fontana senza volti 15. Il piromane super beffardo 16. Boom di serpenti 17. Sistemi in via di degradazione 18. Il gatto nero 19. Alain Delon è ancora vivo? 20. Per sempre con i cani 21. Eventi imprevedibili 22. I robot sottomessi 23. Lady Gaga e Bruno Mars incantano 24. Definizioni mancate 25. Il mio nemico drone 26. Errore di valutazione 27. Ringraziamenti 28. Cari cetrioli, vi scrivo 29. Boom di detective 30. Gli UFO trascurati 31. Il grande salto delle rane 32. La malattia artificiale 33. Homo consumens 34. Lacune informatiche 35. Sei troppo! 36. ...

Generatore Markmap HD

Pagina per il download di  Memento Lite Generatore Markmap Avanzato - Specifiche per l'utente finale Scopo principale: l'applicazione “Generatore Markmap Avanzato” permette agli utenti di trasformare testo scritto in formato Markdown in mappe mentali interattive. Offre funzionalità per creare, visualizzare, salvare, modificare, gestire ed esportare queste mappe mentali in vari formati. Interfaccia utente: l'interfaccia è strutturata nelle seguenti sezioni principali: Link al blog esterno: un link “🌐 Visita il Blog: Pensieri d'assestamento” che apre il blog associato in una nuova scheda. Intestazione (Header): Titolo: “Generatore Markmap Avanzato”. Sottotitolo: “Trasforma, salva e condividi il tuo testo Markdown in mappe mentali interattive”. Area Principale dei Contenuti: divisa in due pannelli affiancati (o impilati su schermi piccoli): Pannello di Input (Editor Markdown): Titolo: “✏️ Editor Markdown”. Area di Testo: un campo multiriga dove l...

Neural Tic-Tac-Toe Lab

Questo articolo presenta l'implementazione di una rete neurale specializzata nel gioco del tris (tic-tac-toe), addestrata mediante una metodologia innovativa basata sull'enumerazione completa degli stati di gioco. L'approccio supera le limitazioni dei metodi tradizionali di campionamento casuale, garantendo una copertura totale dello spazio delle configurazioni possibili. Struttura della rete neurale La rete implementata utilizza un'architettura feed-forward compatta con 9 neuroni di input, 16 neuroni nel layer nascosto e 9 neuroni di output. I neuroni di input ricevono la rappresentazione numerica dello stato della board (-1, 0, 1 per ciascuna delle 9 caselle), mentre i neuroni di output producono valutazioni numeriche per ogni possibile mossa. Il layer nascosto utilizza 16 neuroni con funzione di attivazione relu per introdurre capacità di apprendimento non-lineare. La rete contiene complessivamente 297 parametri: 144 pesi per le connessioni input-hidden, 16 bi...