Dataprogrammer som kan kode ved bruk av kunstig intelligens risikerer å gjøre de samme feilene som vi menneskelige kodere har gjort, bare raskere.

Kode som selv skriver kode: Er det så lurt?

KRONIKK: Nå kan kunstig intelligens hjelpe til med å skrive dataprogrammer. Anders Løland skriver om hva som kan gå galt.

Publisert

Tenk deg at du koder, altså at du lager dataprogrammer. Du har mye du skulle ha gjort og må kode masse.

I 2015 stiftet av Elon Musk firmaet OpenAI, som utvikler kunstig intelligens. En dag kommer OpenAI og sier at du kan slippe unna med en brøkdel av kodinga. OpenAI har nemlig funnet opp en kodealgoritme. Vil du bruke den?

Slik fungerer det

OpenAIs kodemaskin heter Codex, og Codex er et imponerende verktøy. Jeg har prøvd kodemaskinen (den kan testes i GitHubs Copilot). Jeg ville få den til å skrive kode som kunne regne ut arealet av en sylinder. For å gjøre det skrev jeg denne kommentaren for programmeringsspråket Python:

# return area of a cylinder with radius r and height h

Jeg skriver her «return» for at koden skal returnere, altså gi meg tilbake, arealet til en sylinder. Jeg fikk tilbake denne Python-koden fra kodemaskinen Codex:

def area_cylinder(r, h):

return (2 * 3.14159 * r * h) + (2 * 3.14159 * r ** 2)

Koden lar meg sende inn radius (r) og høyde (h) til sylinderen, og returnerer et areal, og i dette tilfellet gjør koden det den skal.

Dette er ikke veldig vanskelig å kode selv, men det kan veldig godt tenkes at du kan bli en mer effektiv koder med Codex. Utvikler Arne Molland bekrefter dette i et intervju med kode24.

Kode er språk

Programkode er egentlig bare et språk med sin egen, sære grammatikk. OpenAI har trent opp en såkalt språkmodell, eller maskinlæringsmodell for språk, fra store mengder åpent tilgjengelig kode.

En måte å trene en slik modell på, er å generere en funksjon som area_cylinder(r, h) ut fra kommentaren (# return area) og så teste om den gjør det den skal. Dette forutsetter at en automatisk kan teste om koden gjør det den skal, noe som ikke er trivielt.

Dette løser Codex ved å ha innebygde tester som sjekker om den nye koden den lager fungerer.

Hvor lenge var Adam i paradis?

Et imponerende system som Codex har også en lang rekke utfordringer. En av de er at Codex er trent på åpen kode. Åpen kode er kode som er skrevet på en slags dugnad, og er gjort fritt tilgjengelig for alle, ofte under forutsetning av at koden må forbli åpen for alle som gjenbruker den.

Det at Codex lærer av åpen kode kan bety at kode som var ment for fornuftig gjenbruk plutselig kan gjenbrukes av store kommersielle aktører, noe utviklere Wired har snakket med ikke liker. Og siden Codex er så komplisert og lærer av enorme mengder åpen kode, kan det være vanskelig å finne ut om den åpne koden brukes på en lovlig måte eller ikke.

I verste fall kan kode som skriver kode gjøre det lettere å masseprodusere datavirus og farlig programvare.

Dessuten kan den store språkmodellen for kode som OpenAI har trent opp, altså Codex, inneholde direkte kopier av dataene, altså koden, den er trent opp på, noe Nicholas Carlini og hans medforfattere har vist at kan skje i denne vitenskapelige artikkelen fra en nylig konferanse.

Vi kan ta det helt med ro om det skulle vise seg at Codex inneholder direkte kopier av den åpne koden den er trent opp på. Men dersom noen velger å trene opp et alternativ til Codex også fra lukket kode, som kan inneholde bedriftshemmeligheter eller sensitive data, er dette en fallgruve.

Farlig kode

I og med at Codex lærer av andres kode, kan vi sitte igjen med noen av de samme utfordringene som i all maskinlæring som lærer av mye data: Codex risikerer å gjøre de samme feilene som vi (menneskelige kodere) har gjort, bare raskere.

Hele poenget med Codex må være å kunne kode mer effektivt, så hvor mye tid og energi har du da til å dobbeltsjekke koden du har fått fra Codex? Feil i kode kan bety at koden ikke virker, men det kan også bety at den inneholder sikkerhetshull som er vanskelige å oppdage.

I verste fall kan kode som skriver kode gjøre det lettere å masseprodusere datavirus og farlig programvare. Og tenk om modeller som Codex bevisst manipuleres av ondsinnede aktører, for eksempel ved å prøve å legge kode med sikkerhetshull inn i koden modellene trenes på?

Alt blir bra (?)

Kode som skriver kode er litt skummelt, men jeg tror det går seg til rimelig bra. OpenAI er åpen om at det kan være utfordringer med Codex, og jobber med å bøte på mange av dem, noe OpenAI gjør rede for i denne åpne artikkelen.

Artikkelen er riktignok ikke fagfellevurdert ennå, og et mål med fagfellevurdering er nettopp å åpne opp for mulig faglig kritikk. Og dersom GitHubs Copilot, den kommersielle versjonen av Codex, misbruker kundenes kode eller sprer sikkerhetshull, mister GitHub fort kunder.

I mellomtiden fascineres jeg fortsatt av Codex. Jeg spurte den til slutt om:

# return the meaning of life

og fikk til svar:

>def meaning_of_life():

return 42 # the answer to life, the universe and everything



Vi vil gjerne høre fra deg!

TA KONTAKT HER
Har du en tilbakemelding på denne kronikken. Eller spørsmål, ros eller kritikk til Forskersonen/forskning.no? Eller tips om en viktig debatt?

Powered by Labrador CMS