AI i naturvetenskap: från proteiner till klimat
Kunna beskriva hur ML används i naturvetenskaplig forskning och dess metodfrågor.
Förkunskaper
- EVetenskaplig metod i AIkrävs
- FGrafneuronnät (GNN)krävs
Intuition
Maskininlärning har blivit ett standardverktyg i naturvetenskapen. Några områden där det gjort verklig skillnad:
| Område | Tillämpning |
|---|---|
| Strukturbiologi | proteinveckning — AlphaFold förändrade fältet |
| Kemi | egenskapsprediktion, retrosyntes, materialsökning |
| Väder och klimat | neurala väderprognoser konkurrerar med fysikbaserade |
| Partikelfysik | händelseklassificering i enorma dataströmmar |
| Astronomi | klassificering av objekt, upptäckt av exoplaneter |
| Medicin | bilddiagnostik, läkemedelskandidater |
Det som gör dessa tillämpningar speciella är att det finns en underliggande teori. Till skillnad från att förutsäga vilken reklam någon klickar på finns fysikaliska lagar som måste gälla — och det går både att utnyttja och att kontrollera mot.
Formellt
Fyra metodfrågor som är svårare inom naturvetenskap än i vanlig ML:
1. Uppdelningen måste spegla den vetenskapliga frågan. En slumpmässig uppdelning av molekyler ger nästan alltid för optimistiska resultat, eftersom snarlika molekyler hamnar i både träning och test. Rätt uppdelning beror på frågan:
| Fråga | Uppdelning |
|---|---|
| Fungerar detta på nya molekyler? | skaffold split — dela på strukturell kärna |
| På nya proteinfamiljer? | sekvenslikhetsbaserad uppdelning |
| På framtida data? | tidsbaserad |
| I ett nytt labb? | efter mätkälla |
2. Fysikaliska begränsningar bör byggas in. En modell som förutsäger energi ska respektera bevarandelagar och symmetrier. Ekvivarianta nätverk — som ger samma svar oavsett hur molekylen roteras — behöver inte lära sig symmetrin från data och blir dramatiskt mer dataeffektiva.
3. Osäkerhet är inte valfri. En förutsägelse utan felstapel är inte ett vetenskapligt resultat. Ensembler, bayesianska metoder eller konform prediktion ger intervall — och det är intervallet som avgör om experimentet är värt att köra.
4. Reproducerbarhet under granskning. Kod, data, frön, miljö och exakt uppdelning måste publiceras. Fältet har en väldokumenterad reproducerbarhetskris: Kapoor och Narayanan (2023) granskade tillämpningar av ML i sjutton vetenskapliga områden och fann läckage i samtliga — oftast i form av felaktig uppdelning eller att testdata påverkat förbehandlingen.
Frågor att ställa till varje ML-i-vetenskap-påstående:
| Fråga | Varför |
|---|---|
| Hur delades data? | vanligaste felkällan |
| Vilken baslinje jämförs det med? | ofta ingen, eller en orimligt svag |
| Redovisas osäkerhet? | annars går resultatet inte att använda |
| Har det validerats experimentellt? | en förutsägelse är en hypotes |
| Är kod och data tillgängliga? | annars går det inte att granska |
Den fjärde är den avgörande. AlphaFold blev ett genombrott inte för att den vann en tävling utan för att strukturerna höll när de jämfördes med experimentellt bestämda. En modell som förutsäger en läkemedelskandidat har producerat en hypotes, inte ett läkemedel.
Kod
import numpy as np
# 1. Skaffold split: dela på strukturell kärna, inte slumpmässigt
def skaffold_split(molekyler, andel_train=0.8, fro=0):
"""Molekyler med samma kärnstruktur hamnar i SAMMA mängd."""
from collections import defaultdict
grupper = defaultdict(list)
for i, m in enumerate(molekyler):
grupper[murcko_skaffold(m)].append(i) # strukturell kärna
ordnade = sorted(grupper.values(), key=len, reverse=True)
train, test = [], []
for g in ordnade:
(train if len(train) < andel_train * len(molekyler) else test).extend(g)
return train, test
def jamfor_uppdelningar(X, y, molekyler, modell):
from sklearn.model_selection import train_test_split
tr, te = train_test_split(range(len(X)), test_size=0.2, random_state=0)
slump = modell().fit(X[tr], y[tr]).score(X[te], y[te])
tr2, te2 = skaffold_split(molekyler)
skaffold = modell().fit(X[tr2], y[tr2]).score(X[te2], y[te2])
return {"slumpmassig": round(slump, 3), "skaffold": round(skaffold, 3),
"optimism": round(slump - skaffold, 3)}
# {'slumpmassig': 0.89, 'skaffold': 0.62, 'optimism': 0.27}
# ↑ den slumpmässiga siffran är den som brukar rapporteras
# 2. Osäkerhet: ensemble ger både prediktion och intervall
def ensemble_prediktion(modeller, X):
P = np.stack([m.predict(X) for m in modeller])
return {"medel": P.mean(0), "std": P.std(0),
"intervall_95": (P.mean(0) - 1.96 * P.std(0), P.mean(0) + 1.96 * P.std(0))}
# Konform prediktion: intervall med garanterad täckning
def konform_intervall(modell, X_kal, y_kal, X_ny, alfa=0.1):
residualer = np.abs(y_kal - modell.predict(X_kal))
n = len(residualer)
q = np.quantile(residualer, np.ceil((n + 1) * (1 - alfa)) / n, method="higher")
p = modell.predict(X_ny)
return p - q, p + q # täcker sanningen med minst 1 − alfa sannolikhet
# 3. Kontrollera mot fysiken — en modell som bryter mot bevarandelagar är fel
def fysikkontroll(modell, konfigurationer, tolerans=1e-3):
brott = []
for k in konfigurationer:
# rotationsinvarians: samma energi oavsett orientering
e1 = modell.energi(k)
e2 = modell.energi(rotera(k, vinkel=np.pi / 3))
if abs(e1 - e2) > tolerans:
brott.append({"typ": "rotationsinvarians", "diff": float(abs(e1 - e2))})
# translationsinvarians
e3 = modell.energi(translatera(k, [1.0, 0, 0]))
if abs(e1 - e3) > tolerans:
brott.append({"typ": "translationsinvarians", "diff": float(abs(e1 - e3))})
return {"antal_brott": len(brott), "av": 2 * len(konfigurationer), "exempel": brott[:3]}
# 4. Reproducerbarhetsmanifest
def manifest(kod_commit, data_hash, uppdelning, fro, miljo, baslinje_resultat):
return {"git_commit": kod_commit, "data_hash": data_hash,
"uppdelningsmetod": uppdelning, "uppdelningsfro": fro,
"miljo": miljo, "baslinje": baslinje_resultat,
"kommentar": "uppdelningsmetoden är den enskilt viktigaste raden här"}
Behärskning innebär
- Ger exempel på ML i naturvetenskap
- Förklarar varför uppdelning är svårare där
- Bedömer vetenskapliga påståenden kritiskt
Logga in för att göra övningarna och bygga upp din behärskning.
Källor
- Jumper m.fl. — Highly accurate protein structure prediction with AlphaFold (Nature 2021) — öppen tillgång
- arXiv — Leakage and the Reproducibility Crisis in ML-based Science — arXiv (öppen åtkomst; licens per artikel)
- arXiv — Learning skillful medium-range global weather forecasting (GraphCast) — arXiv (öppen åtkomst; licens per artikel)