Blog: Automation is coming
BLOG
SOFTWARETEST

Robotterne kommer – hvordan klarer du dig?

Udviklere og it-arkitekter udfordres af Kunstig Intelligens (KI). hvad de kan gøre for at forberede sig på det?

Du er i dine 20’ere, 30’ere eller 40’ere og surfer på bølgen af nye digitale teknologier uden nogen form for frygt for ”hvad der måtte komme”. Vi ved dog at KI med machine learning og kognitiv automatisering er ved at dukke op fra de dybe ukendte vande og at disse teknologier vil ændre transport, fast food og landbrugs industrierne. Vi ved endda at disse teknologier ikke kun vil påvirke industrifag, men alle jobprofiler fra bogholdere, advokater og læger til  data-forskere, som allerede arbejder med KI. Det store spørgsmål der skal besvares er hvordan revolutionen inden for KI vil påvirke softwareudvikling og dermed influere udviklere og it-arkitekter? Hvad skal du forvente i 2020’erne og hvordan kan du forberede dig på det?

For at forstå, hvad der vil ske I 2020’erne, må vi først fordybe os i, hvad der skete i de sidste 61 år indenfor KI feltet.

Historien om kunstig intelligens

Det første Machine Learning program og neurale netværk

Begrebet "Machine Learning" er ikke nyt. Den første elektroniske enhed, der kunne lære og genkende mønstre [Cor57], blev bygget allerede i 1957 af Frank Rosenblatt. Den første machine learning prototype blev bygget i 1961 af Leonard Uhr og Charles Vossler [Pat61]. Selvom neurale netværk har eksisteret i lang tid, så har deres læring krævet mange, på forhånd beskrevne digitale data, som var sjældne og dyre i 1960'erne. I dagens digitale verden leverer især sociale medier enorme mængder af, på forhånd beskrevet data, hvert sekund. Sensorer var på daværende tidspunkt analoge og upræcise i forhold til nutidens sensorer i telefoner, smarte huse og biler. Det var nok derfor, at skak var så interessant at automatisere, fordi den sensoriske dataindgang var enkel (kun 8x8 felter og 12 typer af brikker), men som kunne resultere i mindst 10^120 sandsynlige skakspil [Che], hvilket er større end mængden af atomer i det kendte observerbare univers [Uni].

Skakspillet selv var simpelt nok at kode, men det var ikke nemt at få maskinen til at vinde selve spillet. Det var indlysende at neurale netværk havde potentiale, men intet neuralt netværk var på det tidspunkt i stand til at slå en menneskelig skakmester.

2000’erne

Der skete noget i 2000'erne, som fik KI til udvikle sig og løse problemer, som KI ikke kunne løse før. DARPA arrangerede i 2004 en konkurrence for selvkørende biler: "The DARPA Challenge". Her lykkedes det ikke nogle af bilerne at fuldføre banen; bilen der kørte længst nåede kun 12 km.

DARPA forsøgte igen i 2005 og fik helt andre resultater: 23 af 24 biler klarede at slå rekorden på de 12 km, hvor 5 af de 24 biler klarede at fuldføre hele banen på 212 km.

Hvad skete der? Det var bl.a. at digitale online kort blev gjort tilgængelige, at værktøjer til billedanalyse blev bedre, osv.

Deep learning

Software udviklere og forskere krævede ikke nær så mange data til at bygge en billedgenkendelses-algoritme, som et neuralt netværk krævede. I slutningen af ​​2000’erne var der tilstrækkelig mange på forhånd beskrevne digitale data til rådighed til at machine learning softwaren kunne reimplementere de eksisterende billedgenkendelses-algoritmer, som mennesker allerede havde udviklet. Deep learning var en af ​​machine learning metoderne, der splittede læringen i flere lag. Det første lag lærte at genkende simple former fra pixels. Det næste lag lærte at genkende ansigter fra enkle former. På denne måde kunne maskinerne bygge lag og lære f.eks. at genkende sygdomme og kræft ud fra medicinske-fotos, og blive bedre til det end tilsvarende menneskelige specialister. Ikke nok med at Deep learning gjorde det muligt at genudvikle de tidligere billedgenkendelses-algoritmer, de kunne endda forbedre dem. Maskiner lærte ikke kun at genkende genstande på billeder, men begyndte også at lave egne billeder kaldet "computer drømme" [Ifl]. Maskiner begyndte endda at skifte sommer til vinter på eksisterende fotos og at skifte fra dag til nat og omvendt [Pix]. Machine learning algoritmerne var ikke nye, men de nye store datasæt gav klart nye muligheder.

Hvad kan man forvente?

Softwareudvikling udført af mennesker

Software handler om at kortlægge inputs med de korrekte outputs for at løse specifikke problemer. En softwareudvikler kunne tage et komplekst fænomen fra virkeligheden og forfine de nødvendige mønstre til en algoritme:

 

Softwareudvikling udført af maskiner

Størstedelen af machine learning handler kun om at forbinde inputs med outputs, men machine learning, som er baseret på evolutionære algoritmer er i stand til at udvikle sig selv, ved at sammensætte koderstykker sammen og derved skabe helt nye algoritmer. Denne type evolutionærudvikling er meget hurtigere end den traditionelle udvikling udført af mennesker.

F.eks. lykkedes det i 1997 at bygge den første computer kaldet Deep Blue, som var i stand til at vinde over verdensmesteren i skak. 20 år senere kunne den nye computer AlphaGo i 2017, kunne vinde brætspillet ”Go” over den bedste spiller i verden.

Samme år blev AlphaGo Zero (en ny version af AlphaGo) udviklet baseret på reinforcement learning, som lærte sig selv at spille Go fra bunden. I løbet af kun 4 timer var den i stand til at banke den originale AlphaGo 100 gange i træk [Dep].

En maskine kunne pludselig skabe en algoritme på 4 timer, som var bedre end den algoritme som menneskelige udviklere, it-arkitekter og forskere havde brugt 20 år til at bygge. Dette beviser at machine learning kommer til at udkonkurrere udviklere og it-arkitekter.

Det er dog ikke helt fair at sammenligne den menneskelige udviklingstid på 20 år, med maskinens læringstid på 4 timer, siden det også tog tid at udvikle selve lærings-algoritmen. Men hvad vi ikke bør glemme er, at lærings-algoritmen kan genbruges til andre projekter, hvor den menneskelige udviklingstid ikke kan.

Risikoen ved ikke at forstå

I de sidste 70 år er software blevet bygget på simple algoritmer, som mennesker kan forstå (selv om algoritmerne er vanskelige for mennesker at forstå, så er de stadig ret simple). Machine learning software kan skabe nye typer algoritmer, der er meget mere komplekse og dermed umulige for mennesker at forstå. I dag er vi er langt mere afhængige af vores software end vi nogensinde har været før. Derfor er det at løbe en stor risiko, hvis vi ikke kan forstå de algoritmer, som ligger bag vores software.

Konsekvenserne er ikke så dystre, når en vejr-robot forveksler ordet "i aften" med et bynavn, i det tilfælde ville sætningen "Hvad er vejret i aften?" få vejr-robotten til at svare: "Jeg kender ingen by der hedder 'i aften'. Prøv en anden by".

Misforståelser af ord vil derimod have langt større konsekvenser for et kritisk sundhedssystem, især hvis ingen mennesker er i stand til at løse misforståelsen. Nogle vil sige, at disse fejl sker, fordi KI stadig er i de tidlige udviklingsstadier, og at det dermed kun er et spørgsmål om tid, før disse misforståelser ikke sker mere– men er det nu også rigtigt?

Komplekse algoritmer er ikke perfekte

Kurt Gödel beviste med sin ufuldstændighedssætning, at alle systemer er ufuldstændige, endda matematik. Jeg har forenklet Gödels bevis til følgende:

  1. For at en sætning skal være sand i matematikken, skal den kunne bevises.
  2. Men hvad med: "Denne sætning kan ikke bevises"?

Hvis denne sætning er sand, kan den ikke bevises og dermed falsk ifølge matematikken.

De dårlige nyheder: Komplekse algoritmer skabt af maskiner er også systemer og derfor ufuldstændige, fejlbehæftede og indeholder uventede fejl.

Den gode nyhed: En skak-algoritme behøver ikke at vinde alle spil. Den behøver blot at vinde flere spil end den nuværende verdensmester (menneske eller maskine). Hvis mennesker kan designe et sundhedsvæsen som et brætspil, så vil maskiner finde bedre og bedre måder at vinde spillet på, ligesom tilfældet med AlphaGo Zero, som formåede at vinde brætspillet ”Go”  bedre end noget menneske kunne.

Test Driven Reinforcement Learning

I traditionel udvikling af machine learning bliver datasættet opdelt i træningsdata (80%) og testdata (20%). Træningsdataen bruges til at træne maskinen, mens testdataene bruges til at vurdere, hvor præcis en maskine er til at forudsige / kategorisere. Data, der reducerer præcisionen, fjernes fra datasættet, mens data, der øger præcisionen, tilføjes. At bygge, navigere og forbedre datasættet kræver en data forsker eller en person med kompetencer indenfor matematik, statistik og IT. Dette begrænser desværre mange mennesker fra at arbejde med machine learning.

Reinforcement Learning handler om at belønne og straffe adfærd for enten at styrke ønsket adfærd eller mindske uønsket adfærd. Jeg har bygget en prototype: En bot, der skal følge et mål. Botten har 4 kameraer (et i hver retning) og et ben (så det kan bevæge sig i en retning). Botten vil, til at begynde med, flytte benet tilfældigt. For at styrke en benbevægelse kan en udvikler opsætte en teknisk test, der måler afstanden mellem botten og dens mål. Hvis afstanden falder, vil sandsynligheden for benbevægelsen blive forstærket, men hvis afstanden øges, vil sandsynligheden for benbevægelsen mindskes:

Billede foroven: „Visuelt eksempel på, hvordan min prototype lærer og aflærer.”

Min prototype kan endda håndtere ændringer i miljø og opsætning på grund af konstant læring og aflæring. Hvis to kameraer bytter plads, vil botten aflære de gamle kamera-bevægelsesrelationer og skabe nye.

Jeg kalder denne tilgang TDRL (Test Driven Reinforcement Learning) og den er anderledes end den traditionelle udvikling af Machine Learning. I stedet for at udarbejde et datasæt til maskinen, så giver jeg maskinen fri adgang til et ubehandlet datasæt eller miljø. Governance af maskinerne vil være i form af tests, som vil styre maskinens udvikling. Når maskinens adfærd skal ændres eller løses, kan der skrives nye tests. Eksempelvis implementerede Microsoft en KI chatbot "Tay", som desværre blev racistisk inden for 24 timer. Hvis denne chatbot var bygget på TDRL, kunne den let reparere sig selv, ved at udsætte den for en test der måler racisme-niveauet i en sætning. Chatbotten ville selv løse problemet, ved at validere sine sætninger og sænke sandsynligheden for at skrive noget racistisk.

Bogen "Testing in the digital age" [Tes2018] beskriver, at vi ikke kun får brug for tekniske tests (som i eksemplet ovenfor, hvor afstanden bliver målt.), men også etiske og konceptuelle tests. Dette vil kunne være en måling af empati, humor, og charme, for at robotterne kan påtage sig roller, som en partner, kollega eller assistent. Tekniske test vil være mindre komplekse at designe, mens etiske og konceptuelle test bliver vanskeligere. Etiske og konceptuelle tests vil kræve domæne-specifik viden, da begrebet "sundhed" eller "lykke" kan opfattes forskelligt: ​​Noget, der er sundt for mig, er ikke nødvendigvis sundt for mine børn eller naturen.

Opsummering

Hvordan vil KI revolution påvirke softwareudvikling og dermed udvikleren og it-arkitekten?

Der er ingen tvivl om, at den KI revolution vil forandre it-industrien i 2020'erne. Maskinerne vil skabe bedre og mere komplekse løsninger på mindre tid end en menneskelig udvikler eller it-arkitekt nogensinde vil kunne. Maskiner vil endda udfordre data forskerens rolle.

Hvad skal du forvente af ​​2020'erne?

Vi ser allerede behovet for styring af Machine Learning bots og dette behov vil kun vokse. Udviklere og it-arkitekter kommer til at designe tests, som kan styre maskinernes software udvikling.

Hvordan kan du forberede dig på det?

Der er allerede et eksisterende behov for at designe etiske tests, som f.eks. tilfældet med Microsofts racistiske KI chatbot. Men før de etiske tests kan implementeres, skal der udvikles et nyt sæt udviklingsværktøjer, for nye TDLR-prototyper.

Som udvikler eller it-arkitekt får du mulighed for i de kommende år at blive en del af udviklingen og få den fornødne erfaring til ikke blot at udforme de tekniske tests, men også de etiske og konceptuelle tests. Bogen "Testing in the digital age" [Tes2018] er en god start til at få indblik i, hvordan man skal håndtere disse nye udfordringer. Etiske og konceptuelle test kræver, at vi besvarer vanskelige domæne-specifikke spørgsmål såsom "hvad der er en god partner?", "hvad er et godt produkt?", "hvad gør kunden glad?" osv. Disse spørgsmål er vigtige og som udvikler eller it-arkitekt i 2020'erne vil og skal vi besvare dem!

 

Bartek Rohard Warszawski definerer "viden" som evnen til at forudsige en lokal fremtid - hvis man kan forudsige noget, så kan man forberede sig på det.

Han har næsten 30 års erfaring inden for softwareudvikling og -test, som han bruger, når han taler på konferencer, skriver artikler og holder workshops.


E-mail: Bartek.Warszawski@Capgemini.com

Linkedin: https://www.linkedin.com/in/bartek-rohard-warszawski/

 

References

[Cor57] "The Perceptron A perceiving and recognizing automaton (project para)", Cornell Aeronautical Laboratory, inc., Report No. 85-560-1, Frank Rosenblatt, January 1957

[Pat61] "A Pattern Recognition Program That Generates, Evaluates and Adjusts its Own Operators", Leonard Uhr and Charles Vossler, May 1961

[Che] http://mathematics.chessdom.com/shannon-number

[Uni] https://www.universetoday.com/36302/atoms-in-the-universe

[Ifl] http://www.iflscience.com/technology/artificial-intelligence-dreams/

[Pix] https://petapixel.com/2017/12/05/ai-can-change-weather-seasons-time-day-photos/

[Dep] https://deepmind.com/documents/119/agz_unformatted_nature.pdf

[Tes2018] Testing in the digital age, by Rik Marselis, Tom van de Ven, Humayun Shaukat, 2018, ISBN 9789075414875

todo todo
BARTEK WARSZAWSKI
  • Bartek Warszawski
    Bartek Rohard Warszawski
    QA Automation Specialist and Test Engineer
    +4539778398