Forfatter: Erik Weber-Lauridsen

  • Hvad er et netværk

    Hvad er et netværk

    Teksten her er en forsmag for noget at jeg gennemgår i faget Cloud under Akademiuddannelse i Informationsteknologi, som jeg ofte dækker som del af mit job som lektor på UCL Erhvervsakademi og Professionshøjskole.

    Et netværk er når flere PC’er er forbundet med hinanden. Reelt er to PC’er (eller andre computer enheder) nok. Normalt regner man det dog først som et rigtigt netværk når der er flere enheder på eller decideret netværks hardware involveret.

    Der er flere størrelser af netværk, der simpethen er defineret ud fra hvor stort et område de fysisk dækker – dog ikke ned til at man tænker i kvadratermeter niveau, men betegnelserne er på trods af dette stadig tydelige.

    Local Area Network

    Et lokal netværk (LAN) tillader computere og enheder, der er tæt på hinanden – og som regel at gør brug af den samme switch eller router – at oprette forbindelse til at dele filer og udføre opgaver sammen.

    Et LAN består kun af dagligdags enheder (desktops, bærbare computere, tablets, printere osv.), en router og/eller switch, og ethernet-kabler eller trådløse kort. Denne type fokuserer ikke på mere eksotisk telekommunikationshardware, da det er “uden for huset” (og dermed det lokale).

    Et LAN er relativt billige at sætte op og er almindeligt anvendt i hjemmet og på praktisk taget alle kontorer.

    Wide Area Network

    Et fjernnet (WAN) bruges til at forbinde computere, som ikke tæt på hinanden. Det er muligt – og næsten altid tilfældet – at LANs er forbundet til WAN. Dette muliggør små hjemme eller kontor netværk at oprette forbindelse til bredere netværk.
    De fleste WAN forbindelse gennem offentlige netværk, som telefonsystemet

    Internettet, der forbinder computere rundt omkring i verden, kan betragtes som den største WAN i eksistens. På grund af størrelsen kalder nogen det for Super Wide Area Network

    Mange forbundne LANs kan danne et WAN – hvilket jo netop er hvad Internettet er som nævnt ovenfor.

    Videoen her opsummerer det på engelsk og dermed med andre ord end mine:

    Hvordan kommunikerer PC’er over netværk

    Computere taler sammen gennem protokoller, der fortæller dem hvordan de skal sende hinanden data

    Der er historisk en lang række protokoller, men i dag bruges stort set udelukkende TCP/IP. Netværks-protokoller og opbygning af netværk bliver gennemgået mere dybdegående i senere dele af faget Cloud (og måske kommende artikler her på siden), men vi slutter af her med en god introduktion og forsmag på emnet i en gammel men ikonisk og stadig relevante* video fra Nokia Labs:

    Videoen er gammel og nostalgi trip for os der brugte Internettet i 90’erne – se bare den “gode”, gamle Netscape browser – men alle protokoller er det vi stadig bruger i dag. For hvis vi skiftede noget ville vi jo ikke kunne bruge Internettet sammen mere…

    * På nær en ting: Ping of Death som fænomen er ikke et problem i dag, da alt udstyr i årtier har modvirket det.

    Tak fordi I læste med så langt. Hvis du vil vide mere om området eller især om faget Cloud, hvor dette udklip stammer fra, så kontakt mig endelig.

  • Hvad er skyen

    Hvad er skyen

    Teksten her er en forsmag for noget at jeg gennemgår i faget Cloud under Akademiuddannelse i Informationsteknologi, som jeg ofte dækker som del af mit job som lektor på UCL Erhvervsakademi og Professionshøjskole.

    Cloud Computing kan defineres som at levere databehandlings-kraft (CPU, RAM, netværk, lager, OS og anden software) som en tjeneste over et netværk (normalt på internettet) i stedet for fysisk at have computer-ressourcerne på kundens placering.

    Cloud

    Baggrund

    Udtrykket “Cloud” stammer fra et netværksdesign, der blev brugt af netværksingeniører til at repræsentere placeringen af forskellige netværks-enheder og deres inter-forbindelse. Formen på dette netværksdesign blev set som en sky, med små partikler (enheder) svævende ud over et stort område.

    Business

    Typer skyer ud fra business

    Der er fire forskellige cloud-modeller, som du kan abonnere på efter virksomhedens behov:

    1. Private Cloud Her anvendes computere til en bestemt organisation. Denne metode bruges mere til intra-business interaktioner. Hvor computerressourcerne kan styres, ejes og drives af samme organisation.
    2. Community Cloud Her leveres computere til et fællesskab og organisationer.
    3. Public Cloud Denne type sky er normalt brugt til B2C (Business to Consumer) type interaktioner. Her bliver databehandlings-ressourcerne ejet, styret og drevet af regeringen, en akademisk- eller erhvervsorganisation.
    4. Hybrid Cloud Denne type sky kan bruges til begge typer interaktioner – B2B (Business to Business) eller B2C (Business to Consumer). Denne implementeringsmetode hedder hybrid-sky, da databehandlingsressourcerne er bundet sammen af forskellige skyer. De fleste organisationer er i dag endt med en sådan blandet løsning, hvilket nærmest også er krævet for at overholde moderne lovkrav til placering af data i forbindelse med datasikkerhed.
    Service

    Cloud computing services

    Der er tre primære former for cloud computing services:

    • Software as a Service (SaaS)
    • Platform as a Service (PaaS)
    • Infrastructure as a Service (IaaS)

    Forskellige forretninger bruger nogle eller alle af disse alt efter deres krav

    SaaS (Software as a Service)

    SaaS eller software som en tjeneste er en softwaredistributions-model, hvor applikationer er hostet af en leverandør eller tjenesteudbyder og stilles til rådighed for kunder via et netværk (internet).

    SaaS bliver en stadig mere udbredt leveringsmodel som underliggende teknologier, der understøtter Service Oriented Architecture (SOA) eller Web Services.

    Via internettet er denne service tilgængelig for brugere overalt i verden.

    Ved denne model overlades al drift af software og computer udstyr til tredje part, det eneste klienten er ansvarlig for er sin egen data.

    PaaS (Platform as a Service)

    PaaS leverer en platform og et miljø, der giver udviklere mulighed for at bygge applikationer og tjenester.

    Denne tjeneste hostes i skyen og tilgås af brugerne via internettet.

    PaaS-tjenester opdateres løbende og nye funktioner føjes til. Derfor kan alt fra softwareudviklere, webudviklere til virksomheder kan drage fordel af PaaS ud fra forskellige vinkler.
    Det giver platform der understøtter løbende applikations-udvikling, den lægger op til at servicen man kører derpå er under konstant udvikling da man kan stole på at der underliggende altid er tidsvarende og optimalt.

    Begrebet dækker således over software support og management services, storage, networking, implementering, testning, samarbejde, hosting og vedligeholdelse af applikationer.

    Tredjepart overtager altså ansvaret for al grundlæggende software som operativsystem og databaseservere samt den underliggende hardware medens klienten står for sin egen, specifikke software der kører derpå.

    IaaS (Infrastructure as a Service)

    IaaS (Infrastructure As A Service) er en af de grundlæggende servicemodeller for cloud computing sammen med PaaS (Platform as a Service) og SaaS (Software as a Service).

    Den leverer adgang til computerressourcer i en virtualiseret miljø “sky” på internettet.
    Den leverer nemlig computing infrastruktur som virtuel server plads, netværks-forbindelser, båndbredde, load balancers og IP-adresser.

    Puljen af hardware ressource er hentet fra flere servere og netværk normalt fordelt på talrige datacentre. Dette sørger for redundans og pålidelighed.

    Du lejer en “ren” maskine og infrastruktur og lægger så al software på selv og er ansvarlig for alt vedligehold på software niveau selv – fra operativsystem til klient specifik software.

    Tak fordi I læste med så langt. Hvis du vil vide mere om området eller især om faget Cloud, hvor dette udklip stammer fra, så kontakt mig endelig.

  • Sådan laver AI billeder

    Sådan laver AI billeder

    Kort om teknikkerne bag

    AI-billedgeneratorer arbejder ved at bruge deep learning-algoritmer til at lære de mønstre og funktioner, der findes i et stort datasæt af billeder.
    Disse algoritmer er typisk baseret på neurale netværk, som er designet til at simulere den menneskelige hjernes adfærd.

    Processen med at skabe et billede ved hjælp af en AI-billedgenerator involverer typisk følgende trin:

    1. Træning af modellen AI-billedgeneratoren trænes ved hjælp af et stort datasæt af billeder. Under træningen lærer modellen at identificere mønstre og træk i billederne, såsom linjer, former og farver.
    2. Generering af nye billeder Når modellen er blevet trænet, kan den bruges til at generere nye billeder. Dette gøres ved at forsyne modellen med et sæt input, som kan være tilfældig støj eller andre billeder. Modellen bruger derefter sine indlærte mønstre og funktioner til at generere et nyt billede, der ligner inputbillederne.
    3. Forfining af billederne De genererede billeder forfines ofte ved hjælp af yderligere algoritmer for at forbedre deres kvalitet og realisme. Dette kan omfatte teknikker som billedfiltrering, støjreduktion og farvekorrektion.

    Der er mange forskellige typer AI-billedgeneratorer, hver med deres egne styrker og svagheder.

    Nogle generatorer er optimeret til at skabe realistiske billeder, mens andre er designet til at skabe mere abstrakte eller stiliserede billeder.
    Derudover kan nogle generatorer trænes til at generere billeder i bestemte stilarter eller genrer, såsom portrætter, landskaber eller stilleben.

    Tidlige AI-billedgeneratorer var afhængige af Generative Adversarial Networks (GAN’er), men nyere teknologier skubber i retning af stabile diffusionsmodeller.

    Hvad er Generative Adversarial Networks

    Et Generative Adversarial Network (GAN) er en type kunstigt neuralt netværk, der bruges til generativ modellering, som involverer generering af nye dataprøver, der ligner et givet datasæt.

    GAN består af to neurale netværk, der trænes på en spillignende måde: et generatornetværk og et diskriminatornetværk.

    Generatornetværket tager tilfældig støj som input og genererer nye dataeksempler, der er beregnet til at ligne træningsdataene. Diskriminatornetværket tager både reelle og genererede dataeksempler som input og forsøger at skelne mellem dem.

    Generator- og diskriminatornetværket trænes på en modsætnings måde: Generatornetværket forsøger at generere dataeksempler, der narre diskriminatornetværket, mens diskriminatornetværket forsøger at skelne korrekt mellem reelle og genererede dataeksempler.

    Efterhånden som generator- og diskriminatornetværkene konkurrerer mod hinanden, lærer generatornetværket gradvist at producere dataeksempler, der i stigende grad ligner træningsdata.

    Over tid bliver diskriminatornetværket mere præcist til at skelne mellem reelle og genererede dataprøver, hvilket tilskynder generatornetværket til at producere bedre prøver.

    GAN’er har vist imponerende resultater med at generere realistiske billeder, lyd og tekst og har potentielle anvendelser inden for en lang række områder, herunder kunst, design og medicin.

    Træning af GAN’er kan dog være udfordrende og kræver omhyggelig justering af hyperparametre og netværksarkitekturer for at forhindre problemer såsom tilstandskollaps, hvor generatornetværket producerer begrænsede variationer af nogle få prøver.

    Fordele

    De kan producere meget realistiske billeder, især med træningsdata og arkitektur af høj kvalitet.

    De kan bruges til en lang række applikationer, herunder billed- og videogenerering, billedredigering og billed-til-billede oversættelse.

    Træningen er relativt hurtig sammenlignet med andre generative modeller.

    Minusser

    De kan være ustabil og svær at træne med udfordringer som modekollaps, hvor generatoren producerer begrænsede variationer af nogle få prøver.

    De kan producere skæve resultater, da det kan lære at reproducere skævheder i træningsdataene.

    De kan generere artefakter eller forvrængninger i outputtet.

    Hvad er Stable Diffusion modellen

    Stabil diffusion virker ved at anvende et sæt transformationer til en støjvektor for at generere et billede.

    Disse transformationer anvendes iterativt over en række tidstrin, hvorunder der gradvist tilføjes støj til billedet for at gøre det mere komplekst og realistisk.

    Nøglen til den stabile diffusionsalgoritme er brugen af ​​en diffusionsproces, der sikrer, at de genererede billeder er af høj kvalitet og er mangfoldige.
    I fysik beskriver diffusion den gradvise spredning af partikler i en væske.

    I forbindelse med generativ modellering bruges diffusionsprocessen til gradvist at generere et billede ved at tilføje støj til det over en række tidstrin.
    Ved hvert tidstrin transformeres støjvektoren af ​​en funktion, der er defineret af et neuralt netværk.

    Den transformerede støj blandes derefter med det aktuelle billede, og den resulterende blanding føres gennem et andet neuralt netværk, der forudsiger en maske, der bestemmer, hvor meget af det aktuelle billede, der skal bibeholdes, og hvor meget, der skal erstattes med blandingen.

    Processen gentages over flere tidstrin, hvor der tilføjes støj ved hvert trin for gradvist at generere et komplekst og realistisk billede.

    Fordele

    Kan producere højkvalitets og mangfoldige billeder, da diffusionsprocessen, der anvendes i Stable Diffusion, sikrer, at de genererede billeder er af høj kvalitet og er mangfoldige.

    Stoler ikke på modstridende træning, som kan undgå nogle af problemerne med GAN’er, såsom tilstandskollaps og bias-forstærkning.

    Den kan give ensartede resultater over tid.

    Minusser

    Den kan være beregningsmæssigt dyrt at træne og generere billeder, da det involverer et stort antal tidstrin.

    Den kan generere slørede billeder, især når der genereres små billeder eller billeder i lav opløsning.

    Den kan kræve større mængder træningsdata for at producere resultater af høj kvalitet.

    GANs vs. Stable Diffusion

    Sammenfattende har GAN’er og Stable Diffusion hver deres styrker og svagheder, og valget af den rigtige model afhænger af de specifikke krav til den aktuelle opgave.

    GAN’er kan være mere velegnede til opgaver, hvor realisme er en topprioritet, mens Stabil Diffusion kan være mere velegnet til opgaver, hvor mangfoldighed og konsistens er vigtig.

    Flere af de populære generatorer kombinerer de to teknikker i dag.
    Selv den service der hedder Stable Díffusion bruger GANs til nogle ting og kombinerer dem så med læring opnået gennem diffusion.

    Hvordan kommunikerer man med dem

    De fleste generative AI-billedgeneratorer bruger tekstbaserede prompter, også kendt som prompt engineering, og oversætter disse ord ved hjælp af en proces kaldet naturlig sprogbehandling (NLP).
    Derfra sammenlignes teksten med data, som maskinen er blevet trænet i til at forstå den semantiske betydning og kontekstuelle spor i teksten.

    NLP konverterer disse ord til en numerisk vektor, som har en tilsvarende “betydning”, som kan bruges til output.
    For eksempel ville “grønt æble på en tallerken” have tre separate beskrivende vektorer – “grønt”, “æble” og “plade”.
    Tallene forbundet med hver af disse hjælper AI-billedgeneratoren med at bestemme, hvad det er, du leder efter.

    Når alle disse tal er på plads, kan maskinen oversætte disse til et billede, som bliver den visuelle repræsentation af den tekstprompt, du har indtastet.

    Nogle AI-billedgeneratorer vil også give dig mulighed for at indtaste billeder som en del af din prompt eller lave tekstbaserede referencer til eksisterende berømte billeder for at hjælpe billedgeneratoren med at forstå, hvad du ønsker mere præcist.
    Du fodrer hermed med ægte billeder modellen kan sammenligne med.

    Prompt engineering og billedgenerering

    Prompt engineering er en proces, hvor du kommer med input som ord, sætninger, billeder eller videoer, der kan guide generative AI-værktøjer til at skabe dit ønskede output.

    Da AI-værktøjer typisk er baseret på store sprogmodeller (LLM), jo bedre prompt, jo mere præcist bliver resultatet. Disse modeller er trænet på store datasæt, så effektiv prompt engineering kan bygge bro mellem menneskelig og AI-kommunikation for at finde præcis det, du leder efter.

    I AI-billedgenerering er nogle af de bedste hurtige tekniske eksempler dem, der bruger traditionel kunst skabt af mennesker til at træne generative AI-systemer til at skabe nye, unikke kunstværker som et samarbejde mellem rigtige kunstnere og maskiner.

    Typer af prompt engineering

    Da kunstig intelligens er en teknologi i hastig udvikling, ændres de typer af prompter, vi bruger til at enerere billeder, også. Både sproglige færdigheder og kreative input er nødvendige for at generere AI-billeder, der ligner rigtige fotos eller grafik skabt af et menneske.

    Nogle af de mest almindelige typer prompt engineering, der i øjeblikket anvendes, er:

    • One-shot learning
    • Zero-shot learning
    • Chain-of-thought prompting
    • Iterative prompting

    One-shot learning

    Det er her, en bruger inkluderer et eksempel på, hvad de ønsker, at resultatet skal være inden for selve prompten, f.eks. et eksempel på et kunstværk, de ønsker at replikere, før han beskriver de nye detaljer, de ønsker i billedet.

    Zero-shot learning

    Denne type prompt har intet eksempel, men kræver flere detaljer om, hvad du ønsker, at resultatet skal være, fordi AI-maskinen ikke har nogen forudgående viden om, hvad du leder efter.

    For eksempel kan du skitsere de nøjagtige farver, former og størrelser af det, du vil have inkluderet i dit AI-billede.

    Chain-of-thought prompting

    Når du skal lave mere komplekse billeder, kan det være mere nyttigt at skitsere processen trin for trin end et langt tekstafsnit, der beskriver, hvad du leder efter, f.eks. “Opret et billede af en strand. Først skal du skabe havet og sandet. Dette skal efterfølges af en familie, der sidder på sandet til venstre på billedet. Tilføj derefter sandslotte omkring dem.”

    Iterative prompting

    Det er usandsynligt, at du får det nøjagtige output, du ønsker, ved et første forsøg.

    Med iterativ prompt forfiner du din prompt, efterhånden som resultaterne genereres, og bliver mere specifik hver gang, indtil du opnår det, du leder efter.

    I AI-billedgenerering kan dette omfatte forfining af farver eller mønstre i et billede, fjernelse af elementer, du ikke kan lide, eller tilføjelse af nye funktioner.

    Prompt engineering og billedgenerering

    Der er flere vigtige fordele ved at forstå prompt engineering og bruge det til at gøre din AI-billedgenerering mere effektiv.

    Højere kvalitet og mere præcise billeder

    Når du bruger de rigtige prompter, vil dine resultater være af meget højere kvalitet og mere sandsynligt, at det er det, du leder efter.

    Da kunstig intelligens er bygget på kontinuerlig træning, jo mere præcise og detaljerede dine prompter er på forhånd, jo bedre vil dine output komme fremad.

    Øget hastighed af billedgenerering

    Effektiv prompt vil øge hastigheden, hvormed du kan skabe billeder, der stemmer overens med dine retningslinjer og input markant.

    Da gode prompter skaber større nøjagtighed, betyder det også, at du vil bruge mindre tid på at forfine dine genererede billeder gennem iterativ prompting, fordi du har leveret alt, hvad maskinen har brug for på forhånd for at skabe det, du leder efter.

    Omkostningsreduktioner til billedoprettelse

    Når du kan generere billeder hurtigere og med større nøjagtighed, sparer du dyrebare ressourcer på dit team, som kan udmønte sig i betydelige omkostningsbesparelser på din teknologi.

    Da du ikke behøver så meget menneskelig indgriben, når du laver bedre billeder på forhånd, falder de omkostninger, du ville have til rettelser.

    Titelbillede genereret via Adobe Firefly

    Kilder

  • AIs historiske udvikling

    AIs historiske udvikling

    Hele begrebet kunstig intelligens, Artificial Intelligence (AI), er knap 70 år gammelt og har som så meget andet rødder i universitetsverdenen.

    Dartmouth-konferencen

    Dartmouth-konferencen i 1956 er en skelsættende begivenhed i kunstig intelligensens historie, det var et sommerforskningsprojekt, der fandt sted i 1956 på Dartmouth College i New Hampshire, USA.

    Konferencen var den første af sin art i den forstand, at den samlede forskere fra tilsyneladende forskellige studieretninger – datalogi, matematik, fysik og andre – med det ene formål at udforske potentialet i syntetisk intelligens (begrebet AI var ikke opfundet endnu).

    Under konferencen diskuterede deltagerne en bred vifte af emner relateret til AI, såsom naturlig sprogbehandling, problemløsning og maskinlæring. De lagde også en køreplan for AI-forskning, herunder udvikling af programmeringssprog og algoritmer til at skabe intelligente maskiner.

    Denne konference betragtes som et banebrydende øjeblik i AI’s historie, da det markerede feltets fødsel sammen med det øjeblik, navnet “Artificial Intelligence” blev opfundet.

    Dartmouth-konferencen havde en betydelig indflydelse på AI’s overordnede historie. Det var med til at etablere AI som et studieområde og tilskyndede til udviklingen af ​​nye teknologier og teknikker.

    Deltagerne opstillede en vision for kunstig intelligens, som omfattede skabelsen af ​​intelligente maskiner, der kunne ræsonnere, lære og kommunikere som mennesker. Denne vision udløste en bølge af forskning og innovation på området.

    Efter konferencen fortsatte John McCarthy og hans kolleger med at udvikle det første AI-programmeringssprog, LISP. Dette sprog blev grundlaget for AI-forskning og eksisterer stadig i dag.

    Konferencen førte også til etableringen af ​​AI-forskningslaboratorier på flere universiteter og forskningsinstitutioner, bl.a MIT, Carnegie Mellon, og Stanford.

    Turing testen

    En af de mest betydningsfulde arvestykker fra Dartmouth-konferencen er at deltagerne arbejde videre med udformningen af ​​Turing testen her et par år efter Turings død.

    Alan Turing, en britisk matematiker, foreslog ideen om en test for at afgøre, om en maskine kunne udvise intelligent adfærd, der ikke kan skelnes fra et menneske.

    Dette koncept blev diskuteret på konferencen og blev en central idé inden for AI-forskning. Turing-testen er fortsat et vigtigt pejlemærke til at måle fremskridtene inden for AI-forskning i dag.

    Perceptron

    Perceptronen er en kunstig neural netværksarkitektur designet af psykolog Frank Rosenblatt i 1958. Den gav trækkraft til det, der er berømt kendt som Brain Inspired Approach to AI, hvor forskere bygger AI-systemer til at efterligne den menneskelige hjerne.

    I tekniske termer er Perceptron en binær klassifikator, der kan lære at klassificere inputmønstre i to kategorier. Det fungerer ved at tage et sæt inputværdier og beregne en vægtet sum af disse værdier, efterfulgt af en tærskelfunktion, der bestemmer, om outputtet er 1 eller 0. Vægtene justeres under træningsprocessen for at optimere klassifikatorens ydeevne. Altså en forløber for general adverserial networks, neurale net der træner sig selv ved at to kører synkront og udfordrer hinanden. Jeg har skrevet lidt mere om disse i en anden artikel.

    Perceptronen blev set som en vigtig milepæl inden for kunstig intelligens, fordi den demonstrerede potentialet i maskinlæringsalgoritmer til at efterligne menneskelig intelligens. Det viste, at maskiner kunne lære af erfaringer og forbedre deres ydeevne over tid, ligesom mennesker gør.

    Perceptronen blev oprindeligt udråbt som et gennembrud inden for kunstig intelligens og fik meget opmærksomhed fra medierne.

    Det blev dog senere opdaget, at algoritmen havde begrænsninger, især når det kom til at klassificere komplekse data. Dette førte til et fald i interessen for Perceptron og AI-forskning generelt i slutningen af ​​1960’erne og 1970’erne.

    Perceptronen blev dog senere genoplivet og indarbejdet i mere komplekse neurale netværk, hvilket førte til udviklingen af ​​deep learning og andre former for moderne maskinlæring.

    I 1960’erne blev de åbenlyse fejl ved perceptronen som sagt opdaget, og så begyndte forskere at udforske andre AI-tilgange ud over Perceptronen. De fokuserede på områder som symbolsk ræsonnement, naturlig sprogbehandling og maskinlæring.

    Denne forskning førte til udviklingen af ​​nye programmeringssprog og værktøjer, som f.eks LISP og Prolog, der var specielt designet til AI-applikationer. Disse nye værktøjer gjorde det lettere for forskere at eksperimentere med nye AI-teknikker og at udvikle mere sofistikerede AI-systemer.

    1960ernes boom

    I løbet af denne tid blev den amerikanske regering også interesseret i kunstig intelligens og begyndte at finansiere forskningsprojekter gennem agenturer såsom Defense Advanced Research Projects Agency (DARPA). Denne finansiering var med til at fremskynde udviklingen af ​​kunstig intelligens og gav forskerne de ressourcer, de havde brug for til at tackle stadig mere komplekse problemer.

    AI-boomet i 1960’erne kulminerede i udviklingen af ​​adskillige skelsættende AI-systemer. Et eksempel er General Problem Solver (GPS), som blev skabt af Herbert Simon, J.C. Shaw og Allen Newell. GPS var et tidligt AI-system, der kunne løse problemer ved at søge gennem et rum af mulige
    løsninger.

    Et andet eksempel er ELIZA programmet, skabt af Joseph Weizenbaum, som var et naturligt sprogbehandlingsprogram, der simulerede en psykoterapeut.

    1980’ernes afkøling

    AI-vinteren i 1980’erne refererer til en periode, hvor forskning og udvikling inden for kunstig intelligens (AI) oplevede en betydelig afmatning oven på 1960’erne og 1970’ernes entusiasme.

    Dette skete delvist, fordi mange af de AI-projekter, der var blevet udviklet under AI-boomet, ikke holdt deres løfter. AI-forskersamfundet blev mere og mere desillusioneret over manglen på fremskridt på området. Dette førte til finansieringsnedskæringer, og mange AI-forskere blev tvunget til at opgive deres projekter og forlade feltet helt.

    Overordnet set var AI-vinteren i 1980’erne en væsentlig milepæl i AI-historien, da den demonstrerede udfordringerne og begrænsningerne ved AI-forskning og -udvikling. Det tjente også som en advarselshistorie for investorer og politiske beslutningstagere, som indså, at hypen omkring AI nogle gange kunne være overdrevet, og at fremskridt på området ville kræve vedvarende investeringer og engagement.

    Ekspertsystemer er en type kunstig intelligens (AI) teknologi, der blev udviklet i 1980’erne. Ekspertsystemer er designet til at efterligne beslutningsevnerne hos en menneskelig ekspert inden for et specifikt domæne eller område, såsom medicin, økonomi eller teknik.

    Ekspertsystemer

    Udviklingen af ​​ekspertsystemer markerede et vendepunkt i AIs historie. Presset på AI-samfundet var steget sammen med efterspørgslen om at levere praktiske, skalerbare, robuste og kvantificerbare applikationer af kunstig intelligens.

    Ekspertsystemer tjente som bevis på, at AI-systemer kunne bruges i virkelige systemer og havde potentialet til at give betydelige fordele til virksomheder og industrier. Ekspertsystemer blev brugt til at automatisere beslutningsprocesser i forskellige domæner, fra diagnosticering af medicinske tilstande til forudsigelse af aktiekurser.

    I tekniske termer er ekspertsystemer typisk sammensat af en vidensbase, som indeholder information om et bestemt domæne, og en inferensmotor, som bruger denne information til at ræsonnere om nye input og træffe beslutninger. Ekspertsystemer inkorporerer også forskellige former for ræsonnement, såsom deduktion, induktion og abduktion, for at simulere menneskelige eksperters beslutningsprocesser.

    I dag bliver ekspertsystemer fortsat brugt i forskellige industrier, og
    deres udvikling har ført til skabelsen af ​​andre AI-teknologier, såsom maskinlæring og naturlig sprogbehandling.

    1990’erne ser og lærer

    Som diskuteret i det foregående afsnit kom ekspertsystemer i spil omkring slutningen af ​​1980’erne og begyndelsen af ​​1990’erne. Men de var begrænset af, at de var afhængige af strukturerede data og regelbaseret logik. De kæmpede for at håndtere ustrukturerede data, såsom tekst eller billeder i naturligt sprog, som i sagens natur er tvetydige og kontekstafhængige.

    For at løse denne begrænsning begyndte forskere at udvikle teknikker til behandling af naturligt sprog og visuel information.

    I 1990’erne førte fremskridt inden for maskinlæringsalgoritmer og computerkraft til udviklingen af ​​mere sofistikerede NLP- og Computer Vision-systemer.

    Forskere begyndte at bruge statistiske metoder til at lære mønstre og funktioner direkte fra data i stedet for at stole på foruddefinerede regler. Denne tilgang, kendt som machine learning, muliggjorde mere nøjagtige og fleksible modeller til behandling af naturligt sprog og visuel information.

    En af de vigtigste milepæle i denne æra var udviklingen af ​​Hidden Markov Model (HMM), som muliggjorde probabilistisk modellering af tekst i naturligt sprog. Dette resulterede i betydelige fremskridt inden for talegenkendelse, sprogoversættelse og tekstklassificering.

    Tilsvarende inden for Computer Vision tillod fremkomsten af ​​Convolutional Neural Networks (CNN’er) mere nøjagtig genkendelse af objekter og billedklassificering.

    Disse teknikker bruges nu i en lang række applikationer, fra selvkørende biler til medicinsk billedbehandling.

    2000’erne og big data

    Begrebet big data har eksisteret i årtier, men dets fremtræden i forbindelse med kunstig intelligens (AI) kan spores tilbage til begyndelsen af ​​2000’erne.

    For at data kan betegnes som big, skal de opfylde 3 kerneegenskaber: Volume, Velocity og Variety.

    • Volume refererer til selve størrelsen af ​​datasættet, som kan variere fra terabyte til petabyte eller endnu større.
    • Velocity refererer til den hastighed, hvormed dataene genereres og skal behandles. For eksempel kan data fra sociale medier eller IoT-enheder genereres i realtid og skal behandles hurtigt.
    • Og variety refererer til de forskellige typer af data, der genereres, herunder strukturerede, ustrukturerede og semistrukturerede data.

    •Før fremkomsten af ​​big data var AI begrænset af mængden og kvaliteten af ​​data, der var tilgængelige til træning og test af maskinlæringsalgoritmer.

    Natural language processing (NLP) og computer vision var to områder af kunstig intelligens, der oplevede betydelige fremskridt i 1990’erne, men de var stadig begrænset af mængden af ​​data, der var tilgængelig.

    For eksempel var tidlige NLP-systemer baseret på håndlavede regler, som var begrænsede i deres evne til at håndtere kompleksiteten og variabiliteten af ​​naturligt sprog.

    Fremkomsten af ​​big data ændrede dette ved at give adgang til enorme mængder data fra en lang række kilder, herunder sociale medier, sensorer og andre tilsluttede enheder.

    Dette gjorde det muligt for maskinlæringsalgoritmer at blive trænet på meget større datasæt, hvilket igen gjorde dem i stand til at lære mere komplekse mønstre og lave mere præcise forudsigelser.

    Samtidig gjorde fremskridt inden for datalagring og -behandlings-teknologier, såsom Hadoop og Spark, det muligt at behandle og analysere disse store datasæt hurtigt og effektivt. Dette førte til udviklingen af ​​nye maskinlæringsalgoritmer, såsom deep learning, som er i stand til at lære af enorme mængder data og lave meget præcise forudsigelser.

    Deep learning

    Fremkomsten af ​​Deep Learning er en vigtig milepæl i globaliseringen af ​​moderne kunstig intelligens.

    Lige siden Dartmouth-konferencen i 1950’erne er AI blevet anerkendt som et legitimt studieområde, og de første år med AI-forskning fokuserede på symbolsk logik og regelbaserede systemer. Dette involverede manuel programmering af maskiner til at træffe beslutninger baseret på et sæt forudbestemte regler. Selvom disse systemer var nyttige i visse applikationer, var de begrænset i deres evne til at lære og tilpasse sig nye data.

    Det var først efter fremkomsten af ​​big data, at deep learning blev en vigtig milepæl i AIs historie. Med den eksponentielle vækst i mængden af ​​tilgængelige data, havde forskerne brug for nye måder at behandle og udtrække indsigt fra enorme mængder information.

    Deep learning-algoritmer gav en løsning på dette problem ved at gøre det muligt for maskiner automatisk at lære fra store datasæt og foretage forudsigelser eller beslutninger baseret på denne læring.

    Deep learning er en type maskinlæring, der bruger kunstige neurale netværk, som er modelleret efter den menneskelige hjernes struktur og funktion. Disse netværk er opbygget af lag af indbyrdes forbundne noder, som hver udfører en specifik matematisk funktion på inputdataene. Outputtet fra et lag tjener som input til det næste, hvilket gør det muligt for netværket at udtrække stadig mere komplekse funktioner fra data.

    En af de vigtigste fordele ved deep learning er dens evne til at lære hierarkiske repræsentationer af data. Det betyder, at netværket automatisk kan lære at genkende mønstre og funktioner på forskellige abstraktions-niveauer.

    For eksempel kan et dybt læringsnetværk lære at genkende formen af ​​individuelle bogstaver, derefter ordenes struktur og endelig betydningen af ​​sætninger.

    Udviklingen af ​​deep larning har ført til betydelige gennembrud inden for områder som computersyn, talegenkendelse og naturlig sprogbehandling. For eksempel er deep learning-algoritmer nu i stand til præcist at klassificere billeder, genkende tale og endda generere realistisk menneskelignende sprog eller spille komplekse spil som Go.

    Deep learning repræsenterer en vigtig milepæl i AI’s historie, muliggjort af fremkomsten af ​​big data. Dens evne til automatisk at lære af enorme mængder information har ført til betydelige fremskridt inden for en lang række applikationer, og det vil sandsynligvis fortsætte med at være et nøgleområde for forskning og udvikling i de kommende år.

    Generativ AI

    Det er her, vi er i den aktuelle AI-tidslinje. Generativ AI er et underområde af kunstig intelligens (AI), der involverer at skabe AI-systemer, der er i stand til at generere nye data eller indhold, der ligner data, det blev trænet på. Dette kan omfatte generering af billeder, tekst, musik og endda videoer.

    Transformers, en type neural netværksarkitektur, har revolutioneret generativ AI. De blev introduceret i et papir af Vaswani et al. i 2017 og har siden været brugt i forskellige opgaver, herunder naturlig sprogbehandling, billedgenkendelse og talesyntese.

    Transformers bruger selvopmærksomhedsmekanismer til at analysere forholdet mellem forskellige elementer i en sekvens, hvilket giver dem mulighed for at generere mere sammenhængende og nuanceret output.

    Dette har ført til udviklingen af ​​store sprogmodeller såsom GPT-4 (ChatGPT), som kan generere menneskelignende tekst om en lang række emner.

    Disse GPTer kombinerer transformers med store mængder tekst i sprogmodeller.

    Titelbillede genereret via Adobe Firefly

    Kilder

  • Lidt gang i siden her igen

    Lidt gang i siden her igen

    Jeg har ikke haft overskud til at gøre så meget på siden her, men jeg har stadig undervist meget siden og udviklet mig på mange områder fagligt – både teknisk med selvfølgelig også som undervisende person.

    Tilbage i juni 2023 blev jeg positivt lektor bedømt. Det giv mig en stor og tiltro til mig selv at få bekræftet at jeg er den gode og velovervejede underviser jeg selv mener jeg er.

    Selv snart halvandet år efter er jeg da stolt over at have fortjent mig titlen, den viser at jeg er en dygtig fagperson inden for feltet og at jeg didaktisk formår at videreformidle den viden.

    Noget af det jeg har sat mig en del ind i på det sidste, er generativ kunstig intelligens. Jeg har undervist i det på 10ECTS fag, og derudover er jeg ved at planlægge flere workshops og forløb målrettet organisationens kunder. I den anledning tænker jeg at dele udsnit af noget af det jeg har skrevet om området herinde over den næste tid.

  • Didaktiske overvejelser om skift fra quizzer til produktopgaver under et online kursus

    Didaktiske overvejelser om skift fra quizzer til produktopgaver under et online kursus

    Artiklen her er tænkt til inspiration til andre undervisere og indspark til hvordan en lille ændring kan påvirke udbyttet.

    Forord

    Da jeg er tilknyttet efteruddannelsesområdet på UCL, nærmere bestemt Business og teknologi og ledelse, er det for det første ofte meget korte hold jeg har, helt ned til 4 undervisningsdage for 5 ECTS, og inden for IT ofte meget små hold omkring 5 kursister. Dette semester, forår 2021, er desuden endnu mere unormalt i forhold til den gængse undervisergerning da jeg ikke har nogen hold grundet lav søgning, nok på grund af COVID19 situationen, men kun afgangskursister.

    Derfor ser jeg her tilbage på et hold, der stadig var under den studieordning jeg primært er inden for på UCL, Akademiuddannelse i Informationsteknologi, men hos SmartLearning, hvor jeg er timelærer. Det er et online undervisningstilbud, der ejes af erhvervsakademierne, men primært drives af Cph Business.

    Da denne tekst er skrevet hjemmefra, grundet stadig gældende restriktioner grundet COVID-19 pandemien, har jeg benyttet de bøger, jeg har hjemme, samt online kilder. Dette kan lede til lidt andet kildevalg end der ville have været hvis jeg havde adgang til de bøger, der befinder sig på min arbejdsplads.

    Indledning

    Jeg har i en del år efterhånden undervist i udvikling til Virtual Reality, primært på akademiuddannelse i informationsteknologi men også diplom niveau, og jeg var da også med til at skrive den første studieordning til fagområdet i 2017. Da vi på UCL, og de fleste andre akademier nævnt i en sidebemærkning, har haft svært ved at skaffe kursister til at oprette fag inden for området valgte jeg at tage en timelærer stilling hos SmartLearning for at holde min undervisning i området aktivt ved lige.
    Det er dog også en problemstilling de mærker, da det er fjerde semester, hvor de forsøgte at få faget Virtual Reality Programmering op at køre, og hvad jeg hører fra kollegaer på andre akademier er det som nyt område noget der stadig er svært at få i gang, hvilket er en udfordring for feltet da branchen vækster med 30% i omsætning om året (Grand View Research, 2020) og dermed også støt har brug for flere udviklere.

    Om online platformen

    Den måde SmartLearning lægger op til at man tilrettelægger sin undervisning på er meget baseret på selvstudie, hvilket både skyldes at det er efteruddannelse rettet mod folk i arbejde der derfor har behov for mest mulig fleksibilitet, hvilket der også lægges op til i studieordningen, men især også fordi det er online fjernundervisning.
    Den struktur, som de skabeloner for forløb man som underviser for udleveret af institutionen og så kan rette til og forkaste efter behov, lægger op til en håndfuld webinarer, ugentlig undervisning og/eller vejledning, en tre til fem større afleveringsopgaver alt efter faget størrelse i ECTS, heraf en peer review (Sivan, 2000),  og så faste, ugentlige selvrettende quizzer.

    Om kurset

    Medens dette fungerede udmærket for holdet, især i starten da der var en masse grundlæggende teori der skulle på plads, gav den summative tilgang (Marinos, 2017) god mulighed for kontrol af den tilegnede viden. Denne stod selvfølgelig ikke alene da jeg foretog ugentlige progressionssamtaler med holdet, hvor de fik svar på spørgsmål, gik feedback på ting de viste og vigtigst af alt beskrev hvordan de selv synes deres progression gik. Dette passer med to af de tre mest givende punkter blandt de pædagogiske indsatser at give sig selv karakterer og feedback, i Hattie (2008) som gengivet i Christensen (2017).

    Undervejs i forløbet, hvor teorierne blev mere og mere komplekse, især området software design patterns (Vats, 2021), blev det både svært for mig at lave relevante spørgsmål til, der passede i formen tilladt af systemet, og for dem at besvare, da de netop grundet formen blev noget mere søgte.
    SmartLearnings online platform tillader en vifte af spørgsmål former, fra multiple choice over drag and drop elementer til fritekst svar, men grundet emnet og presset til at finde på en lang række spørgsmål i et emne, der grundlæggende set ikke ændrede sig men blot fik flere teknikker føjet til, endte de med at ligne hinanden ret meget, hvilket forringede læringsværdien. Dette var ikke kun min egen opfattelse, men også respons fra kursisterne, der i stigende grad droppede at tage quizzerne da de ikke følte at de fik nok ud af den tid, de investerede i at løse dem. Da jeg som underviser samtidig brugte mange timer om ugen på at producere disse quizzer, var det tid til at finde andre måde at lade dem føle og bekræfte deres faglige progression på.

    Ændring af kurset

    De spurgte selv om flere opgaver, da følte at praktisk arbejde ledte bedre hen til eksamensopgaven, hvilket jo også gav mening. Det vidnede samtidig om et rimeligt niveau af self efficacy (Bandura, 2013), da de reflekterede over egen indlæring og hvordan denne kunne øges.
    Derfor prøvede jeg at ændre formatet med tilføjelse af små uge opgaver, hvor de fik en mindre opgave formuleret som et produkt de skulle lave. Dette var så afpasset med det, de havde lært i tiden op til og under den aktuelle uge.

    Det var ikke afleveringsopgaver, hvilket mindskede tiden brugt på forberedelse og tillod til gengæld at jeg kunne afsætte tid og overskud til at gå mere ind i samtaler om det de havde lavet i stedet.

    Disse ændringer i kursets faste progressionsmarkører tydeliggør også et glidende skift fra en indholdsfokuseret til læringsmåls fokuseret undervisning (Jensen, 2018), da fokus nu er flyttet fra at bekræfte det indlærte til kvalificeret brug deraf.

    Generelt forsøgte jeg at holde forløbet svagt rammesat (Ulriksen, 2016), men dette blev mere tydeligt efter denne ændring af strukturen, da den opstod ud fra kursisternes ønsker og refleksion.
    Denne form var generelt oplagt til en så afkoblet undervisningsform som disse online forløb, men det var også udfordrende som underviser da jeg skulle bruge megen tid på forvaltningen af undervisningen for at sikre at de var på rette vej og stille forventningerne skarpt nok op. Sidstnævnte blev øget ved de praktiske opgaver, men det at jeg flyttede fokus fra indhold til kompetence gjorde det samtidig lettere, da detaljerne ikke var det essentielle mere og derfor skulle tjekkes men helheden.

    Effekt og afrunding

    Det ændrede fokus gav pote, da kursisterne alle meldte tilbage at de følte det gav dem mere ro og øvelse inden eksamen, der samtidig gik forrygende med et snit på 11 på 12-trins skalaen.

    Man kan samtidig sige at det at skifte på fokus fra de tekniske del-aspekter til at bruge teknikken til at løse opgaver også ligger i titlen på de institutioner, vi arbejder for med erhvervsakademier, hvor fokus på indholdet vil sætte akademi delen i centrum sætter vinklen på brug deraf mere en retning mod brugen deraf ude i det (virkelige) erhvervsliv.

    Kilder

    Bandura, A. (2013) “Self efficacy” i Kognition og pædagogik, nr. 83. Siderne 16-35.

    Christensen, T. S., Formativ Evaluering, afsnit 5.1 i Gymnasie Pædagogik redigeret af Dolin, J., Ingerselv, G. H., & Jørgensen, H. S. (2017), København: Hans Reitzels Forlag

    Grand View Research (2020), Virtual Reality In Gaming Market Size, Share & Trends Analysis Report By Component, By Device, By User (Commercial Space, Individual), By Region, And Segment Forecasts, 2020 – 2027, https://www.grandviewresearch.com/industry-analysis/virtual-reality-in-gaming-market, besøgt 19 april 2020

    Hattie, J. (2008) Keynote presentation: Developing potentials for learning: Evidense, assessment, and progress. Konferensen Bedömning och betyg – Forskning och utveckling i samverkan, d.. 14-16. oktober 2008. Stockholm: Institut for didaktik och pedagogisk arbete, Stockholms Universitet.

    Jensen, L. D., ”Læringsmålsfokuseret didaktik i videreuddannelsen af voksne” kapitel 2 i Voksendidaktik redigeret af Rander, H., Boysen, L., & Goldbech, O. (2018). København: Akademisk Forlag

    Marinos, N., ”Summativ Evaluering” kapitel 5.2 i Gymnasie Pædagogik redigeret af Dolin, J., Ingerselv, G. H., & Jørgensen, H. S. (2017), København: Hans Reitzels Forlag

    Sivan, A. (2000). The implementation of peer assessment: an action research approach. Assessment in Education, 7, 2: 193-213.

    Ulriksen, L. (2016) God undervisning på de videregående uddannelser. København: Frydenlund

    Vats, R. (2021) Top 5 Popular Software Design Patterns in 2021 på upGrad blog, https://www.upgrad.com/blog/software-design-patterns/, besøgt 19 april 2021

  • Reminder om hvordan Unitys XR Interaction Toolkit installeres efterår 2020

    Reminder om hvordan Unitys XR Interaction Toolkit installeres efterår 2020

    Jeg har selv flere gange været irriteret over at jeg ikke let kunne få XR Interaction Toolkit ind i mine VR projekter, så denne video er en reminder til mig selv og andre om hvordan det gøres.

  • Video: Kom i gang med at programmere i C# del 4 – Løkker

    Video: Kom i gang med at programmere i C# del 4 – Løkker

    Løkker lader os køre en blok kode mere end én gang.

    Videoen på YouTube.

    Koden i C# konsol programmet i videoen:

    using System;
    
    namespace loekker
    {
        class Program
        {
            static void Main(string[] args)
            {
                /*int i = 20;
                while (i < 20)
                {
                    Console.WriteLine("Værdi af i: {0}", i);
                    i++;
                }
                bool b = true;
                while (b)
                {
                    Console.WriteLine("Vi kører rundt");
                    b = false; // eller break
                }
                
                do
                {
                    Console.WriteLine("Værdi af i: {0}", i);
                    i++;
                }
                while (i < 20);*/
    
                for (int i = 1; i < 20; i++)
                {
                    Console.WriteLine("Værdi af i: {0}", i);
                    i++;
                }
    
            }
        }
    }
    
  • Video: Kom i gang med at programmere i C# del 3 – Operatorer

    Video: Kom i gang med at programmere i C# del 3 – Operatorer

    I denne lidt kortere, og for de fleste nok ret let at forstå, video kigges der på de klassiske matematiske operatorer.

    Videoen på YouTube.

    Koden i C# konsol programmet i videoen:

    using System;
    
    namespace Operatorer
    {
        class Matematik
        {
            public int x;
            public int y;
    
            public int Plus()
            {
                int z = x + y;
                return z;
            }
            public int Minus()
            {
                int z = x - y;
                return z;
            }
    
            public int Gange()
            {
                int z = x * y;
                return z;
            }
    
            public int Divider()
            {
                int z = x / y;
                return z;
            }
            public int Modulus()
            {
                int z = x % y;
                return z;
            }
        }
        class Program
        {
            static void Main(string[] args)
            {
                Matematik M1 = new Matematik();
                Console.WriteLine("Skriv venligst to tal:");
                M1.x = int.Parse(Console.ReadLine());
                M1.y = int.Parse(Console.ReadLine());
                Console.WriteLine("{0} plus {1} giver {2}", M1.x, M1.y, M1.Plus());
                Console.WriteLine("{0} minus {1} giver {2}", M1.x, M1.y, M1.Minus());
                Console.WriteLine("{0} divideret med {1} giver {2}", M1.x, M1.y, M1.Divider());
                Console.WriteLine("{0} gange {1} giver {2}", M1.x, M1.y, M1.Gange());
                Console.WriteLine("{0} modulus {1} giver {2}", M1.x, M1.y, M1.Modulus());
            }
        }
    }
    
  • Video: Kom i gang med at programmere i C# del 2 – Klasser, variabler, metoder og objektorienteret programmering

    Video: Kom i gang med at programmere i C# del 2 – Klasser, variabler, metoder og objektorienteret programmering

    Opbygningen af et program med klasser, der indeholder variabler og metoder introduceres som en af hjørnestenene for objektorienteret programmering.

    Videoen på YouTube

    Koden i C# konsol programmet i videoen:

    using System;
     namespace objekterDel1
     {
         class Bil
         {
             public int antalHjul;
             public int antalPassagerer;
             public string maerke;
             public double maxHastighed;
             public double hastighed ()
             {
                 return speederTryk * maxHastighed;
             }
             public bool motorTaendt;
             public double speederTryk;
         }
         class Program
         {
             static void Main(string[] args)
             {
                 Bil Volvo = new Bil();
                 Bil Opel = new Bil();
    
                 Volvo.antalHjul = 4;
                 Volvo.antalPassagerer = 5;
                 Volvo.maerke = "Volvo";
                 Volvo.maxHastighed = 190.5;
                 Volvo.motorTaendt = true;
                 Volvo.speederTryk = 0.7;
                 Console.WriteLine("{2}en har {0} hjul, {1} passagerer og kan køre {3}km/t", Volvo.antalHjul, Volvo.antalPassagerer, Volvo.maerke, Volvo.maxHastighed);
                 Console.WriteLine("Den kører dog kun {0}km/t", Volvo.hastighed());
    
                 Opel.maerke = "Opel";
                 Console.WriteLine("{0}", Opel.maerke);
             }
         }
    }