söndag 2 juni 2019

Mer maskininlärning inom materialfysiken

For those who prefer to read in English, this post is also available on my other blog.

I ett tidigare inlägg kollade vi på en vetenskaplig studie där maskininlärning användes för att bestämma vissa egenskaper hos dopat grafén. En av mina tankar kring detta var att studien var lite otillfredsställande eftersom den visserligen visade att neurala nätverk kan tränas till att bestämma materialegenskaper, men inte innehöll några försök att förstå hur nätverket nådde ett visst resultat - trots att detta hade kunnat lära oss något både om nätverket och om dopat grafén som sådant.

Faktum är att i artikeln om dopat grafén refereras en studie där man har gjort just ett sådant försök, fast för en helt annan forskningsfråga. I artikeln, som är publicerad i Nature Communications, avhandlas problemet med en robust metod för att klassificera kristallstrukturer utan att använda en uppsjö av svårjusterade tröskelvärden och parametrar. Dessutom tillämpar de en metod för att undersöka vad som händer i det neurala nätverket.

Klassificering av kristallstrukturer låter i och för sig inte som det mest spännande problemet i världen, men inom materialvetenskap och kondenserade materiens fysik är det rätt viktigt. Många material är kristallina, d.v.s. de består av grupper av atomer som upprepas på ett regelbundet sätt. Att veta hur de här grupperna av atomer ser ut och vilka typer av symmetrier de uppvisar är viktigt för att kunna förstå, undersöka och modellera material - samt ibland för att ta reda på hur de kan användas och förbättras. Det är också en ganska långdragen process som lätt kan gå fel, exempelvis om det finns störningar i den mätdata man använder. Dessutom innehåller alla verkliga material man kan mäta på defekter, d.v.s. avvikelser från den struktur man försöker känna igen. I studien vi pratar om här är målsättningen att utveckla en robust klassificeringsmetod som kan hantera närvaron av defekter utan att det leder till felaktiga klassificeringar.

Första steget är att bestämma vilken sorts indata man ska använda. Detta är mer komplicerat än man kan tro eftersom det kan påverka klassificeringen - använder man t.ex. atomernas positioner relativt varandra rakt av så kan det leda till en större känslighet för vissa typer av defekter. Istället har man valt att använda diffraktionsmönster, som reducerar informationen om atomers positioner och relativa avstånd till varandra till ett antal prickar i ett bestämt mönster. (Om du minns diffraktionsmönster från fysiklektionerna i gymnasiet så är det här ungefär samma sak, fast med lager av atomer istället för diffraktionsgitter och elektromagnetisk strålning med kortare våglängd än synligt ljus.) Diffraktionsmönstren används som indata i ett convolutional neural network (CNN) med flera lager, som plockar ut karaktäristiska drag ur mönstret och sedan klassificerar det baserat på de karaktäristiska dragen. I den här studien visade tester av nätverket goda resultat även i fall där strukturerna man försökte klassificera inkluderade en stor andel defekter.

Det intressantaste med den här studien är dock hur forskarna valde att utvärdera sitt nätverk. Som vi nämnt i tidigare inlägg så kan man likna första lagret i ett CNN med att man jämför delar av en bild med en annan, mindre bild, och om de matchar varandra får man en positiv output. Output från den första omgången används sedan i ytterligare en jämförelse som plockar ut mer komplicerade drag, och så vidare. När man tränar det neurala nätverket justerar man de mindre "bilderna", även kallade filter, så att de svarar mot drag i inputbilderna som gör det möjligt för nätverket att göra en korrekt klassificering. Om det är nödvändigt att plocka ut igen räta linjer för att klassificera indata korrekt så kommer några filter att motsvara räta linjer, är prickar viktiga kommer några filter att motsvara prickar, och så vidare.

Detta innebär också att när det neurala nätverket är färdigtränat och används för att processa en bild så kommer det, efter många lager av jämförelser, att finnas en del av nätverket som representerar de drag som finns i bilden och som det neurala nätverket har tränats till att plocka ut och klassificera. Den här delen av nätverket skulle kunna visa på vilken information nätverket använder för klassificering av den aktuella bilden, men eftersom stegen innan är såpass komplexa är den också svår att tolka. Det är emellertid möjligt att plocka ut den här representationen av de utvalda dragen och gå igenom alla tidigare steg i nätverket fast baklänges. Denna process genererar en sorts bild som också visar vilka drag nätverket har plockat ut ur den ursprungliga bilden, men på ett sätt som är lättare att tolka. Genom att använda den här metoden kunde forskarna visa att det neurala nätverket automatiskt hade lärt sig att klassificera baserat på drag som människor också använder för att klassificera kristallstrukturer, som avstånd mellan plan av atomer.

Så vad är det som är så intressant med detta? För det första visar det på en metod för att kontrollera att nätverkets klassificering baseras på något som vi skulle anse betydelsefullt, och inte till exempel på någon typ av slumpmässigt brus som är mer vanligt i vissa typer av bilder än andra. För det andra pekar det på att man kan använda neurala nätverk inte bara för att klassificera data utan också för öka vår förståelse för den data vi klassificerar. Det är trots allt möjligt att nätverket kan plocka ut någon skillnad mellan olika data som vi inte omedelbart inser vikten av. Personligen anser jag att det är en bra strategi om man ska tillämpa maskininlärning inom fysik - att inte bara se hur man kan använda neurala nätverk, utan också varför det fungerar.