Velkommen til Machine Learning med MAGS. Denne side henvender sig primært til vores 10-dages valgfag i Machine Learning med har også information til hvordan man kommer længere end de 10 dage

Hvad er Machine Learning / Maskine læring

[Machine learning is the] field of study that gives computers the ability to learn without being explicitly programmed.

*Arthur Samuel, 1959*

Vi har haft mange programmerings kurser og lavet flere software produkter inden det her kursus. Noget som er til fælles er at vi altid har programmet computeren og programmet til at gøre præcis som vi vil. Derfor skal vi også konkret beskrive alt hvad der skal ske og selv tænker alle muligheder igennem, mon vi kunne få en computer til det?

Vi ved allerede at computere langt bedre end os til mange ting, en af de ting er at behandle store mængde data. Her kan vi specielt bruge ML til at arbejde med det data, meget mere effektivt end hvis vi selv skulle designe modeller som altid løser problemet. Der er også problemer som vi ikke ville have mulighed for at løse uden ML.

[Vi låner en video fra Google omkring ML, langt de fleste emner går vi også igennem. Kurset som han omtaler er også under listen i starten! https://developers.google.com/machine-learning/crash-course/ml-intro](https://download.mlcc.google.com/mledu-videos/en/ml_intro_norvig.mp4)

Vi låner en video fra Google omkring ML, langt de fleste emner går vi også igennem. Kurset som han omtaler er også under listen i starten! https://developers.google.com/machine-learning/crash-course/ml-intro

Machine Learning Explained in 100 Seconds

Vi kigger her på 3 modeller som giver os et indblik i hvordan vi kan bruge ML til vores software udvikling


Den traditionelle

Traditionelt har vi bygget platforme som vores billede til venstre. Altså hvor vi selv studere problemet, vi laver regler og bygger systemer ud fra vores studie. Når vi har regler og systemer på plads evaluerer vi vores produkt og om det er klar til at lancere. Hvis ikke skal vi igennem hele møllen igen og ofte skrive nye regler og systemer.

https://learning.oreilly.com/library/view/hands-on-machine-learning/9781098125967/ch01.html

https://learning.oreilly.com/library/view/hands-on-machine-learning/9781098125967/ch01.html

https://learning.oreilly.com/library/view/ai-and-machine/9781492078180/ch01.html#limitations_of_traditional_programming

https://learning.oreilly.com/library/view/ai-and-machine/9781492078180/ch01.html#limitations_of_traditional_programming


ML Model

Den første model, hvor vi begynder at bruge ML er hvor vi erstatter vores selvskrevne regler og systemer med svar som vores ML model kommer frem med ud fra vores data.

Vi skal stadig evaluere vores resultat som ML modellen kommer med, men hvis de fejler, skal vi kun adaptere modellen og ikke manuelt skrive nye regler og systemer.

https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781098125967/files/assets/mls3_0102.png

https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781098125967/files/assets/mls3_0102.png

https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781492078180/files/assets/aiml_0109.png

https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781492078180/files/assets/aiml_0109.png


ML automatiseret

Til sidst har vi en komplet ML Model, her er vores Machine learning i fokus og bliver brugt til fulde. Her evaluere vores model sig selv, samler selv data og opdatere sig selv. Hvis opsat korrekt kan vi altså automatisere hele processen.

https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781098125967/files/assets/mls3_0102.png

https://learning.oreilly.com/api/v2/epubs/urn:orm:book:9781098125967/files/assets/mls3_0102.png


Spam-mail filter med grader af ML modellerne

De 3 modeller kan virke meget flyvske og svære at relatere til et reelt problem, så vi tager det lige helt ned til jorden med et eksempel. Et projekt som ofte bliver brugt indenfor og nævnt indenfor ML er spam-filtrering på mails. Her vil vi gerne have et system som fanger alle mails, som enten ikke har interesse for os eller har direkte skadeligt indhold.

Ved brug af den traditionelle metode, ville vi skrive regler og gøre det manuelt. Her kunne det være at vi lavede et filter som placere alle mails som indeholder shortlinks i spam. Scammers bruger ofte shorturls/links i deres spammails, så det kunne være et godt filter, men hvad så hvis det var din kollega som synes det var smart at bruge en shorturl i en mail. Her skulle vi igen, manuelt skrive en regel om at alle mails fra din kollega skal godkendes. Her skal brugeren måske selv tilmelde en mailadresse til at blive whitelistede eller måske det er taget hånd om fra en organisation, det kunne være mercantec.dk

Her ser vi problemet med at alle mulige regler skal implementeres og ofte kan de ramme mails som ikke skulle have gået i filteret.

Her kan vi starte med at implementere en ML Model som i det 2. billede. Her skal vi bruge en form for data, som vores model kan adaptere regler på. Den ville gennemsøge alle mails, sætte dem i kategori og udvælge nogle til at blive sorteret til spamfiltret. Det kan være at den kigger på mail tidspunkt, frekvens eller noget helt tredje. Her evaluere vi ofte manuelt på det som ML modellen har bygget, hvis vi vurdere at den opfylder kravene, lancere vi den.

Til sidst kan vi bruge den sidste model med Automatiseret ML her er vi i princippet aldrig en model som er komplet, den bliver ved med at blive klogere fordi vi bliver ved med at fordre data og evaluere på resultatet. Her starter vi med at træne modellen på et datasæt, den bliver evalueret og lanceret. Fordi der bliver modtaget mails hver dag, som både kan være spammails eller ikke spammails. De bliver fodret tilbage til vores ML model, som de kommer ind og forhåbentligt burde den blive klogere fra gang til gang. Derfor er hele processen automatiseret.

Vi kommer ind på hvordan vi kan udvide programmet, blandt andet med Supervised Learning og ‣. Jeg håber der gav en smule kontekst til hvordan de forskellige modeller og grader af ML kan bruges.

Verdenen af Machine Learning

Her ser vi et billeder af nogle under kategorier som eksistere under Machine Learning. Det er dem som vi bruger de næste 10 dage på at udforske.

Her ser vi et billeder af nogle under kategorier som eksistere under Machine Learning. Det er dem som vi bruger de næste 10 dage på at udforske.

De 3 hovedkategorier inden for ML

De 3 hovedkategorier inden for Machine Learning er:

Supervised Learning

Supervised Learning.png

Supervised Learning er en type af Machine Learning, hvor algoritmen trænes på et datasæt med input-output-par. Algoritmen forsøger at lære at generalisere fra disse eksempler og forudsige outputtet for nye input, som den ikke har set før.

Et eksempel på Supervised Learning er at træne en algoritme på et datasæt af billeder, hvor hvert billede har en label, der angiver, hvilken type objekt der er på billedet. Algoritmen vil forsøge at lære at genkende objekter på nye billeder baseret på de tidligere eksempler, den har set.

En anden anvendelse af Supervised Learning er at træne en algoritme til at forudsige fremtidige værdier af en variabel baseret på tidligere observationer. For eksempel kan en algoritme trænes på tidligere data om vejrforhold for at forudsige temperaturen i morgen.

Supervised Learning kan også bruges til klassifikation, hvor algoritmen forsøger at placere input i forskellige kategorier eller grupper baseret på deres egenskaber. For eksempel kan en algoritme trænes på et datasæt af e-mails, hvor hver e-mail er enten "spam" eller "ikke-spam". Algoritmen vil forsøge at lære at identificere "spam"-e-mails i fremtiden.

I løbet af dette kursus vil vi udforske forskellige Supervised Learning-algoritmer, herunder naive Bayes og neural networks.


Unsupervised Learning

Unsupervised Learning.png

Unsupervised Learning bruges, når dataene ikke har nogen labels eller etiketter til at fortælle algoritmen, hvad de repræsenterer. Algoritmen skal derfor forsøge at finde mønstre i dataene på egen hånd.

Et eksempel på Unsupervised Learning er clustering, hvor algoritmen forsøger at finde naturlige grupper af data og adskille dem fra hinanden.

Et andet eksempel er dimensionality reduction, hvor algoritmen forsøger at reducere antallet af features i dataene, mens den stadig holder på så meget information som muligt.

En anden type af Unsupervised Learning er anomaly detection, hvor algoritmen forsøger at identificere unormale eller sjældne datapunkter i en større mængde af data. Dette kommer vi nok ikke til at lave opgaver til. Det kunne fx bruges til at stoppe cyberangreb, såsom at analysere på en firewall.

Vi vil også udforske Unsupervised Learning i løbet af dette kursus og se, hvordan det kan bruges til at finde mønstre og strukturer i store datasæt.


Reinforcement Learning

Reinforcement Learning.png

Reinforcement Learning er en type Machine Learning, hvor algoritmen lærer at tage beslutninger baseret på belønningssignaler. Algoritmen forsøger at lære, hvordan man maksimerer den samlede belønning over tid. Reinforcement Learning kan bruges til spil, robotik og autonome systemer.

Reinforcement Learning kan ofte være svært, fordi der er meget som skal defineres og der skal være et system som er godt designet. Det er ofte det sværeste emne at implementere inden for det ML vi gennemgår. Vi tager teori omkring det, men måske når vi ikke at få helt vildt meget hands-on på netop det her emne. Udover hvis I vælger det som projekt!

Det var en kort oversigt over de tre hovedkategorier inden for Machine Learning.

Algoritmer i ML

Der findes mange algoritmer inden for ML, vi har langt fra tid til at gennemgå alle, så vi plukker lidt ud.

Vi tager et emne inden for hver hovedpunkt for Supervised learning og en generel som strækker sig over begge kategorier

Dem som vi går igennem er Naive Bayes som høre inden under klassifikation, Linear Regression som er under regression og er beskrevet i Lineær Regression

Til sidst tager vi et emne som strækker sig udover begge typer af læring, det er Neural Networks.

https://www.mathworks.com/help/stats/machine-learning-in-matlab.html

https://www.mathworks.com/help/stats/machine-learning-in-matlab.html

Hvilket sprog bruger man/vi til ML?

Det mest brugte sprog til ML er klart Python, der er udviklet mange teknologier omkring Python som understøtter databehandling og Machine learning. Det er også Python, som vi kommer til at bruge på vores kursus her. Mange af opgaverne bygger på TensorFlow som er et komplet Machine learning framework. Derudover bruger vi flere Python biblioteker og pakker, såsom NumPy, MatPlotLib, Keras og Pandas.

Vi kommer til at bruge Jupyter Notebooks - ipynb til at skrive vores kode i. Der er flere løsninger, hvis man har tekniske problemer med Python eller nogle pakker, heriblandt ‣

Der bliver brugt rigtig mange nye ord og ret komplekse systemer under kurset her og når man generelt bevæger sig inden for ML - Google har et rigtig godt opslagsværk som kan findes her

Machine Learning Glossary  |  Google for Developers

Opgaver til Machine Learning

Der er umildbart frit valg af IDE til dette kursus. Jeg kommer til at bruge Visual Studie Code. Alternativt kan man bruge colab.research.google.com som kan køre Python i skyen gennem google drev, ellers kan man bruge Codespaces som bruger Visual Studie Code og det kan klart anbefale det! Man har 120 timers computerkræft pr måned, så hvis i holder jer under 12 timer om dagen, burde det kunne hænge sammen! Hvis I har problemer med computerkræft eller adgang, fordi at I bruger en arbejdscomputer slipper vi også for de problemer med codespaces.

Pakker og biblioteker som vi bruger til at løse opgaverne

NumPy er en Python-pakke, der bruges til numerisk beregning i videnskab, teknik og dataanalyse. Den tilbyder en række funktioner til at arbejde med store og komplekse matricer og arrays med høj ydeevne. Numpy gør det nemt at udføre almindelige matematiske operationer og kan bruges til at udføre lineær algebra, Fourier-analyse og andre matematiske funktioner. Numpy er også en populær pakke til at arbejde med dataanalyse og maskinlæring i Python.

Pandas er endnu en Python pakke, den bruger vi noget tid første dag på at arbejde med. Dog er en del af vores data allerede gjort klar, hvilket betyder at vi ikke skal lave så meget databehandling.

MatPlotLib er en Python-pakke, der bruges til at oprette visualiseringer og grafer i forskellige formater. Pakken giver en bred vifte af funktioner og værktøjer til at skabe forskellige typer plots, herunder linjediagrammer, bar plots, scatter plots, histogrammer og meget mere. Matplotlib er en populær pakke til dataanalyse og er ofte brugt i kombination med andre biblioteker som Numpy og Pandas. Pakken er open source og kan bruges til både akademiske og kommercielle formål.

Keras er et open source bibliotek, der skrevet i Python, som gør det nemt at designe, træne og evaluere deep learning modeller. Keras giver en høj-niveau API, der er enkel og hurtig at bruge, og er i stand til at køre på både CPU og GPU, hvilket gør det til et populært valg blandt forskere og praktikere inden for maskinlæring.

Opgave liste

Vi når ikke alle opgaver eller at få hands-on på alle emner. Vi vælger lidt ud i fællesskab og der er mulighed for at arbejde videre efter kurset.

Alle opgaverne kan hentes her: https://github.com/Mercantech/MachineLearning

<aside> 💡 Alt er samlet inde under Jupyter Notebooks - ipynb filerne!

</aside>

Det er kun den første uge vi bruger med mindre opgaver som gerne skal give os noget viden til at lave projekter i uge 2! ML Projekter