För att börja arbeta med maskininlärning måste vi först separera funktionerna (features) från målvariabeln (target). I praktiken görs detta genom att placera funktionerna och målet i separata filer. I Python, med hjälp av pandas, kan detta enkelt göras med ett kort kodsnitt där df representerar dataramverket som innehåller våra data. Här kommer de separerade värdena att lagras i två variabler, X för funktionerna och y för målvärdena.
När detta steg är klart, måste värdena i X (de funktionella värdena) transformeras till en gemensam skala. I vissa fall, som vid datasetet om solcellsadoption, spelar detta inte så stor roll eftersom alla funktioner redan är på en skala mellan 1 och 5. Däremot, om funktionerna varierar kraftigt, som till exempel "Ålder" som sträcker sig mellan 25 och 51, och "Kontobalans" som varierar från 29.000 till 450.000, uppstår problem. Skillnader i skala kan göra att maskininlärningsalgoritmer får svårt att bearbeta datan effektivt, eftersom vissa funktioner kommer att dominera beräkningarna. För att hantera detta kan vi använda modulen scikit-learn, som erbjuder olika metoder för att skala data. I detta fall använder vi StandardScaler som justerar värdena kring ett medelvärde av noll med en enhetlig varians. Det är viktigt att spara denna skalerare efter att den har anpassats till datan, eftersom den kommer att behövas när modellen tillämpas på ny data som inte har använts för träning.
Nästa viktiga steg är att skapa en träningsmodell, och här kommer scikit-learn in med sin specialiserade modul för att generera ett beslutsträd. Detta beslutsträd kan användas för att klassificera data där vi inte känner till målvärdena. Träningen av modellen fungerar på samma sätt som vårt ursprungliga exempel om utbildning och miljömedvetenhet. Trädets grenar och de splittade värdena fungerar som modellens parametrar, vilka inte är matematiskt definierade utan justeras iterativt med avseende på en bäst passande funktion.
Det är dock viktigt att förstå att resultatet av denna iterativa process inte alltid kommer att vara perfekt. Det är inget problem i sig, utan snarare nödvändigt, eftersom modellen ska kunna generalisera det den har lärt sig och tillämpa det på andra dataset. Om modellen återger din data till 100%, kan det tyda på att den enbart har lärt sig att replikera just detta dataset, utan att kunna känna igen liknande mönster i nya data. Detta kallas överanpassning (overfitting), och modellen blir i sådana fall ganska värdelös för andra datauppsättningar än den som den tränades på.
För att undvika överanpassning och få en mer robust modell, delar vi upp vårt dataset i ett träningsset och ett testset. Träningssetet används för att justera modellens parametrar, medan testsetet används för att utvärdera hur väl modellen presterar. Vanligtvis delar man upp data med 75% för träning och 25% för testning. Denna uppdelning, som kallas "train-test-split", gör att vi kan kontrollera modellens resultat mot data som den inte har sett tidigare, vilket ger oss en bättre förståelse för hur väl den kan generalisera.
När uppdelningen är klar kan vi definiera det maskininlärningsverktyg vi vill använda, i detta fall en klassificerare baserad på beslutsträd. Verktyget kan appliceras på träningsdatan med bara ett par rader kod. Det är också möjligt att justera hyperparametrarna för verktyget, såsom att välja mellan olika sätt att beräkna renheten i trädet (t.ex. Gini-index eller Entropy), vilket kan göras genom att lägga till ett enkelt argument i koden.
När modellen har tränats vill vi förstå hur bra den presterar. För att göra detta testar vi modellen på vårt testset och utvärderar resultaten med hjälp av olika prestationsmått. Några av de mest använda måtten är noggrannhet (accuracy), precision, recall och f1-score. Noggrannhet visar hur nära klassificeringen ligger de faktiska värdena, medan precision anger hur noggrant modellen förutspår de positiva fallen. Recall, eller känslighet, anger hur många av de faktiska positiva fallen som modellen korrekt identifierar. F1-score är ett medelvärde av precision och recall, där låg precision och recall straffas mer än om båda är låga.
Det är viktigt att förstå att precision och recall ofta står i ett trade-off-förhållande till varandra. Om vi förbättrar precisionen, kan recall minska, och vice versa. Om du vill vara mer säker på att modellens positiva klassificeringar är korrekta, bör du fokusera på att förbättra precisionen. Om du istället vill vara säker på att inte missa några positiva exempel, kan det vara mer fördelaktigt att förbättra recall. I praktiken är det ofta en balans mellan de två, och att optimera f1-score kan vara ett bra mål eftersom det både tar hänsyn till precision och recall.
Dessa resultat kan också sammanfattas i en så kallad förvirringsmatris (confusion matrix), som visar antalet sanna positiva (TP), falska positiva (FP), sanna negativa (TN) och falska negativa (FN) resultat. Dessa värden är grundläggande för att beräkna de ovan nämnda prestationsmåtten och ger en tydligare bild av modellens förmåga att korrekt klassificera data.
Hur kan vi skapa syntetiska data och reducera funktioner för att förbättra maskininlärning?
Ibland kan datamängden vara liten, men ändå betraktas som tillräcklig för att träna en modell. I sådana fall kan man öka datamängden genom att variera den något, baserat på statistiska överväganden. Ett exempel på detta kan ses genom att dubbla ursprungsdatan för PV-adoption (solpaneler) genom att beräkna medelvärdet och standardavvikelsen för alla funktioner, baserat på om målvariabeln är 0 eller 1. Sedan använder man dessa värden för att generera nya instanser som är normalt fördelade (runt samma medelvärde och med samma standardavvikelse) och lägger till dem i den ursprungliga datamängden. Genom att göra detta kan man öka mängden träningsdata utan att behöva samla in ny information.
Det är förstås en stark antagande att alla funktioner är normalt fördelade, men med tålamod kan man arbeta fram de statistiska egenskaperna för funktionerna mer detaljerat och sedan använda dessa för att skapa syntetiska data för träning. På detta sätt kan man övervinna begränsningarna i små dataset och förbättra modellens träningsmöjligheter.
En annan metod för att förhindra överanpassning (overfitting) är funktionsreduktion. Som vi har sett, bidrar funktioner i varierande grad till prediktabiliteten hos data. Beroende på deras renhet i förhållande till målet, ger de mer eller mindre information för klassificering – och därför rangordnas de i en beslutsträdmodell. För enkla modeller är det relativt lätt att manuellt identifiera vilka funktioner som är mest relevanta. I mer komplexa fall, som exempelvis PV-adoption, kan det vara svårare att förstå exakt hur varje funktion påverkar modellen. Därför kan verktyg som graphviz vara till stor hjälp för att visualisera dessa träd och analysera vilka funktioner som är viktigast.
För att få en mer exakt uppfattning om funktionernas betydelse kan man även använda Gini-värdet, vilket mäter den totala minskningen av osäkerheten (impuritet) som en funktion bidrar med. Verktyg som scikit-learn erbjuder funktioner för att rangordna funktioner baserat på deras Gini-värde, vilket kan visualiseras för att få en tydlig bild av vilka funktioner som är mest avgörande för att förbättra modellens förmåga att göra korrekta prediktioner.
Förutom Gini-värdet kan man även använda metoder som Recursive Feature Elimination (RFE) och SelectFromModel. Den första metoden innebär att man iterativt tar bort funktioner och ser hur mycket modellens prestanda påverkas, medan den andra metoden tillåter att man tar bort funktioner från tränade modeller om deras betydelse ligger under en viss tröskel. Båda metoderna hjälper till att hitta det optimala antalet funktioner att använda.
En annan vanlig metod för att hitta det optimala antalet funktioner är Principal Component Analysis (PCA). PCA är en osupervised metod, vilket innebär att den inte använder någon målvärde för att jämföra det optimala resultatet. PCA använder Singular Value Decomposition (SVD) för att dela upp en multivariat datamängd i en uppsättning ortogonala komponenter som förklarar mest variation i data. Ofta kan man visa att en stor del av variationen i en datamängd kan förklaras med ett mindre antal komponenter än antalet funktioner. Genom att reducera antalet funktioner på detta sätt kan man minska risken för överanpassning och samtidigt spara beräkningstid.
När man använder maskininlärning är det också viktigt att känna till de olika verktyg som kan användas för att lösa olika typer av problem. Förutom beslutsträd och deras ensemblemodell, Random Forest, finns det ett antal andra kraftfulla och mångsidiga metoder. Några av de mest dynamiskt utvecklande metoderna är Artificiella Neurala Nätverk, vilket vi kommer att gå in på senare i boken. Men innan vi gör det, bör vi åtminstone nämna tre andra metoder som ofta används och som är mycket effektiva: Support Vector Machine (SVM), k-Nearest Neighbor (k-NN) och Naïve Bayes.
SVM är ett kraftfullt verktyg som kan användas för både linjär och icke-linjär klassificering samt regressionsuppgifter. SVM fungerar genom att försöka separera klasser av data med den bredaste möjliga "gatan" mellan dem. Den största fördelen med SVM är att den försöker hitta den linje, plan eller hyperplan som ger den största möjliga separationen mellan data, vilket gör den robust vid klassificering av nya, osedda data. Vid användning av SVM strävar man efter att minimera förlusten, vilket innebär att man vill hitta den bästa möjliga separationen där misstag i klassificeringen straffas så mycket som möjligt.
En annan intressant egenskap hos SVM är dess användning i regressionsuppgifter. Här försöker modellen istället att förutspå ett kontinuerligt värde, som exempelvis priset på en bil baserat på olika egenskaper som körsträcka, motor, märke och ålder. På så sätt kan SVM vara lika användbar för förutsägelseproblem som för klassificeringsproblem.
För att sammanfatta, att kunna generera syntetiska data, reducera funktioner och förstå vikten av varje funktion i maskininlärningsmodeller är avgörande för att bygga robusta och effektiva system. Genom att använda rätt metoder för funktionsreduktion och genom att utnyttja kraftfulla verktyg som SVM, kan vi skapa mer precisa och snabbare lösningar, även när datamängder är små eller komplexa.
Hur kan vi säkerställa rättvisa i algoritmiska beslut och AI-system?
Algoritmiska system, särskilt de som används inom straffrättsliga eller ekonomiska områden, har länge varit föremål för kritik angående deras opartiskhet och potentiella diskriminering. Ett talande exempel är användningen av algoritmer för att förutspå återfall i brottslighet, där tester visade att svarta individer oftare felaktigt flaggades som "låg risk", jämfört med sina vita motsvarigheter. Företaget som utvecklade systemet hävdade att deras modell behandlade svarta och vita befolkningar på ett liknande sätt, vilket skulle innebära att ingen diskriminering förekom. Men resultaten av dessa tester var inte förenliga, eftersom de närmade sig problemet från olika perspektiv: den ena fokuserade på systemets övergripande prestanda och fann ingen skillnad mellan de svarta och vita grupperna, medan den andra analyserade hur "jämförbara" klasser behandlades och visade på en diskrepans. Båda analyserna var statistiskt korrekta, men deras resultat pekade på att frågan om rättvisa inte kan lösas enbart genom tekniska medel utan måste hanteras på ett socialt och politiskt plan.
Den europeiska dataskyddsförordningen (GDPR) har som mål att öka transparensen och säkerställa att användningen av data och automatiserade beslut sker på ett rättvist sätt. Trots att det finns regler om rätten till förklaring om hur data används, är det ofta svårt att tillämpa denna rättighet fullt ut, särskilt när det gäller moderna maskininlärningsmodeller som djupa neurala nätverk (ANN). Dessa system har ofta komplexa och svårbegripliga interna strukturer som gör det svårt för både användare och utvecklare att förstå hur och varför ett visst beslut fattats.
För att minska risken för missbruk och felaktig information, samt skydda användarnas integritet, är det avgörande att maskininlärningens arbete är i linje med de värderingar och förväntningar som vi människor har på etiska beslut. Eftersom människor och kulturer är mångfacetterade innebär detta att vi måste hitta gemensamma riktlinjer som fungerar för en bredare befolkning. Genom att anpassa algoritmer till dessa mänskliga värderingar kan vi säkerställa att AI:s beslut inte bara är tekniskt exakta, utan även etiskt acceptabla.
En central del i att åstadkomma detta är att arbeta med datakurering och förbehandling, där mångsidiga och representativa datamängder används för att minska bias i träningsdata. Det är också avgörande att skadligt innehåll filtreras bort för att minimera de snedvridna antaganden som kan finnas i algoritmerna. En annan viktig åtgärd är att tillämpa tekniker som "Reinforcement Learning from Human Feedback" (RLHF), där mänskliga annotatörer kan korrigera och ge feedback på algoritmens beslut. Den iterativa naturen hos RLHF gör det möjligt för modeller att förbättras över tid genom att belöna dem för att producera mer etiskt och socialt acceptabla resultat.
För att säkerställa att AI-modeller fungerar enligt mänskliga värderingar är det också viktigt att implementera "Human-in-the-Loop" (HITL)-processer, där människor kontinuerligt övervakar och korrigerar algoritmernas beslut i realtid. Kombinationen av mänsklig inblandning och automatiserade etiska och bias-granskningar gör det möjligt att identifiera och åtgärda potentiella problem innan de leder till negativa konsekvenser. Dessutom spelar ökad transparens och förklarbarhet, såsom uppmärksamhetsmekanismer och öppna rapporter om algoritmers beslut, en viktig roll i att bygga förtroende och ansvar i AI-systemens användning.
Trots de framsteg som gjorts inom dessa områden är vägen fortfarande lång. Även om det finns många ansträngningar för att göra AI-modeller mer transparenta och förutsägbara, och även om resultaten i många fall har varit lovande, är den verkliga utmaningen att säkerställa att AI-system fungerar på ett sätt som både är tekniskt avancerat och etiskt hållbart. Det är en balansgång mellan effektivitet, rättvisa och transparens som ännu inte har uppnåtts fullt ut, men som fortsätter att vara ett kritiskt forskningsområde.
I denna kontext är det av största vikt att förstå de grundläggande principerna och funktionerna bakom de teknologier som kommer att forma vår framtid. Att ha en medvetenhet om de möjligheter och risker som AI medför, samt att kunna bedöma hur dessa system fungerar, är en nödvändighet för att kunna ta informerade beslut i en allt mer digitaliserad värld.
Hur Modeller Används för Att Förbättra Förstärkande Inlärning
Förstärkande inlärning (RL) handlar om att använda belöningar och straff för att styra ett system mot ett mål, men den största utmaningen ligger i att skapa en modell som är flexibel och kan anpassa sig till föränderliga omständigheter. En Q-tabell, som används för att kartlägga belöningar för olika handlingar, kan vara ett effektivt verktyg i statiska miljöer, men i en dynamisk värld där målen och vägen till dessa kan förändras, blir modellen otillräcklig. Här uppstår behovet av att kunna både exploatera den nuvarande kunskapen och samtidigt utforska nya alternativ för att anpassa sig till nya situationer.
En möjlig lösning på detta problem är att införa en parameter 𝜖 i Bellman-ekvationen, som styr hur stor sannolikheten är för att en agent väljer en åtgärd baserat på den kända Q-värdet, i förhållande till sannolikheten för att välja en slumpmässig åtgärd. Detta tillvägagångssätt gör att modellen blir mer flexibel och kan användas för att hantera en rad komplexa och föränderliga uppgifter. Som exempel på detta tillvägagångssätt kan vi titta på projekt som "AI Economist", där RL används för att optimera skattepolitik med målet att förbättra både jämlikhet och produktivitet.
Det finns också många exempel på RL som används i kombination med andra maskininlärningsmetoder, särskilt artificiella neurala nätverk, för att lösa komplexa spelrelaterade uppgifter. Ett av de mest kända exemplen är AlphaGo, som 2016 besegrade Go-mästaren Lee Sedol. Sedan dess har RL-tekniker utvecklats vidare och AlphaZero, som använder en mer avancerad form av Q-värdeberäkning via djupa neurala nätverk, överträffade AlphaGo 2017 och vann ännu mer imponerande prestationer med hjälp av självinlärning, där algoritmen spelade mot sig själv utan någon förkunskap om människogenererade spel.
Men trots framstegen finns det en grundläggande nackdel med förstärkande inlärning. Det handlar om att RL i sin grundläggande form inte ger någon feedback om vägen till målet förrän det slutgiltiga målet är uppnått. Detta innebär att det inte ger någon information om vad som fungerade bra och vad som kunde ha förbättrats under processen. Ett exempel på detta problem kan ses i uppgiften att en agent ska nå ett mål genom att svänga fram och tillbaka för att samla hastighet. Om agenten misslyckas med att samla tillräcklig hastighet kan straffet vara större än belöningen för framgång, vilket gör att negativa konsekvenser av misstag blir mer påtagliga än positiva effekter av framgång.
En vanlig metod för att övervinna detta problem är belöningsingenjöring, vilket innebär att man inte bara belönar det faktiska måluppnåendet, utan även de mellanliggande åtgärderna som är fördelaktiga för att nå målet. Detta kräver dock förkunskap om uppgiften och är därför inte alltid en användbar lösning. En annan metod är att lagra tidigare misslyckade försök i en erfarenhetsbuffert, vilket gör det möjligt att dra lärdom av misslyckanden och genomföra en mer informerad inlärning. Denna metod kallas för Hindsight Experience Replay (HER), vilket gör det möjligt att generera modeller genom trial-and-error genom att föreställa sig alternativa scenarier. Genom HER kan RL förbättra sin prestation genom att använda erfarenheter av både framgång och misslyckande.
En annan stor utmaning inom förstärkande inlärning är den enorma storleken på tillståndsrymden. Det innebär att antalet möjliga handlingar i varje given situation kan vara mycket stort och därmed svårt att utforska. Detta blir särskilt påtagligt vid komplexa uppgifter som att köra bil, där varje ögonblick kan medföra ett stort antal möjliga handlingar, många av dem helt olämpliga för att uppnå målet. För att hantera denna problematik görs stora ansträngningar för att reducera tillståndsrymden till hanterbara storlekar. En metod för detta är Inverse Reinforcement Learning (IRL), där en preliminär belöningsfunktion extraheras från observerat beteende, till exempel från mänskliga handlingar. I fallet med självkörande bilar skulle IRL möjliggöra en modell som lär sig från människor genom att observera deras beteende och sedan approximera en belöningsfunktion baserat på dessa data.
Genom att applicera RL i komplexa uppgifter, kan agenter inte bara lära sig att fatta beslut baserat på tidigare erfarenheter, utan också utveckla förmågan att lära sig från tidigare misslyckanden och iterera mot optimal prestanda. Detta gör RL till en kraftfull metod för att lösa komplexa problem, även om det fortfarande finns utmaningar kvar i hur man gör denna process både effektiv och generell.
Hur kan energi-metoder och Lp(Lq)-metoder kombineras för att analysera stokastiska reaktions-diffusions ekvationer?
Varför attraheras vissa grupper av väljare till nationalistiska ledare som Donald Trump?
Hur nya fotoinitiatorer för tvåfoton 3D-utskrift revolutionerar mikrostrukturering

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