Kan man forutse skredhendelser?

Snøskredvarslingen hos NVE publiserer daglige snøskredvarsel hele vinteren, og ved stor skredfare (faregrad 4 eller 5) sendes det ut varsel til beredskapsetatene. Ved stor skredfare er det sannsynlig med naturlig utløste skred, og beredskapen handler om skred mot infrastruktur (vei, strømforsyning, osv). Den andre bruken av skredvarselet er i forbindelse med rekreasjon – og da typisk topptur på ski/splitboard (og etter hvert stadig mer snøscooter). Gjennom Safetecs samarbeid med NTNU har studenter i faget TDT4290 organisert åpent tilgjengelig data fra rekreasjonelle skredhendelser og presentert dette i et dashboard som vil postes på varsom.no. Videre har studentgruppen prøvd å forutse skredhendelser ved bruk av datadrevne metoder (maskinlæring).

En kjent sammenheng er at sannsynligheten for skred mot infrastruktur er høyest ved høye faregrader, mens de fleste snøskredulykker i forbindelse med ski skjer på faregrad 2 og 3. Årsaken er at de høyeste faregradene ofte forekommer ved dårlig vær/høyt fokus på skredfare (og dermed få eller ingen på ski i bratt terreng). Faregrad 2 er den vanligste faregraden (54% av dagene) og står for de fleste ulykkene (53%), mens faregrad 3 er overrepresentert på ulykkesstatistikkene. I vårt datasett ser vi at faregrad 3 er meldt 28% av dagene, og at 39% av de registrerte hendelsene har inntruffet på denne faregraden. Dager med faregrad 1 har lavest sannsynlighet for at en hendelse vil inntreffe.

For å forebygge skredulykker på ski bruker NVE samme metodikk som i andre bransjer, nemlig en kombinasjon av informasjon (et utfyllende skredvarsel med ferdselsråd) og holdningskampanjer. Dette er regnet som den beste måten å forebygge ulykker på, men samtidig er det ikke realistisk å tenke at vi vil ende med null skredulykker uten å ha svært inngripende tiltak (på en arbeidsplass kan man forby aktiviteter med risiko, å forby risikoaktiviteter på fritiden er ikke nødvendigvis verken mulig eller ønskelig). I tillegg til å forhindre ulykker må vi derfor også jobbe med å redusere konsekvenser, og i Norge har vi et stort beredskapsapparat som rykker ut ved ulykker. Det vi mangler er en beskrivelse av hvordan sannsynligheten for at en skredulykke skal inntreffe varierer i løpet av vinteren, og dermed har vi heller ingen god måte å dimensjonere beredskapen i løpet av vinteren på.

Årets oppgave til studentene i TDT4290 bestod av å systematisere data fra norske skredhendelser. Denne artikkelen gir en kort oppsummering av arbeidet som har blitt gjort, og alle resultater (inkludert kildekode) deles fritt/åpent.

Første del av oppgaven bestod av å bli kjent med de mest relevante APIene og presentere ulykkesdata i et dashboard.Resultatet ble en database som oppdateres daglig med alle personutløste snøskred som er registrert på RegObs. Hver skredhendelse samkjøres deretter med snøskredvarsel, 10 dagers værdata fra Xgeo (vind/temperatur på ulykkesstedet) og værdata fra nærmeste værstasjon. Å samkjøre databaser er en vanlig måte å skape merverdi av data på, og i dette tilfellet har vi en database med over 1300 norske personutløste snøskred med detaljerte værdata. Etter hvert som det registres flere hendelser og observasjoner i RegObs så vil databasen utvides, og vi håper at dette kan bli et nyttig verktøy for snøskredforskning. På sikt håper vi også å kunne inkludere både værmelding og trafikkdata (og evnt andre kilder) for å kunne finne flere sammenhenger.

Snøskredvarslingen hos NVE har tatt over ansvaret for databasen, og ambisjonen er at dette skal danne grunnlaget for oppdaterte norske statistikker over skredhendelser og -ulykker. Selve dashboardet er utviklet i Power BI og vil postes på varsom.no så snart NVE har gjort sine tilpasninger.

Del to av oppgaven var å utarbeide en maskinlæringsalgoritme for å forutse personutløste snøskred. Personutløste skred er hendelser hvor de skredtatte selv løser ut skredet. Hypotesen vår var at for gitte dager/områder hvor det registreres personutløste skred, vil høyere beredskap hos redningstjenesten kunne redusere konsekvensene av skredulykker. Det konkrete spørsmålet vi ønsket å besvare var «hva er sannsynligheten for at en rekreasjonell (topptur eller lignende) skredhendelse vil inntreffe i min varslingsregion i morgen?», og vi definerte tre faktorer som påvirker sannsynligheten for at et personutløst skred vil inntreffe:

  • Skredvarsel (skredfaren)
  • Været (når været er fint vil det være flere på ski, og høyere sannsynlighet for ulykke)
  • Fridager/helg (det er flere på ski i helger/ferier enn på hverdager)

Totalt hadde vi 12218 eksempler hvorav 514 var eksempler på hendelser, og vi definerte i utgangspunktet alle attributter (features) som vist på figuren under. Ved å plotte korrelasjoner i Seaborn fikk vi følgende:

For å unngå bias valgte vi å balansere treningsdataen (slik at vi hadde 514 eksempler på skredhendelser i tillegg til 514 tilfeldig valgte eksempler på dager uten hendelser), og endte dermed med et balansert datasett på 1028 eksempler. Vi brukte først et nevralt nett i Tensorflow med to skjulte lag og 16 attributter – og endte med en nøyaktighet på omtrent 61% på balansert testdata (men lavere nøyaktighet på ubalansert data). Vi gjorde flere forsøk på å øke nøyaktigheten (flere/færre skjulte lag og en lineær modell), uten at vi greide å oppnå tilfredsstillende nøyaktighet. Som sett på korrelasjonsplottet over har vi ingen sterke korrelasjoner mot «avalanche» (som vi ønsker å predikere), og det er usikkert om dette er på grunn av datakvaliteten eller datamengden. En annen mulighet er om det rett og slett er så mange tilfeldigheter involvert at statistiske metoder vil gi bedre resultater (vi kan ha to like dager etter hverandre hvor det skjer en hendelse bare én av dagene, noe som kan gjøre det vanskelig for algoritmen å gjenkjenne et mønster).

Maskinlæringsmodellen er dokumentert og delt i en notebook på Github, og vi oppfordrer alle som er interesserte til å forsøke å oppnå bedre resultater enn vi gjorde. I tillegg håper vi at dette sammen med dashboardet kan virke motiverende for å dele mer data på RegObs slik at fremtidige forsøk på å utvikle denne typen modeller kan basere seg på mer data.

Vi håper at arbeidet vi har gjort kan være et bidrag til norsk skredforskning. Dersom noen har spørsmål så er det bare å ta kontakt enten med studentgruppen, NVE eller Safetec.

Safetec har tradisjon for å foreslå oppgaver til faget TDT4290 ved NTNU og årets gruppe bestod av Mattis Levik Trygstad, Johannes Åsheim, Joakim Danielsen Petersen, Jenny Almestad, Henrik Forbord, Simen Holmestad, Ulrik Astrup Arnesen og Johanne Lie. All programmering har blitt utført av studentgruppen (når det skrives «vi» så betyr det altså arbeid utført av studentene). I tillegg har Albert Lunde (Nasjonalt kompetansesenter for fjellredning) og Karsten Müller (NVE) bidratt med verdifull skredfaglig kompetanse. All data som brukes i dashboard/maskinlæring er fra åpne APIer hos https://data.norge.no. Alle resultater/kildekode fra oppgaven deles fritt/åpent.

Hvilke problemer kan løses med maskinlæring?

Maskinlæring, eller kunstig intelligens (AI)1, er et av de store buzzordene for tiden og det er lett å tenke på roboter og datamaskiner som tenker helt selv. Sannheten er at vi foreløpig er langt unna det vi ser på film, men at kunstig intelligens likevel er mer utbredt enn mange av oss er klar over. For oss i Safetec er kanskje det mest typiske bruksområdet for kunstig intelligens mønstergjenkjenning – man viser en algoritme mange eksempler på noe man vil at algoritmen skal gjenkjenne, og jo flere eksempler man viser jo flinkere blir algoritmen til å gjenkjenne mønsteret. Til sammenligning er dette samme måten vi lærer barn å se forskjell på forskjellige dyr – vi beskriver ikke forskjellen på en hest og et esel (noe som ville tilsvare å eksplisitt programmere hvordan dyr ser ut), i stedet viser vi både barnet og algoritmen mange eksempler på hester og esler. Og selv om det er vanskelig å forklare nøyaktig hva som er forskjellen på hester og esler, så lærer etter hvert både barnet og algoritmen å se forskjellen på dem.

Å gjenkjenne dyr er et eksempel på mønstergjenkjenning. Andre mønstre kan være å forutse boligpriser basert på fakta om boligen som selges, forutse hvilke annonser som bør vises til en bestemt person, anbefale filmer basert på hva en person har sett tidligere – eller forutse sannsynlighet for ulykker eller behov for vedlikehold basert på mer eller mindre synlige mønstre i data som blir registrert. Et typisk maskinlæringsproblem kan altså defineres med følgende:

1. Vi trenger mange eksempler med forskjellige utfall (for å lære oss å gjenkjenne en katt trenger vi mange bilder av katter – og mange bilder av andre dyr enn katter)

2. Hvert eksempel må kunne beskrives med annoteringer (labels) og attributter (features)

    • Annoteringer beskriver hva vi har et eksempel av (hvert bilde må merkes med «katt» eller «ikke katt»)
    • Attributter er datapunkter (tall) som beskriver eksempelet (i bildegjenkjenning er det pikselverdier, i forbindelse med prediksjon av vedlikehold kan det være sensordata)

Og dersom vi har et stort datasett med mange eksempler (hvor hvert eksempel har både attributter og annoteringer), så handler altså maskinlæring om å bruke programvare (som for de fleste algoritmer løser et regresjonsproblem ved å minimere en kostnadsfunksjon) for å finne mer eller mindre åpenbare mønstre og sammenhenger i dataen. Og når vi har funnet mønstre og sammenhenger i historisk data, så bruker vi dette til å forutse fremtiden. Maskinlæring/AI er altså ikke noe magisk – på samme måte som utvikling innen CFD-software gjør at vi bedre kan modellere strømninger så gjør utvikling innen maskinlæring at vi bedre kan finne mønstre og sammenhenger i data. Og i en verden hvor det registreres stadig mer data blir det stadig viktigere å lete etter mønstre og sammenhenger i den registrerte dataen.

Beskrivelsen over (i tillegg til selve skredprosjektet) beskriver det som kalles supervised learning og er bare en av flere maskinlæringsteknikker som brukes. For å få en god (og veldig grunnleggende) innføring i AI-teknikker anbefales det gratis nettkurset https://www.elementsofai.com/no/ . Dette er også relevant for deg som aldri tenker å jobbe med AI selv – bare det å gjenkjenne problemer som kan løses ved bruk av AI (og deretter kontakte andre for å trene selve algoritmen) kan fort skape store verdier.

1 Maskinlæring og kunstig intelligens brukes ofte om hverandre (også i dette innlegget), men strengt tatt er maskinlæring én del av det større feltet kunstig intelligens.

Har du store datamengder du trenger hjelp til å strukturere og skape mening ut av?

Kontakt Mahdi Ghane (Mahdi.Ghane@safetec.no) for en uforpliktende prat!