En neural netværksmodel er en form for maskinlæring, der er designet til at finde relationer mellem inputdata (kaldet predictor data) og de ønskede output (kaldet response variabler). I MATLAB benyttes funktioner som fitrnet() og fitcnet() til at træne disse netværk til henholdsvis regression og klassifikation. Begge funktioner deler mange ligheder i deres struktur og anvendelse, men de adskiller sig i måden, de behandler output på.
Når man arbejder med regression, producerer netværket et kontinuert output, der kan anvendes til at forudsige numeriske værdier. Til klassifikation er output et diskret resultat, som kan anvendes til at tildele data til specifikke klasser. Begge netværk er feedforward netværk, hvilket betyder, at hver lag i netværket er forbundet til det næste, og de gennemgår inputdata i en lineær rækkefølge.
I den typiske struktur af en neural netværksmodel starter processen med et inputlag, der modtager data fra en tabel eller matrix, og hver efterfølgende lag er forbundet til det forrige. Hver fuldt forbundne lag multiplicerer inputtet med en vægtmatrix og tilføjer en bias-vektor. Et aktiveringsfunktion følger hvert fuldt forbundet lag, bortset fra det sidste, som i tilfælde af regression producerer de forudsagte værdier.
Den første funktion, fitrnet(), bruges til at opbygge en regression model. Her er der fire konstruktører, som hver tager forskellige argumenter for at skabe et trænet model:
-
Mdl = fitrnet(Tbl, ResponseVarName) -
Mdl = fitrnet(Tbl, Y) -
Mdl = fitrnet(X, Y) -
Mdl = fitrnet(___, Name, Value)
Argumentet Tbl indeholder både predictor-data og response-værdierne, mens Y alene indeholder response-værdierne. Ved at benytte argumentet X og Y kan du anvende matrixdata til at træne modellen. Der er også muligheder for at justere modellen med yderligere Name-Value par, som giver specifikationer for vægte, aktiveringsfunktioner og andre hyperparametre.
Den sidste fuldt forbundne lag i en regression model producerer netværkets output – de forudsigte værdier, som er numeriske. Når en activation-funktion som ReLU (Rectified Linear Unit) benyttes på lagene, sker der en ikke-lineær transformation af inputtet, hvilket gør modellen i stand til at lære mere komplekse relationer. Det sidste lag har dog ikke nogen aktivering, og outputtet er direkte de numeriske forudsigelser.
For klassifikation, benyttes en lignende struktur, men med den afgørende forskel, at det sidste lag benytter en Softmax-funktion, der konverterer netværkets output til klassifikationssandsynligheder. Denne funktion gør det muligt at bestemme, hvilken klasse en given observation hører til. I denne type model bruges funktionen fitcnet() i stedet for fitrnet().
fitcnet() benytter også fire konstruktører, som er meget ens i funktionalitet med fitrnet(). Forskellen ligger primært i det sidste lag, hvor Softmax-funktionen tilføjes. Dette lag giver et resultat, der kan fortolkes som sandsynligheder for hver klasse. På baggrund af disse sandsynligheder tildeles data den mest sandsynlige klasse.
Den typiske struktur for en neural netværksklassifikationsmodel omfatter som sagt et inputlag, der tager data fra Tbl eller X, og et fuldt forbundet lag, der behandler vægte og bias. Aktiveringsfunktionen, som for eksempel ReLU, følger efter de første lag, og Softmax-funktionen bliver anvendt før outputlaget. På den måde kan netværket give en sandsynlighed for, hvilken klasse en given observation tilhører, hvilket er meget nyttigt for klassifikation af data i både binære og multiklasseopgaver.
Når man arbejder med disse netværksmodeller i MATLAB, er det vigtigt at forstå, at de fleste af de indbyggede funktioner og konstruktører kan konfigureres og tilpasses med forskellige hyperparametre. Eksempler på sådanne indstillinger er:
-
LayerSizes, der angiver størrelsen på de fuldt forbundne lag. -
Activations, der angiver, hvilken aktiveringsfunktion der skal bruges (f.eks. ReLU). -
OutputLayerActivation, som kan bruges til at ændre aktiveringsfunktionen på outputlaget.
Netværkets succes afhænger i høj grad af, hvordan disse parametre vælges, da de påvirker læringsdynamikken og den endelige præstation.
For både regression og klassifikation er det vigtigt at forstå, hvordan dataene præ-processeres og hvordan modellen valideres efter træning. For eksempel kræver det ofte, at dataene normaliseres eller standardiseres, så netværket ikke bliver overvældet af forskellige skalaer på inputtet. Desuden skal man have en god forståelse af, hvordan man evaluerer modellen korrekt, enten gennem krydsvalidering eller ved brug af en testdatasæt for at sikre, at modellen generaliserer godt til nye, usete data.
Hvordan kan Fuzzy C-means-algoritmen anvendes til billede-segmentering?
Fuzzy C-means (FCM) er en effektiv algoritme, der anvendes i clustering og segmentering af data. En af de stærkeste anvendelser af FCM er i billedbehandling, hvor det bruges til at opdele et billede i flere segmenter baseret på ligheder mellem pixels. Denne tilgang gør det muligt at bearbejde og analysere et billede mere effektivt, da det ikke er nødvendigt at arbejde med hele billedet på én gang, men kun med de relevante segmenter.
I denne sammenhæng skal vi fokusere på, hvordan FCM-algoritmen kan anvendes til segmentering af billeder, især når inputdataene er billeder og ikke blot numeriske værdier. Før vi dykker ned i algoritmens anvendelse, er det vigtigt at forstå præprocesseringen af billeddata, da denne proces er essentiel for at gøre billederne forståelige for clustering-algoritmer.
Når et billede behandles som input til en clustering-algoritme som FCM, skal det først konverteres fra et 2D matrixformat (bestående af pixels) til en række eller en kolonne, der kan behandles som numeriske data. Dette kræver en transformation, hvor et billede, der for eksempel består af 4x4 pixels, skal omdannes til enten 4 rækker eller 4 kolonner med pixelværdier. Denne transformation gør det muligt for clustering-algoritmer at arbejde med billederne på en måde, der svarer til deres håndtering af numeriske data.
Når billederne er forberedt på denne måde, kan FCM-algoritmen anvendes til at segmentere billedet i forskellige clusters, hvor hver cluster repræsenterer en gruppe af pixels, der er tættere på hinanden i forhold til intensitet og farve. Algoritmen finder de maksimale medlemskabsgrader (MD) for hver pixel i forhold til de forskellige clusters og tildeler hver pixel til den cluster, hvor den har den højeste medlemskabsgrad.
I et praktisk eksempel med bilsegmentering, hvor et billede af en bil opdeles i forskellige sektioner, kan FCM bruges til at identificere forskellige bildele baseret på deres visuelle ligheder. Ved at anvende FCM-algoritmen kan vi segmentere billederne i fem forskellige grupper, som repræsenterer forskellige områder af bilen, såsom dæk, karosseri og vinduer. Dette gør det muligt at analysere hvert segment individuelt, hvilket kan være nyttigt til videre analyser som objektdetektion eller automatiseret inspektion.
En vigtig del af FCM-segmenteringen er at bestemme, hvor mange clusters (eller grupper) der skal dannes. Dette kan gøres ved hjælp af en række teknikker, såsom at beregne den optimale antal clusters baseret på algoritmens resultater. I MATLAB, for eksempel, kan man bruge funktioner som fcm til at udføre selve segmenteringen. Denne funktion returnerer både de centroids, som repræsenterer midten af hvert cluster, og medlemskabsgraderne, som viser, hvor stærk en tilknytning hver pixel har til de forskellige clusters.
Efter segmenteringen er udført, er det vigtigt at visualisere resultaterne. I eksemplet med bilsegmentering kan man bruge MATLAB til at vise de oprindelige og segmenterede billeder side om side. Dette gør det muligt at vurdere, hvor godt algoritmen har præsteret i forhold til at identificere de forskellige bildele. En god visualisering af segmenteringsresultaterne er afgørende for at vurdere kvaliteten af arbejdet og forstå, hvordan algoritmen har opdelt billedet.
Når man arbejder med FCM i billedbehandling, er det også nødvendigt at tage højde for faktorer som billedstørrelse og forbehandling. For eksempel er det ofte nødvendigt at konvertere billeder til gråskala for at reducere kompleksiteten, før de anvendes i algoritmerne. Desuden kan billedjustering og normalisering af pixelværdier være nødvendigt for at sikre, at billederne behandles korrekt og giver meningsfulde resultater.
I praksis er det vigtigt at forstå, at FCM ikke nødvendigvis giver perfekte segmenteringsresultater i alle tilfælde. Nogle billeder kan være komplekse, og clusters kan overlappe, hvilket betyder, at visse pixels kan blive tildelt flere grupper. I sådanne tilfælde kan det være nødvendigt at justere antallet af clusters eller eksperimentere med forskellige præbehandlingsmetoder for at forbedre segmenteringen.
Endelig er det vigtigt at bemærke, at FCM ikke kun er anvendelig til segmentering af billeder, men kan også anvendes i andre domæner, hvor data er usuperviseret, og der er behov for at opdage mønstre og grupperinger i komplekse datasæt.
Hvordan opbygger man virkelige applikationer med MATLAB's reinforcement learning-funktioner?
Når man arbejder med reinforcement learning (RL) i MATLAB, er der flere faktorer, der spiller ind, når man vælger den rette agent og træningsmetode. Forskellige agenter, såsom TD3, DDPG, PPO, SAC og TRPO, kan anvendes i RL-applikationer, og der er observeret markante forskelle i de resultater, de leverer. I et specifikt eksperiment blev SAC-agenten fundet at give de bedste træningsresultater sammenlignet med de øvrige agenter, og den frembringer en mere stabil og glattere kontroloutput i miljøet eller motorstyringen. Det er dog vigtigt at bemærke, at resultaterne kan variere afhængigt af, hvordan agenten er implementeret. For eksempel kan en træning, der anvender en egentlig SAC-agent i Simulink (hvor agenten er en fysisk kopi), give et andet resultat end træning, der anvender en nominal agent, som er dynamisk erstattet under scriptkørslen. Dette skaber en variation i resultaterne, som man bør være opmærksom på.
Når vi ser på de forskellige træningsresultater fra agenttyperne DDPG, PPO og TD3, ser det ud til, at disse agenter ofte giver relativt bedre præstationer i forhold til andre. Derfor er det afgørende at vælge den rette agent baseret på det specifikke problem og miljø.
For at opbygge en reel applikation med reinforcement learning ved hjælp af MATLAB, kan man følge en veldefineret arbejdsgang. Arbejdsgangen omfatter flere grundlæggende trin, som skaber rammerne for at kunne udvikle et funktionelt RL-system:
Først og fremmest skal man definere miljøet, hvor agenten opererer. Det inkluderer at beskrive, hvordan agenten interagerer med miljøet og definerer den dynamiske model for miljøet. Dette er et afgørende skridt, fordi det danner grundlaget for, hvordan agentens handlinger påvirker systemet.
Dernæst skal man definere belønningen, som agenten bruger til at vurdere sine handlinger i forhold til opgavens mål. Belønningssignalet fungerer som feedback og guider agentens beslutningstagning. I denne fase er det vigtigt at overveje, hvordan man vil designe belønningsfunktionen, som kan være enten kontinuerlig eller diskret. For systemer med eksisterende omkostningsfunktioner eller restriktioner kan belønningsfunktionen også skabes ud fra disse.
Herefter skal agenten oprettes. Agenten består af både politikken og træningsalgoritmen. I denne fase skal man vælge en passende måde at repræsentere politikken på, for eksempel ved hjælp af neurale netværk eller opslagstabeller. Det er også nødvendigt at vælge den træningsalgoritme, der passer bedst til problemets kompleksitet og de tilgængelige data.
Træning og validering af agenten er det næste skridt. Her skal man vælge træningsparametre som maksimalt antal episoder, maksimalt antal skridt pr. episode og stopkriterier for træningen. En vigtig del af valideringsprocessen er at simulere agentens præstationer og sikre, at agentens politik fungerer effektivt i den specifikke anvendelse.
Når agenten er trænet, skal den implementeres i praksis, for eksempel ved at generere GPU-kode til at køre politikken på et specifikt hardwaremiljø.
MATLAB tilbyder et væld af funktioner, der understøtter disse trin. For eksempel kan funktioner som rlFunctionEnv(), rlCreateEnvTemplate() og rlSimulinkEnv() anvendes til at oprette forskellige typer brugerdefinerede miljøer. Det er også muligt at bruge prædefinerede miljøer, som er tilgængelige i MATLAB, for at spare tid.
Når det kommer til belønningsdefinitionen, er det afgørende at forstå, hvordan belønningssignalet fungerer som et mål for agentens præstationer. Belønningssignalet skal være designet på en måde, der giver agenten tilstrækkelig information om, hvilke handlinger der er fordelagtige og hvilke, der skal undgås. Dette gør det muligt for agenten at lære at maksimere sin langsigtede belønning.
Derudover indeholder MATLAB RL Toolbox flere indbyggede agenter, som kan anvendes direkte til at spare både tid og ressourcer. Det er ofte en fordel at bruge disse agenter, da de ofte giver bedre resultater end brugerdefinerede agenter. Hvis man ønsker at oprette en egen agent, kan man gøre det ved at oprette en klasse, der er en underklasse af rl.agent.CustomAgent.
Uanset hvilken agent der anvendes, er det vigtigt at sikre, at agentens politik og træningsalgoritme er korrekt designet til at løse det specifikke problem. Neurale netværk er ofte en god løsning til store tilstande og handlinger, hvor beslutningstagning er kompleks.
Når det kommer til implementering af RL-applikationer i MATLAB, er det ikke kun træning og design, der er vigtige, men også hvordan applikationen deployeres. Dette kræver en forståelse af den tekniske implementering af politikken og hvordan den kan anvendes i et realtidsmiljø.
Hvordan fuzzy logik anvendes i motorstyring og temperaturregulering
Fuzzy logik spiller en vigtig rolle i moderne kontrolsystemer, især når der er behov for at håndtere usikkerhed eller ufuldstændig viden om systemets opførsel. I et typisk fuzzy inferenssystem (FIS) anvendes medlemskabsfunktioner til at beskrive de usikre input- og outputvariable, hvorefter regler og inferensalgoritmer bruges til at bestemme systemets adfærd. Dette koncept er nyttigt, når præcise matematiske modeller er vanskelige at opnå, og hvor systemets adfærd er afhængig af menneskelig erfaring og intuition. Eksemplet med temperatur- og motorstyring er en typisk anvendelse af fuzzy logik.
Et system som en luftkonditionering bruger ofte fuzzy logik til at justere temperaturen ved at styre hastigheden på motoren, afhængig af både den aktuelle temperatur og ændringen i temperaturen. Medlemskabsfunktioner beskriver forholdet mellem input (temperatur) og output (motordrejning). For eksempel kan temperaturen opdeles i tre kategorier: lav (LOW), mellem (MID) og høj (HIGH), hver med et specifikt interval af temperaturer. Disse kategorier hjælper systemet med at forstå, hvordan input skal fortolkes, og hvordan det påvirker output.
For motorens hastighed er der et lignende system af medlemskabsfunktioner. F.eks. kan motorens hastighed defineres i tre hastighedsområder: langsom (SLOW), mellem (MID) og hurtig (FAST), hver med et specifikt interval af omdrejninger pr. minut (RPM). Motorens hastighed reguleres afhængigt af temperaturen og ændringen i temperaturen, hvilket resulterer i et kontrolleret svar på de observerede forhold.
Når medlemskabsfunktionerne er defineret for både input og output, er det næste skridt at formulere de fuzzy kontrolregler, der vil blive brugt til at bestemme systemets adfærd. Disse regler er ofte baseret på menneskelige erfaringer og intuitioner, og de er formuleret i IF-THEN format. Et eksempel på en sådan regel kan være: "IF temperaturen er lav, THEN motorens hastighed skal være hurtig." Denne regel hjælper systemet med at træffe beslutninger baseret på de givne forhold.
Fuzzy kontrolregler kan opdeles i to hovedtyper: fuzzy mapping regler og fuzzy implikationsregler. Fuzzy mapping regler beskriver forholdet mellem input og output ved hjælp af sproglige variabler, og de er ofte baseret på menneskelig intuition. Et eksempel på en fuzzy mapping regel kunne være: "IF temperaturen er lav, THEN motorens hastighed skal være hurtig." På den anden side beskriver fuzzy implikationsregler en logisk implikation mellem input og output, hvilket giver systemet mulighed for at drage konklusioner baseret på givne forhold.
I mange systemer, især dem der kræver høj præcision, er det nødvendigt at udvide kontrolreglerne til at omfatte flere inputvariabler. For eksempel i en luftkonditionering kan der ikke kun være temperatur som input, men også ændringen i temperaturen. Reglerne skal derefter udvides til at overveje begge input og beregne output baseret på deres kombination. Dette kan føre til en større mængde regler, som hver især beskriver en specifik situation.
Når de fuzzy kontrolregler er fastlagt, er det nødvendigt at beregne den faktiske kontroloutput ved hjælp af inferenssystemet. Dette output er stadig usikkert eller "fuzzy", og derfor er der behov for en process kaldet defuzzifikation. Defuzzifikation omdanner det fuzzy output til et præcist (crisp) output, som kan anvendes i den virkelige verden. Dette sikrer, at systemet kan operere effektivt og præcist, selv når der arbejdes med usikre inputdata.
Det er vigtigt at bemærke, at mens fuzzy logik kan tilbyde en robust metode til at håndtere komplekse systemer med usikkerhed, kræver det en grundig forståelse af både de systemer, der anvender fuzzy logik, og de regler, der er nødvendige for at få systemet til at fungere effektivt. Uden en korrekt formulering af reglerne og medlemskabsfunktionerne kan resultatet blive upræcist og ineffektivt.
Derudover er det essentielt at forstå, at fuzzy logik ikke nødvendigvis giver en perfekt løsning på alle problemer. Det er et værktøj, der hjælper med at håndtere usikkerhed og kompleksitet, men det kræver omhyggelig opmærksomhed på design og implementering af reglerne for at sikre, at systemet reagerer hensigtsmæssigt på de input, det modtager.
Hvordan man bygger et Fuzzy Logic Inference Control System for et aircondition-system
I denne sektion gennemgår vi, hvordan man implementerer et Fuzzy Logic Inference Control System til et aircondition-system. Vi starter med at definere inputvariablerne og deres medlemskabsfunktioner (MF’er), derefter opstiller vi kontrolreglerne og forklarer de nødvendige operationer for at opbygge et funktionelt system.
Når vi arbejder med inputtemperaturer i et fuzzy logic-system, er det vigtigt at forstå temperaturens intervaller og de tilhørende ændringsrater. For eksempel kan inputtemperaturerne opdeles i tre kategorier:
-
Lav temperatur: 30–50°F, hvor 40°F er centrum.
-
Middel temperatur: 40–80°F, hvor 60°F er centrum.
-
Høj temperatur: 60–90°F, hvor 75°F er centrum.
Desuden kan ændringsraterne for temperaturerne også opdeles i tre niveauer:
-
Lav ændringsrate: 0,0–2,5°F/time
-
Middel ændringsrate: 0,5–3,5°F/time
-
Høj ændringsrate: 1,5–5,0°F/time
Efter at have defineret disse intervaller, fortsætter vi med at konfigurere medlemskabsfunktionerne (MF’er) for inputvariablerne. Ved hjælp af Fuzzy Logic Designer-appen kan vi konfigurere disse funktioner for at modellere, hvordan forskellige temperaturintervaller og ændringsrater skal påvirke aircondition-systemets output.
For inputvariablen Temp defineres tre medlemskabsfunktioner: LOW, MID og HIGH, hver med et specifikt interval og en passende form (f.eks. Triangular, Generalized Bell eller Gaussian). Det samme gælder for Temp_Rate (ændringsrate), som har et interval på 0–5 og de samme tre MF’er.
Når inputvariablerne er sat op, fortsætter vi med at definere outputvariablen Motor_Speed, som bestemmer motorens hastighed på airconditionenheden. Motorens hastighed opdeles også i tre kategorier:
-
Lav hastighed: 100–500 RPM, med 300 RPM som centrum.
-
Middel hastighed: 300–800 RPM, med 500 RPM som centrum.
-
Høj hastighed: 600–1000 RPM, med 800 RPM som centrum.
Disse output-intervaller kræver ligeledes tre medlemskabsfunktioner, som kan konfigureres på samme måde som inputvariablerne. Efter at have konfigureret input- og output-MF’er, er det nødvendigt at gemme projektet for at sikre, at ændringerne bevares. Dette gøres ved at vælge "Save" i Fuzzy Logic Designer og gemme systemet i arbejdsområdet, så det kan anvendes igen i fremtiden.
En vigtig funktion i Fuzzy Logic Designer er MF Editor, som giver mulighed for at justere og finjustere medlemskabsfunktionerne. Denne editor gør det muligt at ændre formen på MFs, f.eks. ved at skubbe dem til venstre eller højre for at ændre deres rækkevidde eller justere "kerne", "support" og "grænse" af en funktion. Dette er nyttigt, hvis man ønsker at skabe mere præcise og praktiske MFs, som passer til de specifikke behov i et aircondition-system.
Efter at medlemskabsfunktionerne er oprettet, kan vi fortsætte med at opbygge kontrolreglerne for FIS-systemet. Her defineres ni kontrolregler, som bestemmer, hvordan motorens hastighed skal justeres i forhold til temperatur og ændringsrate. Et eksempel på sådanne regler kunne være:
-
Hvis temperaturen er lav og ændringsraten er lav, er motorens hastighed høj.
-
Hvis temperaturen er lav og ændringsraten er middel, er motorens hastighed høj.
-
Hvis temperaturen er lav og ændringsraten er høj, er motorens hastighed middel.
-
Hvis temperaturen er middel og ændringsraten er lav, er motorens hastighed middel.
-
Hvis temperaturen er middel og ændringsraten er middel, er motorens hastighed lav.
-
Hvis temperaturen er middel og ændringsraten er høj, er motorens hastighed lav.
-
Hvis temperaturen er høj og ændringsraten er lav, er motorens hastighed middel.
-
Hvis temperaturen er høj og ændringsraten er middel, er motorens hastighed lav.
-
Hvis temperaturen er høj og ændringsraten er høj, er motorens hastighed lav.
Disse regler skal implementeres i MATLAB Fuzzy Logic Designer, hvor du kan importere FIS-filen, definere reglerne og anvende dem på dit system. Når reglerne er oprettet og konfigureret, kan systemet simulere de ønskede outputs baseret på de input, der gives.
Når du gemmer FIS-projektet, er det også muligt at eksportere det til arbejdsområdet, så du kan bruge det i fremtidige projekter eller fortsætte arbejdet på det senere.
Det er vigtigt at forstå, at den primære styrke ved fuzzy logic er dens fleksibilitet til at håndtere usikkerhed og præcist modellere systemer med uklar information. Ved at bruge fuzzy regler og medlemskabsfunktioner kan man skabe et system, der reagerer på komplekse forhold i realtid, hvilket er afgørende for mange automatiserede kontrolsystemer som aircondition-enheder.

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