Soveltuuko koneoppiminen myös turvallisuuskriittisiin järjestelmiin? – Osa 2

Blogini ensimmäinen osa käsitteli sitä, miten standardit säätelevät koneoppimisen soveltamista turvallisuuskriittisiin järjestelmiin. Tässä jälkimmäisessä osassa keskityn tarkemmin ongelmiin, joita syntyy, jos ohjelmistojen eheys pyritään turvaamaan perinteisin menetelmin koneoppimista soveltavissa turvallisuuskriittisissä järjestelmissä. Perinteisesti ohjelmistojen eheys pyritään turvaamaan laatimalla yksityiskohtainen vaatimusmäärittely ja varmistamalla lähdekoodin rakenteellinen testikattavuus testaamalla yksiköt perinpohjaisesti. Lopuksi, kattava toiminallinen testaus varmistaa, että lopputulos vastaa vaatimusmäärittelyä.

Miksei tämä lähestymistapa toimi?

Koneoppimismenetelmien ongelmien perimmäinen syy on siinä, että ne perustuvat tietoaineistoon ja oppimiseen. Vaikuttaa itsestään selvältä, että tekoäly voi suoriutua tehtävästään vain juuri niin hyvin kuin käytettävissä oleva opetusaineisto antaa myöden. Ennen kuin koneoppimista voidaan soveltaa, tuleekin varmistua ainakin siitä, että käytettävissä oleva aineisto on täydellistä ja tasapuolista eikä sitä ole tietoisesti muuteltu. Tähän liittyen haasteeksi muodostuu myös se, ettei koneoppimiselle ole vaatimusmäärittelyä. Emme myöskään pysty sanomaan, miksi jokin syöte (input) tuottaa tietyn tuloksen (output). Koneoppimisen suorituskyky perustuu opetusaineistoon, ja tavallaan on siis hyväksi, ettei vaatimusmäärittelyä tarvita. Koneoppiminen kun toimii erittäin hyvin myös niissä tapauksissa, joissa yksityiskohtaisen vaatimusmäärittelyn laatiminen olisi mahdotonta. Toisaalta tämä sotii turvallisuustekniikassa jo vuosikymmeniä sovellettuja parhaita käytäntöjä vastaan. Koneoppimista sovellettaessa myös järjestelmän käyttöönotosta tulee entistä monimutkaisempaa, kun tulosten muodostuminen ei enää ole samalla tavalla ymmärryksemme rajoissa. Perinteisessä turvallisuustekniikassa järjestelmän täydellinen ymmärtäminen on kuitenkin välttämätöntä, jotta sen turvallisuustaso voidaan määrittää. Tämä tekee asiasta ongelmallisen. Koneoppimisen selitettävyyden tutkiminen onkin vielä lapsenkengissä.

Koneoppimisen ja turvallisuuskriittisten järjestelmien yhteen saattamiseen liittyy toinenkin ongelmavyyhti. Sen voi kiteyttää kahteen termiin: robustisuus ja skaalautuvuus. Jotta perinteiset menetelmät kuten laaja rakenteellinen testikattavuus ja kattavat toiminalliset testit olisivat toteutettavissa, turvallisuuskriittiseen järjestelmän mahdolliset syötteet tulisi mieluusti olla hallittava määrä. Koneoppimista hyödyntäviin järjestelmien syöteavaruus on kuitenkin yleensä valtava, minkä vuoksi kattavat testit ovat periaatteessa mahdottomia. Monimutkaisissa deterministisissä ohjausjärjestelmissä tämä skaalautuvuusongelma on jo yleisesti tiedossa, mutta koneoppimista sovellettaessa ongelmasta tulee merkitävästi pahempi. Skaalautuvuusongelman ohella myös robustisuuteen liittyy ongelmia. On yleisesti tunnettua, että esimerkiksi syöte x antaa koneoppivassa järjestelmässä täysin erilaisen tuloksen, jos sitä muutetaan sopivasti vain hiukan lisäämällä pieni d. Tämä vaikuttaa niin koneoppivan järjestelmän turvallisuuteen kuin sen tietoturvaankin.

Mitä meidän tulisi tehdä?

Yllä olevasta käy selvästi ilmi, etteivät perinteiset turvallisuustekniikan keinot ole sellaisenaan oikea ratkaisu, kun pohditaan koneoppimisen käyttöä turvallisuuskriittisissä järjestelmissä. Koneoppimisen käyttöön turvallisuuskriittisissä järjestelmissä on kuitenkin muutama toimivaa mahdollisuutta. Näistä ehkä parhaiten tunnettu on niin sanottu ”safety bag”-lähestymistapa. Tekniikka perustuu siihen, että itsenäinen ulkopuolinen valvoja tarkistaa koneoppivan komponentin tuottamat tulokset. Jos koneoppiva komponentti esimerkiksi rikkoo sääntöjä tai ylittää jonkin ennalta määrätyn turvallisuusrajoituksen, valvova komponentti puuttuu asiaan. Tässä lähestymistavassa valvova komponentti on turvajärjestelmän ylin taso, ja koneoppivalle komponentille asetettavia vaatimuksia voidaan löyhentää. Varjopuolena on se, että koneoppiva järjestelmä menettää samalla suuren osan joustavuudestaan. Siksi tätä lähestymistapaa onkin järkevä käyttää vain rajoitetusti.

Nykyisellään koneoppimisen soveltaminen turvallisuuskriittisiin järjestelmiin on riskialtista ja edellyttää, että sekä ratkaistava ongelma että koneoppimisen taustalla oleva teknologia ymmärretään perinpohjaisesti. Rajatuissa ympäristöissä tässä on kuitenkin onnistuttu, mikä kannustaa suuresti yrittämään jatkossakin. Turvallisuusalan tutkijoille aihe on äärimmäisen ajankohtainen, ja itse seuraan mielenkiinnolla esimerkiksi AI Safety Landscape -projektia.

Huld pyrkii nyt ja jatkossakin selvittämään, mihin kaikkeen koneoppimista voidaan soveltaa – turvallisuudesta tinkimättä.

Timo Latvala