Denne bog tilbyder en omfattende samling af undervisnings- og læringsmaterialer, der er udviklet for at lette undervisningen i kunstig intelligens (AI) på både begynderniveau og for mere erfarne programmører. Den giver en praktisk tilgang til AI-applikationer ved at bruge store kodeblokke, hvilket gør det muligt for studerende og læsere at forstå komplekse teknologier uden at skulle mestre de grundlæggende algoritmer først. Dette gør det lettere at opbygge projekter hurtigt og effektivt, hvilket er særligt vigtigt for studerende, der er nye i AI, da det undgår stejl læringskurve og fastholder interessen for faget. De vigtigste værktøjer til undervisning og læring i bogen omfatter 77 klasseprojekter, hjemmearbejde, øvelser, laboratorieprojekter og alle de datasæt, der er nødvendige for at bygge både klasse- og laboratorieprojekter.
I det følgende præsenteres en struktur for, hvordan bogen er opbygget og hvordan materialerne er fordelt.
Klasseprojekter og laboratorieprojekter
Bogen indeholder i alt 134 konkrete projekter, der er opdelt i to hovedkategorier: klasseprojekter og laboratorieprojekter. Klasseprojekterne består af 77 opgaver, som er fordelt på bogens 12 kapitler, med et gennemsnit på seks projekter per kapitel. Hvert projekt er præsenteret med en detaljeret gennemgang af koden, hvilket gør det lettere for studerende at følge og forstå de relevante AI-teknikker. Labprojekterne, som udgør 57 opgaver, findes i slutningen af hvert kapitel. Disse er designet til at hjælpe studerende med at anvende det lærte materiale til at udvikle egne AI-applikationer. Dette praktiske arbejde styrker den forståelse, der opnås i klasseprojekterne, og giver studerende mulighed for at arbejde med virkelige datasæt.
Løsninger på alle laboratorieprojekter er tilgængelige for undervisere, hvilket understøtter dem i deres undervisning og giver dem mulighed for at hjælpe studerende med at forstå de tekniske detaljer i de anvendte metoder. Selvom denne metode betyder, at mange af de tekniske detaljer i designet og udviklingen er forenklet for begyndere, kan de interesserede studerende få indsigt i disse detaljer ved at bruge eksportfunktioner til at konvertere operationelle trin til MATLAB-kode. Denne metode giver en mulighed for videregående studier og dybere forståelse af de underliggende processer i AI-udviklingen.
Undervisningsmateriale og -metoder
Bogen er opdelt i to niveauer, hvilket gør den egnet både for begyndere og mere erfarne læsere. For begyndere anbefales det at fokusere på kapitlerne 2-7, som introducerer grundlæggende AI-strukturer og -komponenter, herunder velkendte AI-algoritmer som maskinlæring, fuzzy inference systemer og regressionsmodeller. Begyndere skal koncentrere sig om de første sektioner i disse kapitler for at få et solidt fundament i teknikkerne uden at blive overvældet af for avancerede emner.
For de mere erfarne studerende anbefales det at dykke dybere ned i kapitlerne 8-12, hvor de mere avancerede emner som uovervåget læring, forstærkende læring og dyb læring behandles grundigt. Disse kapitler kræver et stærkere kendskab til de grundlæggende teknikker, som introduceres i de første kapitler. I denne del af bogen er der en mere kompleks tilgang, som er rettet mod at udstyre læseren med de nødvendige værktøjer til at arbejde med avancerede AI-applikationer.
Materialer til undervisere og studerende
For at sikre en effektiv læring er der tilknyttet både lærings- og undervisningsmaterialer til hver sektion. Disse materialer er tilgængelige via Springers FTP-site, hvor både studerende og undervisere kan finde de nødvendige ressourcer. Undervisere har adgang til præsentationer, opgaveløsninger og data, mens studerende kan få adgang til klasseprojekter og de relevante datasæt. Derudover er der mulighed for at få e-mail-support til at hjælpe med eventuelle tekniske problemer, som kan opstå under lærings- eller undervisningsprocessen.
Vigtigt er det, at begyndere ikke nødvendigvis skal forsøge at mestre hele bogen i første omgang. Ved at koncentrere sig om de grundlæggende emner i de første kapitler kan de opbygge en solid forståelse, som vil hjælpe dem med at tackle de mere komplekse emner senere. Denne tilgang er designet til gradvist at opbygge deres færdigheder, så de kan arbejde sig op til mere avancerede AI-applikationer uden at blive overvældet af de mange tekniske detaljer på et tidligt stadium.
Bogen anbefales at blive brugt af både studerende, der er i gang med deres første møde med AI, og erfarne programmører, der ønsker at udvide deres viden om moderne AI-teknikker. Ved at bruge de praktiske projekter og de tilhørende løsninger kan læseren hurtigt udvikle deres færdigheder og forståelse af AI, hvilket er afgørende for effektivt at arbejde med AI-applikationer i virkelige scenarier.
Hvordan man forbereder og klassificerer billeder af frugter ved hjælp af dyb læring
I arbejdet med billedklassifikation af frugter er det afgørende at forberede et datasæt, der både er tilpasset den ønskede opgave og organiseret på en måde, der gør træningen af en model effektiv. Dette kapitel beskriver, hvordan man forbereder et datasæt af frugt billeder og opretter en passende struktur for træning og test, før man går videre med klassifikationsprocessen ved hjælp af dyb læring.
Først og fremmest starter forberedelsen med at ændre størrelsen på de oprindelige frugt billeder til et standardmål på 100 x 100 x 3 pixels. Dette er et vigtigt skridt, da det sikrer, at alle billeder har samme dimensioner og format, hvilket er nødvendigt for de fleste dybe læring modeller. Når størrelsen er ændret, skal billederne organiseres i specifikke undermapper, som derefter kan anvendes til både træning og test.
Fra det oprindelige datasæt vælges seks typer frugter: Tomat 3, Tomat 4, Tomat Cherry Red, Tomat Maroon, Tomat Yellow og Valnød. Disse seks typer frugter opdeles i deres egne undermapper under en hovedmappe kaldet fruit_train_data. Hver af de seks undermapper indeholder et antal billeder, der kan variere fra 347 til 715 billeder pr. type. Denne struktur gør det muligt at træne en model, der kan genkende hver frugt type baseret på de billeder, den præsenteres for.
Derudover skal der oprettes en separat testmængde med de 20 bedste billeder fra hver af de seks frugt typer. Disse billeder skal også ændres i størrelse til 100 x 100 x 3 pixels og placeres i en undermappe kaldet fruit_test_data. Denne testmængde bruges til at evaluere modellens præstation på billeder, som den ikke tidligere har set.
Når billederne er korrekt organiseret i trænings- og testmapperne, kan koden begynde at behandle og flytte billederne til de relevante mapper. En scriptfil, typisk navngivet Setup_Images.m, bruges til at automatisere denne proces. Scriptet initialiserer variabler, opretter nødvendige mapper og bruger en loopstruktur til at hente, ændre størrelse og gemme billederne korrekt.
Koden fungerer således, at den først opretter mapper til hver af de seks frugt typer under fruit_train_data. Derefter hentes billederne fra de oprindelige mapper, og hver enkelt fil bliver behandlet og gemt i de relevante mapper. Processen gentages for både trænings- og testmængderne, så alle billeder er korrekt organiseret og klar til brug i den dybe læringsmodel.
Når forberedelsen af billederne er afsluttet, er datasættet klar til at blive brugt til træning af en klassifikationsmodel. Denne model kan trænes ved hjælp af de funktioner, der er beskrevet tidligere, såsom trainNetwork() og trainingOptions(), som styrer træningens parametre og optimeringsmetoder.
For at kunne oprette og gemme den trænet model kræves en funktion til at definere stierne for, hvor modellen skal gemmes. Dette gøres ved at oprette en kortere sti ved hjælp af funktioner som append() til at samle de relevante stier for modelens gemmesystem. Når modellen er trænet, kan den bruges til at klassificere nye billeder baseret på den viden, den har opnået under træningen.
Det er vigtigt at bemærke, at billedbehandling og oprettelsen af et godt struktureret datasæt er fundamentalt for præstationen af en dyb læringsmodel. Et velorganiseret datasæt betyder, at modeltræningen vil være mere effektiv, og at testresultaterne vil være mere pålidelige. Desuden bør træningsmængderne være tilstrækkelige til at dække variationerne i de forskellige frugttyper og samtidig undgå overfitting, som kan opstå, hvis datasættet er for lille eller ikke repræsenterer den virkelige variation i billederne.
Når man arbejder med billedklassifikation, er det også vigtigt at overveje, hvordan dataene skal anvendes i en praktisk sammenhæng. Hvilken præcision kræves der for at kunne bruge modellen effektivt? Hvordan vil den blive integreret i et system, der f.eks. kan genkende frugter i en produktionslinje eller i en mobilapp? Denne slags overvejelser er vigtige for at forstå, hvordan den dybe læring model kan implementeres og anvendes effektivt i virkelige scenarier.
Hvordan træner og validerer man en dyb læringsmodel til billedklassifikation af frugter?
I en dyb læringsproces til billedklassifikation er det vigtigt at organisere og strukturere dataene korrekt. I dette tilfælde oprettes en imageDatastore for at indlæse og gemme billederne i et særligt format, som gør dem lettere at arbejde med i forbindelse med træning og evaluering af modellen. En af de første skridt i denne proces er at bruge funktionen fullfile(), der kombinerer strenge og opretter den komplette sti til billedfilerne, som i dette tilfælde er .jpg billeder. Når datastoren er oprettet, bliver både billederne og deres tilhørende etiketter vist, hvilket giver en visuel kontrol over indlæsning og mærkning af dataene.
Når dataene er forberedt, er det tid til at opdele træningsdataene i to sæt: træningsdata og valideringsdata. Dette gøres med funktionen splitEachLabel(), som deler datastoren i henholdsvis 70% træningsbilleder og 30% valideringsbilleder. Denne opdeling er essentiel for at kunne træne modellen effektivt og derefter validere dens præstationer.
Modellens struktur defineres ved hjælp af et neuralt netværk, der består af flere lag, som sammensættes i en sekvens. I dette tilfælde består modellen af et inputlag, batch-normaliseringslag, relu-lag og et fuldt forbundet lag efterfulgt af et softmax-lag, som er det sidste lag i modellen og bruges til klassifikation af billederne i forskellige kategorier. En vigtig pointe at bemærke her er, at den funktion, der træner netværket – trainNetwork() – ikke er den nyeste version af træningsfunktionen i MATLAB. Selvom den opdaterede version, trainnet(), også kan bruges, giver trainNetwork() bedre præstationer i billedklassifikationen, hvorfor den bliver foretrukket i dette projekt.
I forbindelse med træningen af modellen er det nødvendigt at angive nogle træningsparametre, som inkluderer læringsrate, epoch-grænse og mini-batch-størrelse. I dette tilfælde er disse parametre sat til standardværdier, som MATLAB anvender automatisk, medmindre der specifikt er valgt andre værdier. Når modellen trænes ved hjælp af funktionen trainNetwork(), gemmes den trænede model som en .mat-fil, hvilket muliggør, at modellen kan genbruges senere til både evaluering og eventuel videreudvikling.
Efter træningen er gennemført, er det tid til at vurdere, hvor godt modellen har lært at klassificere billederne. Træningsresultaterne bliver evalueret på et valideringsdatasæt, og i dette tilfælde blev der opnået en præstation på 97%, hvilket er en ganske god første resultatsværdi. Men træningsresultaterne kan yderligere forbedres ved at indføre en konvolutionslag i modellen. Ved at fjerne kommentaren fra en kodelinje, der indeholder et konvolutionslag, kan modellen trænes igen. Denne ændring forbedrer præstationen markant, og valideringsnøjagtigheden når 100%.
Når modellen er blevet optimeret og trænet med konvolutionslag, kan vi nu evaluere dens effektivitet ved at teste den på et separat testdatasæt, der er gemt i en anden mappe. Denne testproces er essentiel for at forstå, hvor godt modellen klarer sig på nye, usete data, og dermed vurdere, om den er klar til at blive implementeret i en rigtig applikation.
Det er vigtigt at forstå, at denne dyb læringsmetode, selvom den kan give fantastiske resultater med den rette træning og evaluering, kræver en grundig forberedelse af dataene. Træningssættets kvalitet, korrekt mærkning af billederne og en ordentlig opdeling af træning og validering spiller en stor rolle i, hvordan godt modellen præsterer. Modellen skal også evalueres både med træningsdata og testdata for at sikre, at den generaliserer godt til nye situationer.
Når vi taler om billedklassifikation med dyb læring, skal det også understreges, at valg af netværksarkitektur, valg af lag og justering af træningsparametre som læringsrate og batch-størrelse har en væsentlig indvirkning på den endelige præstation af modellen. Det er ikke blot et spørgsmål om at vælge de rigtige billeder, men også om at vælge den rette tilgang til at træne og evaluere modellen for at opnå optimale resultater.
Hvordan anvendes Apriori Algoritmen til at finde stærke foreningsregler i datasæt?
Apriori algoritmen er en udbredt metode til at identificere stærke foreningsregler i datasæt baseret på hyppigheden af forekomsten af elementer sammen. Ligesom association rules anvendes Apriori til at finde mønstre i data ved at identificere hvilke elementer, der optræder oftere sammen, hvilket indikerer en potentiel relation mellem dem. Denne algoritme anvender en bottom-up tilgang, hvor hyppige elementkombinationer udvides trinvis, og grupper af kandidater testes mod dataene. Processen stopper, når der ikke længere findes hyppigere kombinationer, og dermed kan man udlede hvilke regler, der er stærkest for at forudsige et resultat i fremtidige datasæt.
Starten på Apriori algoritmen involverer at finde de hyppige enkeltstående elementer i datasættet ved at beregne deres support. Dette sker ved at tælle, hvor mange gange hver enkelt vare eller element optræder i transaktionerne, og sammenligne disse med en fastlagt supportgrænse. Hvis et element optræder mindre end det krævede antal gange, fjernes det fra datasættet. Dette er fundamentalt, da det hjælper med at eliminere irrelevante eller sjældne elementer, som ikke bidrager væsentligt til dannelsen af stærke relationer.
Efter første iteration genereres kombinationer af elementer af længde k = 2, altså alle mulige par af elementer. Supporten for hver af disse par vurderes, og kombinationer, der ikke opfylder supportkravet, fjernes. Denne proces gentages for længere kombinationer af elementer, såsom tripletter, kvartetter og så videre, indtil der ikke findes flere kombinationer, der opfylder supportgrænsen.
Et praktisk eksempel på anvendelsen af Apriori kan ses i et datasæt, hvor man har elementer som f.eks. blodtryk og alder, og hvor man ønsker at finde mulige relationer med en udgangsvariabel, som kunne være et resultat som "diabetes". I dette tilfælde kunne datasættet analyseres med Apriori for at finde de hyppigste kombinationer af blodtryk og alder, der relaterer sig til diabetes. Efter at have genereret de hyppige kombinationer, kan der beregnes tillid (confidence) og løft (lift) for at vurdere styrken af de fundne relationer.
Når relationerne er blevet etableret, er det muligt at vurdere deres praktiske anvendelse ved hjælp af værdier som tillid og løft. Tillid angiver sandsynligheden for, at en bestemt konsekvens vil ske, givet at en betingelse er opfyldt, mens løft vurderer, i hvilken grad de to hændelser er uafhængige af hinanden. Et løft større end 1 indikerer en stærk relation mellem de to hændelser, mens et løft under 1 viser, at der ikke er nogen stærk relation.
Det er også vigtigt at forstå, at ikke alle data nødvendigvis vil resultere i stærke relationer. Ofte vil værdier som support og tillid alene ikke være nok til at etablere en solid forbindelse mellem to variabler. Derfor bør løftberegningen betragtes som en mere pålidelig indikator for at finde de mest betydningsfulde associationer, som kan have praktisk anvendelse i forudsigelser af fremtidige data.
Et yderligere væsentligt aspekt af Apriori algoritmen er dens evne til at håndtere store mængder data ved at optimere antallet af beregninger ved hjælp af struktureringsteknikker som Hash-træer og breadth-first search. Disse teknikker gør det muligt at finde de relevante kombinationer hurtigere og mere effektivt, hvilket gør algoritmen særligt anvendelig i store datasæt, som findes i f.eks. sundhedsdata eller e-handelsanalyser.
Derfor er det essentielt at have en god forståelse af både algoritmens matematiske grundlag og de praktiske anvendelser af de resulterende associationer. At kunne bruge Apriori til at identificere stærke relationer mellem data kan være uvurderligt i mange områder, fra medicinske undersøgelser til markedsanalyse. Det er dog vigtigt ikke at stole udelukkende på algoritmens output, men også at kombinere de fundne regler med domæneekspertise og videre analyse for at sikre, at de resulterende relationer giver mening i den specifikke kontekst.
Hvordan Fuzzy Logic Inference Systems Er Anvendt i Kunstig Intelligens: En Casestudie
Fuzzy Logic Inference Systems (FLIS) er en vigtig del af moderne kunstig intelligens og anvendes til at træffe beslutninger i usikre og incomplete systemer, hvor traditionelle metoder som binær logik ikke er tilstrækkelige. Fuzzy logik giver mulighed for at håndtere begreber som "delvist sandt" eller "næsten sandt", hvilket gør den ideel til situationer, hvor præcise, diskrete værdier ikke er tilgængelige. I denne sammenhæng bliver en idé om "gråzoner" og ufuldstændig information behandlet, hvilket giver FLIS en klar fordel i komplekse og dynamiske miljøer, hvor traditionelle systemer ofte fejler.
En af de grundlæggende komponenter i FLIS er "fuzzy sets" (uskarpe mængder). I modsætning til de klassiske mængder i traditionel matematik, hvor et objekt enten tilhører en mængde eller ikke (binær logik), tillader uskarpe mængder en grad af tilhørsforhold. For eksempel, i stedet for at sige, at en temperatur er enten "varm" eller "kold", kan fuzzy logik beskrive temperaturen som "lidt varm" eller "meget kold", og tillade en gradvis overgang mellem disse tilstande.
Fuzzy sets bliver brugt sammen med medlemskabsmængder, som definerer hvor meget et element tilhører en bestemt fuzzy set. For eksempel kan et temperaturmåling (som 23 grader Celsius) have et medlemskab på 0,7 i mængden "varm" og et medlemskab på 0,3 i mængden "tempereret". Dette er et tydeligt skridt væk fra de skarpe opdelinger, der findes i klassiske set-teorier og giver en langt mere fleksibel og dynamisk tilgang til beslutningstagning.
Fuzzy logic anvendes ikke kun i teorien, men også praktisk i mange applikationer, herunder i kontrolsystemer som f.eks. automatiserede termostater, bilmotorstyring, og endda i medicinske diagnoseløsninger. Et simpelt eksempel på anvendelsen af fuzzy kontrol er, når et system skal justere temperaturen i et rum. Traditionelle systemer kunne kræve præcise målinger og forudbestemte regler for at afgøre, hvornår klimaanlægget skal tænde eller slukke. I et fuzzy system kan der dog tages højde for flere faktorer, som for eksempel hvor hurtigt temperaturen ændres, hvilken tid på dagen det er, og hvordan folk i rummet oplever varmen.
For at forstå, hvordan en fuzzy inference system fungerer, skal man overveje de tre hovedtrin i processen: fuzzifikation, reglerne for fuzzy kontrol og defuzzifikation. Fuzzifikation er processen, hvor præcise inputværdier omdannes til fuzzy værdier. Dette gøres ved at anvende medlemskabsmængder, der giver systemet mulighed for at forstå input i flere grader af tilhørsforhold. Derefter anvendes et regelsæt, hvor de uskarpe inputværdier behandles ved hjælp af fuzzy regler, der kan tage form af "Hvis X er meget høj, og Y er moderat lav, så gør Z høj". Endelig defuzzificeres de fuzzy outputværdier til et konkret resultat, som systemet kan handle på.
Fuzzy logic adskiller sig fra de mere klassiske metoder ved at kunne håndtere meget komplekse og variable data, som ikke kan reduceres til en simpel ja/nej beslutning. Dette gør FLIS til en essentiel teknologi i områder, hvor præcise data er svære at få fat i, og hvor systemerne selv skal kunne håndtere usikkerheder.
Forskellen mellem traditionelle binære logiksystemer og fuzzy logik bliver især tydelig, når man overvejer, hvordan begge tilgange reagerer på usikkerhed og delvis information. Binære systemer ignorerer alt, hvad der ikke er klart defineret som enten sandt eller falsk, mens fuzzy systemer arbejder med graduering af sandhed og dermed giver mere realistiske løsninger på komplekse problemer.
Fuzzy systemer er ikke kun begrænset til teknologiske anvendelser. De har også fundet anvendelse i områder som beslutningstagning og økonomisk analyse, hvor det er nødvendigt at arbejde med usikkerheder og delvise informationer. Et vigtigt aspekt af fuzzy logic er dets evne til at modellere menneskelig ræsonnering, der ofte ikke følger streng logik, men snarere bevæger sig i nuancer og gråzoner.
For at mestre brugen af fuzzy logik i praksis er det nødvendigt at forstå både de teoretiske baggrunde og de praktiske implementeringer. Det kræver en forståelse af de matematiske grundlag, som fuzzy sets og medlemskabsmængder hviler på, samt hvordan disse koncepter anvendes i konkrete systemer, som f.eks. i automatiserede beslutningstagningssystemer. Teknologiens anvendelse i virkeligheden kræver ikke kun kendskab til matematik, men også en grundlæggende forståelse af de problemer, som systemet skal løse, og hvordan fuzzy logik bedst kan anvendes til at løse disse problemer.
Fuzzy logik er ikke et universalmiddel for alle typer problemer, men dens evne til at håndtere kompleksitet og usikkerhed gør den til et meget kraftfuldt værktøj i mange områder af moderne teknologi. Desuden er det vigtigt at forstå, at selvom fuzzy logik kan give løsninger, der er mere fleksible end binære systemer, kræver det stadig omhyggelig design og finjustering af regler og medlemskabsmængder for at opnå de bedste resultater.

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский