I multiagent-miljøer, der benytter en universel prøvetid, er det vigtigt, at alle agenter udfører deres handlinger samtidig i ét tidsinterval. Denne tilgang muliggør en ensartet og synkroniseret opdatering af alle agenters tilstande. Et alternativt miljø er et tur-baseret system, hvor agenterne tager deres handlinger i tur og orden. I sådanne miljøer tildeles eksekvering kun én agentgruppe ad gangen, og grupperne udfører deres handlinger, når det er deres tur. For begge typer af multiagent-miljøer kan observationer og handlinger specificeres ved hjælp af cellearrays af specifikationselementer, der relaterer sig til hver agent i systemet.
For tilpassede multiagent-funktionelle miljøer med universel prøvetid kan man anvende funktionen rlMultiAgentFunctionEnv() til at returnere et miljøobjekt, mens tur-baserede multiagent-miljøer skabes via rlTurnBasedFunctionEnv(). Når man opretter et multiagent-miljø og konfigurerer træningsindstillinger for agenterne, skal man benytte objektet rlMultiAgentTrainingOptions. Dette objekt tillader valget mellem decentraliseret eller centraliseret træning. I decentraliseret træning samler hver agent sine egne erfaringer og lærer uafhængigt af de andre, mens centraliseret træning indebærer, at erfaringerne deles mellem agenterne, så de kan lære af hinandens samlede viden.
Simulering af agenter og visualisering af træningsprogression kan gøres effektivt ved hjælp af funktionerne train() og sim(). Træningsfremskridt kan visualiseres med "Reinforcement Learning Training Manager", som giver et overblik over agenternes læringskurve og systemets effektivitet under træningens forløb.
I relation til opbygning af tilpassede miljøer skal man vælge mellem at benytte en skabelon for funktionelle miljøer eller at oprette et miljø i Simulink. Skabelonmetoden er særligt velegnet til udvikling af miljøer, hvor der er behov for kompleks funktionalitet. Skabelonerne giver brugeren stor fleksibilitet i at tilpasse miljøet, herunder muligheden for at tilføje specifikke metoder som for eksempel visualisering via tilpassede plotfunktioner.
Når man arbejder med Simulink til at designe multiagent-miljøer, kan man udnytte muligheden for at modellere miljøer med multirate eksekvering, hvor hver agent kan have forskellige eksekveringshastigheder. Dette skaber et dynamisk og realtidsorienteret miljø, hvor agenterne kan operere uafhængigt i forhold til deres udførelsestidspunkter. Et praktisk eksempel på dette kunne være i forbindelse med kontrolsystemer, hvor man anvender en DC-motor som referencemodel.
For at skabe et tilpasset miljø til styring af en DC-motor ved hjælp af forstærkningslæring er det nødvendigt at udvikle de grundlæggende funktioner som reset() og step(). Funktionerne er afgørende for at definere miljøets startbetingelser samt for at opdatere motorens tilstand og give agenterne feedback i form af belønninger.
Eksempel på en tilpasset reset-funktion
I et DC-motorsystem vil reset-funktionen definere de oprindelige betingelser, som motoren starter under. Det kan eksempelvis være en tilfældig startværdi for rotationsvinklen (θ) og motorens hastighed (dθ). Denne reset-funktion sørger for at placere systemet i en god startposition, så agenterne kan begynde deres læring. For eksempel kan initialiseringen af θ være en tilfældig værdi i intervallet ±0.05 rad, og motorens hastighed (dθ) kan sættes til 0 ved start.
Eksempel på en tilpasset step-funktion
Step-funktionen er ansvarlig for at opdatere motorens tilstand og give feedback baseret på agentens handling. I dette tilfælde bestemmes agentens handling (f.eks. ønsket spænding på motoren) og anvendes til at beregne motorens bevægelse. Feedback i form af belønninger gives afhængig af, hvor tæt motorens rotationsvinkel er på den ønskede værdi. Hvis motorens rotationsvinkel afviger for meget, kan der gives en straf.
En vigtig detalje i step-funktionen er, at den skal kontrollere, om handlingen, som agenten foretager, er inden for et acceptabelt område. For eksempel kan et krav være, at motorens rotationshastighed ikke må overskride en bestemt grænse, f.eks. 50 RPM. Hvis agenten forsøger at anvende en handling uden for dette interval, udløses en fejlmeddelelse.
Belønningen tildeles agenterne på baggrund af, om motorens rotationsvinkel ligger inden for det tolerable fejrområde (f.eks. 2 grader eller 0.035 rad). Hvis motoren kører som ønsket, gives en positiv belønning, mens en straf gives, hvis motoren afviger fra den ønskede rotation.
Det er også nødvendigt at anvende numeriske metoder som Euler-integration for at opdatere systemets tilstand fra én tidsperiode til den næste. Dette giver en kontinuerlig opdatering af tilstanden, hvilket er essentielt for at agenterne kan lære at kontrollere systemet effektivt.
Når du arbejder med disse tilpassede funktioner i et multiagent-miljø, skal du være opmærksom på følgende aspekter:
-
Hvor vigtig det er at præcist definere betingelserne for både starttilstand og step-funktion.
-
Hvordan du kan udnytte feedbackmekanismer til at guide agenternes læring på en effektiv måde.
-
Hvordan du kan implementere robust fejlhåndtering i din step-funktion, så miljøet kan reagere hensigtsmæssigt på uventede handlinger fra agenterne.
-
At det er nødvendigt at sikre, at alle funktioner arbejder sammen i et koordineret system for at opnå stabil og effektiv læring.
Hvad er de forskellige metoder indenfor fuzzy logik og deres anvendelse i kontrolsystemer?
Fuzzy logik har gennem de seneste årtier vist sig at være et vigtigt værktøj indenfor kontrolsystemer, især når det kommer til at håndtere systemer, der involverer usikkerhed og uklarhed i inputdataene. Forskellige metoder er blevet udviklet til at implementere fuzzy logik i disse systemer, hver med sine egne fordele og specifikationer. For at forstå de anvendte metoder, er det vigtigt at dykke ned i nogle af de mest anvendte tilgange: Mean of Maximum (MOM) metoden, Center of Gravity (COG) metoden og Height (HM) metoden.
MOM-metoden (Mean of Maximum) er en af de enkleste metoder indenfor fuzzy inferens, hvor det output, der vælges som resultat, er gennemsnittet af de maksimale værdier, der opstår i den fuzzy-mængde. Denne metode bruges ofte, når der er behov for en hurtig og relativt præcis estimering af resultatet, selvom den kan være mindre præcis end mere sofistikerede metoder.
COG-metoden (Center of Gravity) er den mest populære metode i praksis, når man arbejder med fuzzy logik i kontrolsystemer. Denne metode beregner det centroids af den fuzzy-mængde, hvilket giver et resultat, der er vægtet ud fra de forskellige værdier og deres sandsynlighed. Det er særligt effektivt i systemer, hvor input og output ikke er lineære, og man ønsker en balanceret og præcis løsning.
HM-metoden (Height Method) er en metode, hvor det output, der vælges, er den højeste værdi af outputfuzzy-mængden, som har den højeste tilknyttede medlemskabsgrad. Denne metode er især nyttig i situationer, hvor det er nødvendigt at vælge en entydig løsning, og hvor et system ikke kan tillade for mange beregninger i realtid.
Online og offline output refererer til, hvordan fuzzy logik systemer interagerer med miljøet. I et online output system kan resultater beregnes i realtid, mens et offline output system kræver, at alle inputbevægelser er samlet og analyseret på forhånd. Det online system er således mere fleksibelt og dynamisk, men også mere krævende i forhold til beregningskraft.
En lookup table er et effektivt værktøj, når der er behov for hurtigt at tilgå resultater baseret på specifikke input. Denne tabel kan hjælpe med at forenkle beregningerne, da det er muligt at forudberegne resultater og blot slå dem op i tabellen, når inputdataene er tilgængelige. Dette kan være nyttigt i situationer, hvor systemet arbejder med et begrænset antal mulige inputs og resultater.
Når man implementerer fuzzy logik kontrolsystemer i praksis, som i tilfældet med en air conditioner, er det nødvendigt at bruge både teoretiske metoder og praktiske værktøjer som MATLAB’s fuzzy logic toolbox. Denne software giver brugeren mulighed for at designe og implementere både standard og type-2 fuzzy logik systemer. At kunne bygge et sådant system kræver forståelse for både den matematiske baggrund og de specifikke funktioner og værktøjer, der tilbydes af udviklingsmiljøet.
Type-2 fuzzy systemer udvider de traditionelle type-1 systemer ved at håndtere usikkerheden i medlemskabsværdierne, hvilket gør dem velegnede til situationer, hvor data er endnu mere usikre eller har stor variation. For eksempel anvendes type-2 fuzzy systemer i mere komplekse systemer, hvor det ikke kun er inputdataene, der er usikre, men også den præcise betydning af disse data.
Når man arbejder med sådanne avancerede systemer, er det ikke kun vigtigt at vælge den rette metode til at implementere inferenssystemet, men også at forstå den bagvedliggende logik og hvordan den fungerer i praktiske anvendelser. Effektiv implementering af fuzzy logik i kontrolsystemer kræver en solid forståelse af, hvordan man opbygger og optimerer både input og output medlemskabsfunktioner samt hvordan man designer kontrolregler, der passer til det specifikke system.
Det er også vigtigt at bemærke, at selvom disse metoder kan give præcise løsninger under de rette omstændigheder, kan de stadig være sårbare overfor systematisk fejl, især i komplekse og dynamiske miljøer. Det er derfor nødvendigt at udføre simulationsstudier og teste systemerne under forskellige scenarier for at sikre, at de fungerer som ønsket.
Hvordan man opbygger en lineær regressionsmodel ved hjælp af Regression Learner i MATLAB
Den modificerede datasæt, MFire_Database.xls, er blevet genereret ved at tilføje en ekstra kolonne, FWI, til datasættet. Dette datasæt indeholder 14 uafhængige variabler, der fungerer som input, såsom temperatur, vind, nedbør, FFMC, ISI, BUI og DC, samt én afhængig variabel, FWI, som er resultatet. Der er i alt 518 rækker med inputdata, som vil blive brugt til træning, kontrol og validering af en multiple lineær regressionsmodel. For at bygge denne model skal du udføre følgende operationer:
-
Åbn MATLAB R2023a eller en senere version, og klik på App-fanen. Klik på drop-down pilen for at finde Regression Learner App-ikonet under kategorien MACHINE LEARNING AND DEEP LEARNING, som vist i Fig. 5.19. Klik på ikonet for at åbne app'en.
-
Brug Regression Learner App'en til at generere en ny model eller åbne en eksisterende model. I dette tilfælde skal vi oprette en ny model. Der er to måder at generere en ny model på:
(a) Fra Workspace – find datasættet i workspace.
(b) Fra fil – find datasættet i en fil. Det er lettere at bruge den anden metode, da du ikke behøver at gemme dit datasæt i workspace. -
Klik på drop-down pilen i New Session ikonet og vælg "From File".
-
I den åbne "Select File"-explorer, skal du gennemse den mappe, hvor dit modificerede datasæt, MFire_Database.xls, er gemt. Dette datasæt kan findes på Springer ftp-site under mappen "Students\Datasets". I vores tilfælde er det placeret i C:\Artificial Intelligence Book\Students\Datasets. Vælg datasættet og klik på Åbn.
-
Klik på det grønne flueben, som vist i Fig. 5.20, for at importere datasættet til modellen.
-
I næste trin skal du kontrollere og konfigurere det importerede datasæt, som vist i Fig. 5.21, for at sikre, at alle indstillinger er korrekte til regressionsprocessen.
-
I Fig. 5.21 vises alle detaljerne om datasættet, herunder datasættets navn, den afhængige variabel, Response, som er FWI, og de 14 uafhængige variabler (kaldet Prediktorer), under gruppen "Datasæt". Alle konfigurationer relateret til regressionsprocessen vises under gruppen "Validation" til højre. Validering er en proces, der bruges til at undersøge den forudsigende nøjagtighed af de tilpassede modeller. Den estimerer modelpræstationen på nye data sammenlignet med træningsdataene og hjælper med at vælge den bedste model. Der er tre typer valideringsmetoder, der kan anvendes:
(a) Krydsvalidering
(b) Holdout-validering
(c) Resubstitution-validering
Krydsvalidering kan automatisk opdele alle data i datasættet i flere mapper for at udføre træning, kontrol og testfunktion, når regressionen udføres. Holdout-validering kræver, at datasættet opdeles manuelt i tre dele af brugeren. Den tredje metode tilbyder ikke nogen testfunktion. Til validering anbefales det at bruge krydsvalideringsmetoden. Behold alle standardindstillinger under gruppen Validation og klik på Start Session for at starte regressionsprocessen. Hvis du ønsker at bruge et andet datasæt som testdatasæt, kan du markere "Set aside a test data set"-boksen.
Regression Learner tilbyder to måder at udføre regressionsprocessen på:
(a) Automatisk regressionsmodeltræning
(b) Manuel regressionsmodeltræning
Den automatiserede regressionsmodeltræning gør det muligt for Regression Learner at vælge og afprøve forskellige algoritmer for at udføre regressionsprocessen og vise alle mulige resultater. Brugeren kan vælge den optimale model som mål. For manuel regressionsmodeltræning kan brugeren vælge en specifik algoritme til at udføre regressionsprocessen. Til testformål vil vi først vælge den automatiserede metode. Følg disse trin:
-
I sektionen "Models", klik på pilen for at udvide listen over regressionsmodeller. Vælg "All Quick-To-Train" for at træne alle de modeller, der er hurtige at tilpasse.
-
I sektionen "Train", klik på drop-down pilen på "Train All" og vælg "Train All". Klik på ikonet for at starte træningen.
-
Den automatiserede regressionsmodeltræning starter, og alle mulige resultater vises, som vist i Fig. 5.23. Den optimale model er den, hvor valideringen anvender Root Mean Square Error (RMSE), som er den anden algoritme i Fig. 5.23.
-
Der vises fem mulige algoritmer til regressionsprocessen, og hver algoritme vurderes med en tilknyttet valideringsfejl. Algoritmen 2.2, der er en Tree mapping algoritme, har den mindste RMSE-værdi.
-
Vælg den lineære regressionsalgoritme, da vi diskuterer den, og klik på "Predicted vs. Actual"-ikonet for at vise en sammenligning mellem regressionsresultatet og de faktiske data, som vist i Fig. 5.24. Et godt fit bør have alle de faktiske datapunkter tæt på den forudsigede linje, hvilket er tilfældet i vores situation.
-
Du kan også kontrollere træningen af regressionsmodellen med et resumé og en tabel ved at klikke på "Summary" og "Results Table"-ikonerne, som vist i Fig. 5.24. Træningsresuméet og resultattabellen vises i Fig. 5.25 og 5.26. Under X-aksen kan du vælge den sande respons, den forudsigede respons, rekordnummer eller en af prediktorerne for at udføre den relaterede residualanalyse.
For at gemme den opbyggede session eller model som en .mat-fil i din ønskede mappe, klik på "Save\Save Session"-knappen. Den gemte model kan åbnes senere, når du har brug for at bruge den igen.
Efter at have afsluttet modellens opbygningsproces via Regression Learner, kan du eksportere modellen til workspace, så du nemt kan bruge den i fremtiden.
Når modellen er oprettet, kan den analyseres ved hjælp af residualplottet, som viser forskellen mellem de forudsigede og faktiske responser. For at få adgang til residualplottet, klik på pilen i "Plot and Interpret"-sektionen og vælg "Residuals (Validation)" i gruppen "Validation Results". Dette plot kan hjælpe med at vurdere modelpræstationen.
Det er vigtigt at huske på, at validering af en regressionsmodel ikke kun handler om at vælge den model, der bedst passer til træningsdataene. Valideringen giver indsigt i, hvordan modellen vil performe på nye data, og det er derfor et kritisk skridt i modellens udvikling.
Hvordan træner man en model til binær klassifikation ved hjælp af lineære funktioner?
I maskinlæring er formålet med træningsprocessen at minimere tabet, så fejlen bliver så lille som muligt, indtil den når et acceptabelt niveau. For at illustrere denne proces kan vi anvende et eksempel med virtuelle data, hvor vi simulerer billeder for at gøre træningen mere forståelig. I et simpelt tilfælde, som vist i figur 6.11, anvendes tre typer billeder – kat, hund og bil – som inputvektorer. Hver inputvektor (række) består af fem elementer, der bliver transformeret til en kolonnevektor (5×1). Vægtmatricen konstrueres som en 3×5 matrix, der indeholder funktionerne for hver række eller inputvektor. Under træningen beregnes den faktiske score for et givet input ved at anvende en matematisk formel, og denne score sammenlignes med den ønskede score, der for kattebilledet er [1 0 0]^T. Fejlen eller tabet fungerer som en indikator og sendes tilbage til vægtmatricen og bias, som derefter justeres for at reducere fejlen, indtil den er acceptabelt lille.
Når man ser nærmere på de MATLAB-koder, der bruges til at simulere disse beregninger (figur 6.12), kan vi forstå, hvordan inputdataene, vægtmatricen og bias påvirker det endelige resultat. Vægtmatricen W er en 3×5 matrix, biasvektoren B er en kolonnevektor, og inputvektoren X er en 5×1 kolonnevektor. Den faktiske score S beregnes ved at multiplicere vægtmatricen med inputvektoren og derefter tilføje biasvektoren, som vist i de simulerede MATLAB-beregninger. Dette giver et mål for, hvordan godt de valgte parametre i vægtmatricen og bias matcher de ønskede resultater.
I denne kontekst er det vigtigt at forstå, hvordan træningen af en model involverer justering af vægte og bias baseret på den beregnede fejlfunktion. Det er en iterativ proces, hvor modellen langsomt tilpasses, indtil den når et punkt, hvor fejlen er minimal og modellen er i stand til at lave præcise forudsigelser.
Binary Linear Classifications og relaterede funktioner
Når vi taler om lineære klassifikationer, bør vi også forstå, hvordan de fungerer i praksis, især når det kommer til binære klassifikationer. En lineær klassifikator træffer en beslutning om en observation ved at bruge en lineær kombination af observationens funktioner. I tilfælde af binære lineære klassifikatorer bliver en observation klassificeret i en af to mulige klasser baseret på en lineær grænse i inputfunktionens rum.
De mest almindelige metoder til binær lineær klassifikation inkluderer:
-
Binary GLM Logistic Regression – En logistisk regressionsmodel, der bruges til binære klassifikationsproblemer.
-
Binary Gaussian Kernel Classifier – En klassifikator, der anvender en Gaussian kernel til at klassificere data.
-
Binary Linear Support Vector Classifier (SVC) – En support vector machine (SVM)-baseret klassifikator til binære klassifikationer.
-
K-Nearest Neighbor (KNN) Binary Classifier – En KNN-algoritme, der kan anvendes til binær klassifikation.
For eksempel, i en Gaussian Kernel Classification anvendes en kernel funktion, som k(xₙ, xₘ), til at beskrive, hvordan lignende to datapunkter er i forhold til hinanden. Denne funktion kan hjælpe med at klassificere data i to klasser, hvor klassifikationen afhænger af, hvor tæt punkterne er på den lineære grænse. For at gøre dataene lineært adskilte, bruges en højdimensionel feature space, som visualiseret i figur 6.9a.
Support Vector Classifier og K-Nearest Neighbor Classifier
I sektion 5.5 og 5.7 i bogen er der allerede en grundig gennemgang af Support Vector Machine (SVM)-algoritmen og K-Nearest Neighbor (KNN)-metoden. Det er værd at bemærke, at disse metoder også kan anvendes til binære klassifikationer. En vigtig aspekt ved både SVM og KNN er, at de kræver en passende parameterindstilling for at opnå en god præstation.
Funktioner og Metoder til Binær Klassifikation
De vigtigste funktioner til binær klassifikation i MATLAB er følgende:
-
fitclinear() – Træner en lineær klassifikator til binær klassifikation.
-
fitckernel() – Anvender en kernel-metode til at træne en binær klassifikator.
-
fitcsvm() – Bruger en SVM-tilgang til at træne en binær support vector classifier.
-
fitcknn() – KNN-metoden til binær klassifikation.
Der er også avancerede funktioner som fitglm(), der kan bruges til at træne en generel lineær model. Funktionerne returnerer et trænet klassifikationsmodelobjekt, som kan anvendes til at forudsige fremtidige observationer.
Eksempelprojekt med Diabetes-datasæt
For at demonstrere anvendelsen af disse funktioner, kan man oprette et simpelt eksempelprojekt baseret på et diabetes-datasæt. I dette projekt bruges de nævnte funktioner til at træne modeller, der kan klassificere, om en patient har diabetes eller ej. Ved at implementere disse funktioner kan man træne og evaluere forskellige klassifikatorer og vælge den bedste model baseret på præstationen.
Yderligere Perspektiver
Når du arbejder med binær klassifikation, er det vigtigt at forstå, at valget af funktion og model afhænger af datasættets karakteristika. Nogle metoder, som SVM eller Gaussian Kernel, er mere velegnede til ikke-lineært separerbare data, mens andre metoder som logistisk regression og lineær SVM kan være mere effektive, når data er lineært separerbare.
Det er også vigtigt at anvende teknikker som krydsvalidering for at vurdere, hvordan godt modellen generaliserer til nye, usete data. Dette kan opnås ved hjælp af krydsvalideringsteknikker som 'Kfold', som hjælper med at sikre, at modellen ikke er overtilpasset til træningsdataene.

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